diff --git a/kubejs/assets/tfg/models/block/machines/interplanetary_item_receiver.json b/kubejs/assets/tfg/models/block/machines/interplanetary_item_receiver.json index e7da65bda..5b0368022 100644 --- a/kubejs/assets/tfg/models/block/machines/interplanetary_item_receiver.json +++ b/kubejs/assets/tfg/models/block/machines/interplanetary_item_receiver.json @@ -3,14 +3,14 @@ "loader": "gtceu:machine", "machine": "tfg:interplanetary_item_receiver", "texture_overrides": { - "all": "gtceu:block/casings/voltage/mv/side" + "all": "tfg:block/casings/machine_casing_aluminium_plated_steel" }, "variants": { "is_formed=false": { "model": { "parent": "gtceu:block/machine/template/cube_all/sided", "textures": { - "all": "gtceu:block/casings/voltage/mv/side", + "all": "tfg:block/casings/machine_casing_aluminium_plated_steel", "overlay_front": "tfg:block/machines/interplanetary_item_receiver/overlay_front", "overlay_front_emissive": "tfg:block/machines/interplanetary_item_receiver/overlay_front_emissive" } @@ -20,7 +20,7 @@ "model": { "parent": "gtceu:block/machine/template/cube_all/sided", "textures": { - "all": "gtceu:block/casings/voltage/mv/side", + "all": "tfg:block/casings/machine_casing_aluminium_plated_steel", "overlay_front": "tfg:block/machines/interplanetary_item_receiver/overlay_front_active", "overlay_front_emissive": "tfg:block/machines/interplanetary_item_receiver/overlay_front_active_emissive" } diff --git a/kubejs/server_scripts/tfg/recipes.miscellaneous.js b/kubejs/server_scripts/tfg/recipes.miscellaneous.js index 1c103ebde..c43032725 100644 --- a/kubejs/server_scripts/tfg/recipes.miscellaneous.js +++ b/kubejs/server_scripts/tfg/recipes.miscellaneous.js @@ -1157,51 +1157,124 @@ function registerTFGMiscellaneousRecipes(event) { .EUt(GTValues.VA[GTValues.IV]) //endregion - // Universal compost - const COMPOST_COLORS = ['browns', 'greens']; - COMPOST_COLORS.forEach(color => { + //#region Universal compost + + //Greens // Lows via crafting with mortar - event.shapeless(Item.of(`tfg:universal_compost_${color}`, 1), [ - Ingredient.of([`#tfc:compost_${color}_low`]).subtract([`tfg:universal_compost_${color}`]), - '#forge:tools/mortars' - ]) - .id(`tfg:shapeless/universal_compost_${color}_low`) + event.shaped(Item.of('tfg:universal_compost_greens', 1), [ + 'AB' + ], { + A: Ingredient.of(['#tfc:compost_greens_low']).subtract(['tfg:universal_compost_greens']), + B: '#forge:tools/mortars' + }).id('tfg:shaped/universal_compost_greens_from_low') // Mediums via crafting with mortar - event.shapeless(Item.of(`tfg:universal_compost_${color}`, 2), [ - `#tfc:compost_${color}`, - '#forge:tools/mortars' - ]) - .id(`tfg:shapeless/universal_compost_${color}_medium`) + event.shaped(Item.of('tfg:universal_compost_greens', 2), [ + 'AB' + ], { + A: '#tfc:compost_greens', + B: '#forge:tools/mortars' + }).id('tfg:shaped/universal_compost_greens_from_medium') // Highs via crafting with mortar - event.shapeless(Item.of(`tfg:universal_compost_${color}`, 4), [ - `#tfc:compost_${color}_high`, - '#forge:tools/mortars' - ]) - .id(`tfg:shapeless/universal_compost_${color}_high`) + event.shaped(Item.of('tfg:universal_compost_greens', 4), [ + 'AB' + ], { + A: '#tfc:compost_greens_high', + B: '#forge:tools/mortars' + }).id('tfg:shaped/universal_compost_greens_from_high') + + // Filters + const greens_low = Ingredient.of('#tfc:compost_greens_low') + const browns_low = Ingredient.of('#tfc:compost_browns_low').itemIds + const greens_medium = Ingredient.of('#tfc:compost_greens') + const browns_medium = Ingredient.of('#tfc:compost_browns').itemIds + const greens_high = Ingredient.of('#tfc:compost_greens_high') + const browns_high = Ingredient.of('#tfc:compost_browns_high').itemIds + + let low_filtered = greens_low + let medium_filtered = greens_medium + let high_filtered = greens_high + + browns_low.forEach(item => { + low_filtered = low_filtered.subtract(item) + low_filtered = low_filtered.subtract('tfg:universal_compost_greens') + }) + browns_medium.forEach(item => { + medium_filtered = medium_filtered.subtract(item) + }) + browns_high.forEach(item => { + high_filtered = high_filtered.subtract(item) + }) // Lows via forge hammer - event.recipes.gtceu.forge_hammer(`tfg:universal_compost_${color}_low`) - .itemInputs(Ingredient.of(`#tfc:compost_${color}_low`).subtract(`tfg:universal_compost_${color}`)) - .itemOutputs(`tfg:universal_compost_${color}`) + event.recipes.gtceu.forge_hammer('tfg:universal_compost_greens_low') + .itemInputs(low_filtered) + .itemOutputs('tfg:universal_compost_greens') .duration(20) .EUt(8) // Mediums via forge hammer - event.recipes.gtceu.forge_hammer(`tfg:universal_compost_${color}_medium`) - .itemInputs(`#tfc:compost_${color}`) - .itemOutputs(Item.of(`tfg:universal_compost_${color}`, 2)) + event.recipes.gtceu.forge_hammer('tfg:universal_compost_greens_medium') + .itemInputs(medium_filtered) + .itemOutputs(Item.of('tfg:universal_compost_greens', 2)) .duration(20) .EUt(8) // Highs via forge hammer - event.recipes.gtceu.forge_hammer(`tfg:universal_compost_${color}_high`) - .itemInputs(`#tfc:compost_${color}_high`) - .itemOutputs(Item.of(`tfg:universal_compost_${color}`, 4)) + event.recipes.gtceu.forge_hammer('tfg:universal_compost_greens_high') + .itemInputs(high_filtered) + .itemOutputs(Item.of('tfg:universal_compost_greens', 4)) .duration(20) .EUt(8) - }) + + //Browns + // Lows via crafting with mortar + event.shaped(Item.of('tfg:universal_compost_browns', 1), [ + 'BA' + ], { + A: Ingredient.of(['#tfc:compost_browns_low']).subtract(['tfg:universal_compost_browns']), + B: '#forge:tools/mortars' + }).id('tfg:shaped/universal_compost_browns_from_low') + + // Mediums via crafting with mortar + event.shaped(Item.of('tfg:universal_compost_browns', 2), [ + 'BA' + ], { + A: '#tfc:compost_browns', + B: '#forge:tools/mortars' + }).id('tfg:shaped/universal_compost_browns_from_medium') + + // Highs via crafting with mortar + event.shaped(Item.of('tfg:universal_compost_browns', 4), [ + 'BA' + ], { + A: '#tfc:compost_browns_high', + B: '#forge:tools/mortars' + }).id('tfg:shaped/universal_compost_browns_from_high') + + // Lows via forge hammer + event.recipes.gtceu.forge_hammer('tfg:universal_compost_browns_low') + .itemInputs('#tfc:compost_browns_low') + .itemOutputs('tfg:universal_compost_browns') + .duration(20) + .EUt(8) + + // Mediums via forge hammer + event.recipes.gtceu.forge_hammer('tfg:universal_compost_browns_medium') + .itemInputs('#tfc:compost_browns') + .itemOutputs(Item.of('tfg:universal_compost_browns', 2)) + .duration(20) + .EUt(8) + + // Highs via forge hammer + event.recipes.gtceu.forge_hammer('tfg:universal_compost_browns_high') + .itemInputs('#tfc:compost_browns_high') + .itemOutputs(Item.of('tfg:universal_compost_browns', 4)) + .duration(20) + .EUt(8) + + //#endregion // Etching Tip event.recipes.tfc.damage_inputs_shapeless_crafting(event.recipes.minecraft.crafting_shapeless('tfg:etching_diamond_tip',[ diff --git a/kubejs/startup_scripts/gtceu/machines.js b/kubejs/startup_scripts/gtceu/machines.js index c0a364dbb..64e6de68c 100644 --- a/kubejs/startup_scripts/gtceu/machines.js +++ b/kubejs/startup_scripts/gtceu/machines.js @@ -210,6 +210,8 @@ const registerGTCEuMachines = (event) => { "tfg:block/steam_bloomery") //#endregion + //#region Large Solar Panels + //Tier 1 event.create('large_solar_panel', 'multiblock') .rotationState(RotationState.NON_Y_AXIS) .generator(true) @@ -238,7 +240,7 @@ const registerGTCEuMachines = (event) => { .aisle(" B B ", " B B ", " CCCCC ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ") .where("H", Predicates.controller(Predicates.blocks(definition.get()))) .where("B", Predicates.blocks(ChemicalHelper.getBlock(TagPrefix.frameGt, GTMaterials.StainlessSteel))) - .where("C", Predicates.blocks("tfg:casings/machine_casing_red_solar_panel")) + .where("C", Predicates.blocks("tfg:casings/machine_casing_blue_solar_panel")) .where("E", Predicates.blocks("ad_astra:iron_plateblock")) .where("F", Predicates.blocks("tfg:casings/machine_casing_iron_desh") .or(Predicates.autoAbilities(definition.getRecipeTypes())) @@ -272,7 +274,7 @@ const registerGTCEuMachines = (event) => { .aisle(" B B ", " B B ", " CCCCC ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ") .where("H", controller, Direction.SOUTH) .where("B", Block.getBlock("gtceu:stainless_steel_frame")) - .where("C", Block.getBlock("tfg:casings/machine_casing_red_solar_panel")) + .where("C", Block.getBlock("tfg:casings/machine_casing_blue_solar_panel")) .where("E", Block.getBlock("ad_astra:iron_plateblock")) .where("A", GTMachines.ITEM_IMPORT_BUS[GTValues.ULV], Direction.WEST) .where("D", GTMachines.MAINTENANCE_HATCH, Direction.SOUTH) @@ -286,6 +288,265 @@ const registerGTCEuMachines = (event) => { ) .workableCasingModel('tfg:block/casings/machine_casing_iron_desh', 'gtceu:block/multiblock/hpca') + //Tier 2 + event.create('large_solar_panel_tier2', 'multiblock') + .rotationState(RotationState.NON_Y_AXIS) + .generator(true) + .recipeType('large_solar_panel_tier2') + .noRecipeModifier() + .appearanceBlock(() => Block.getBlock('tfg:casings/machine_casing_iron_desh')) + .pattern(definition => FactoryBlockPattern.start() + .aisle(" A A ", " A A ", " B B ", " B B ", " CCCCCCC ", " ", " ", " ", " ", " ", " ", " ", " ", " A") + .aisle(" A A ", " A A ", " B B ", " B B ", " CCC CCC ", " ", " ", " ", " ", " ", " ", " ", " ", " ") + .aisle(" B B ", " B B ", " B B ", " CCCCCCC ", " CC CC ", " ", " ", " ", " ", " ", " ", " ", " ", " ") + .aisle(" A B B A ", " A B B A ", " B B B B ", " B CC CC B ", " C C ", " ", " ", " ", " ", " ", " ", " ", " ", " ") + .aisle(" B B ", " B B ", " CCCCC ", " C C ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ") + .aisle(" A B B A ", " A B B A ", " B CC CC B ", " B CC CC B ", " CC CC ", " ", " ", " ", " ", " ", " ", " ", " ", " ") + .aisle(" B B ", " CCCCC ", " CC CC ", " CC CC ", " CC CC ", " ", " ", " ", " ", " ", " ", " ", " ", " ") + .aisle(" B B ", " CC CC ", " C C ", " C C ", " C C ", " ", " ", " ", " ", " ", " ", " ", " ", " ") + .aisle(" A B CCC B A ", " A B CC CC B A ", " B B CC CC B B ", " B C C B ", " C C ", " ", " ", " ", " ", " ", " ", " ", " ", " ") + .aisle(" B B CC CC B B ", " B C C B ", " C C ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ") + .aisle("A B C C B A", "A B B A", "B B B B", "B C C B", "C C", " ", " ", " ", " ", " ", " ", " ", " ", " ") + .aisle(" B B B B ", " B C C B ", " C C ", " C C ", "C C", " ", " ", " ", " ", " ", " ", " ", " ", " ") + .aisle(" C III C ", " C B B C ", " C B B C ", " C B B C ", "C B B C", " B B ", " B B ", " B B ", " B B ", " B B ", " DDD ", " EEE ", " EEE ", " EEE ") + .aisle(" C IFI C ", " C F C ", " C F C ", " C F C ", "C F C", " F ", " F ", " F ", " F ", " F ", " DFD ", " EFE ", " EGE ", " EEE ") + .aisle(" C IHI C ", " C B B C ", " C B B C ", " C B B C ", "C B B C", " B B ", " B B ", " B B ", " B B ", " B B ", " DDD ", " EEE ", " EEE ", " EEE ") + .aisle(" B B B B ", " B C C B ", " C C ", " C C ", "C C", " ", " ", " ", " ", " ", " ", " ", " ", " ") + .aisle("A B C C B A", "A B B A", "B B B B", "B C C B", "C C", " ", " ", " ", " ", " ", " ", " ", " ", " ") + .aisle(" B B CC CC B B ", " B C C B ", " C C ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ") + .aisle(" A B CCC B A ", " A B CC CC B A ", " B B CC CC B B ", " B C C B ", " C C ", " ", " ", " ", " ", " ", " ", " ", " ", " ") + .aisle(" B B ", " CC CC ", " C C ", " C C ", " C C ", " ", " ", " ", " ", " ", " ", " ", " ", " ") + .aisle(" B B ", " CCCCC ", " CC CC ", " CC CC ", " CC CC ", " ", " ", " ", " ", " ", " ", " ", " ", " ") + .aisle(" A B B A ", " A B B A ", " B CC CC B ", " B CC CC B ", " CC CC ", " ", " ", " ", " ", " ", " ", " ", " ", " ") + .aisle(" B B ", " B B ", " CCCCC ", " C C ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ") + .aisle(" A B B A ", " A B B A ", " B B B B ", " B CC CC B ", " C C ", " ", " ", " ", " ", " ", " ", " ", " ", " ") + .aisle(" B B ", " B B ", " B B ", " CCCCCCC ", " CC CC ", " ", " ", " ", " ", " ", " ", " ", " ", " ") + .aisle(" A A ", " A A ", " B B ", " B B ", " CCC CCC ", " ", " ", " ", " ", " ", " ", " ", " ", " ") + .aisle("A A A ", " A A ", " B B ", " B B ", " CCCCCCC ", " ", " ", " ", " ", " ", " ", " ", " ", " ") + .where("A", Predicates.blocks('gtceu:light_concrete') + .or(Predicates.blocks('gtceu:polished_light_concrete')) + .or(Predicates.blocks('gtceu:light_concrete_bricks')) + .or(Predicates.blocks('gtceu:cracked_light_concrete_bricks')) + .or(Predicates.blocks('gtceu:mossy_light_concrete_bricks')) + .or(Predicates.blocks('gtceu:chiseled_light_concrete')) + .or(Predicates.blocks('gtceu:light_concrete_tile')) + .or(Predicates.blocks('gtceu:light_concrete_small_tile')) + .or(Predicates.blocks('gtceu:light_concrete_windmill_a')) + .or(Predicates.blocks('gtceu:light_concrete_windmill_b')) + .or(Predicates.blocks('gtceu:small_light_concrete_bricks')) + .or(Predicates.blocks('gtceu:square_light_concrete_bricks')) + .or(Predicates.blocks('gtceu:dark_concrete')) + .or(Predicates.blocks('gtceu:polished_dark_concrete')) + .or(Predicates.blocks('gtceu:dark_concrete_bricks')) + .or(Predicates.blocks('gtceu:cracked_dark_concrete_bricks')) + .or(Predicates.blocks('gtceu:mossy_dark_concrete_bricks')) + .or(Predicates.blocks('gtceu:chiseled_dark_concrete')) + .or(Predicates.blocks('gtceu:dark_concrete_tile')) + .or(Predicates.blocks('gtceu:dark_concrete_small_tile')) + .or(Predicates.blocks('gtceu:dark_concrete_windmill_a')) + .or(Predicates.blocks('gtceu:dark_concrete_windmill_b')) + .or(Predicates.blocks('gtceu:small_dark_concrete_bricks')) + .or(Predicates.blocks('gtceu:square_dark_concrete_bricks')) + ) + .where("B", Predicates.blocks(ChemicalHelper.getBlock(TagPrefix.frameGt, GTMaterials.TungstenSteel))) + .where("C", Predicates.blocks("tfg:casings/machine_casing_green_solar_panel")) + .where("D", Predicates.blocks("ad_astra:iron_plateblock")) + .where("E", Predicates.blocks(GTBlocks.CASING_TEMPERED_GLASS.get())) + .where("F", Predicates.blocks("tfg:casings/machine_casing_iron_desh")) + .where("G", Predicates.blocks(ChemicalHelper.getBlock(TagPrefix.block, GTMaterials.Silver))) + .where("H", Predicates.controller(Predicates.blocks(definition.get()))) + .where("I", Predicates.blocks("tfg:casings/machine_casing_iron_desh") + .or(Predicates.autoAbilities(definition.getRecipeTypes())) + .or(Predicates.abilities(PartAbility.MAINTENANCE).setExactLimit(1)) + ) + .where(" ", Predicates.any()) + .build() + ) + .shapeInfo(controller => MultiblockShapeInfo.builder() + .aisle(" A A ", " A A ", " B B ", " B B ", " CCCCCCC ", " ", " ", " ", " ", " ", " ", " ", " ", " ") + .aisle(" A A ", " A A ", " B B ", " B B ", " CCC CCC ", " ", " ", " ", " ", " ", " ", " ", " ", " ") + .aisle(" B B ", " B B ", " B B ", " CCCCCCC ", " CC CC ", " ", " ", " ", " ", " ", " ", " ", " ", " ") + .aisle(" A B B A ", " A B B A ", " B B B B ", " B CC CC B ", " C C ", " ", " ", " ", " ", " ", " ", " ", " ", " ") + .aisle(" B B ", " B B ", " CCCCC ", " C C ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ") + .aisle(" A B B A ", " A B B A ", " B CC CC B ", " B CC CC B ", " CC CC ", " ", " ", " ", " ", " ", " ", " ", " ", " ") + .aisle(" B B ", " CCCCC ", " CC CC ", " CC CC ", " CC CC ", " ", " ", " ", " ", " ", " ", " ", " ", " ") + .aisle(" B B ", " CC CC ", " C C ", " C C ", " C C ", " ", " ", " ", " ", " ", " ", " ", " ", " ") + .aisle(" A B CCC B A ", " A B CC CC B A ", " B B CC CC B B ", " B C C B ", " C C ", " ", " ", " ", " ", " ", " ", " ", " ", " ") + .aisle(" B B CC CC B B ", " B C C B ", " C C ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ") + .aisle("A B C C B A", "A B B A", "B B B B", "B C C B", "C C", " ", " ", " ", " ", " ", " ", " ", " ", " ") + .aisle(" B B B B ", " B C C B ", " C C ", " C C ", "C C", " ", " ", " ", " ", " ", " ", " ", " ", " ") + .aisle(" C FML C ", " C B B C ", " C B B C ", " C B B C ", "C B B C", " B B ", " B B ", " B B ", " B B ", " B B ", " DDD ", " EEE ", " EEE ", " EEE ") + .aisle(" C IFK C ", " C F C ", " C F C ", " C F C ", "C F C", " F ", " F ", " F ", " F ", " F ", " DFD ", " EFE ", " EGE ", " EEE ") + .aisle(" C JHF C ", " C B B C ", " C B B C ", " C B B C ", "C B B C", " B B ", " B B ", " B B ", " B B ", " B B ", " DDD ", " EEE ", " EEE ", " EEE ") + .aisle(" B B B B ", " B C C B ", " C C ", " C C ", "C C", " ", " ", " ", " ", " ", " ", " ", " ", " ") + .aisle("A B C C B A", "A B B A", "B B B B", "B C C B", "C C", " ", " ", " ", " ", " ", " ", " ", " ", " ") + .aisle(" B B CC CC B B ", " B C C B ", " C C ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ") + .aisle(" A B CCC B A ", " A B CC CC B A ", " B B CC CC B B ", " B C C B ", " C C ", " ", " ", " ", " ", " ", " ", " ", " ", " ") + .aisle(" B B ", " CC CC ", " C C ", " C C ", " C C ", " ", " ", " ", " ", " ", " ", " ", " ", " ") + .aisle(" B B ", " CCCCC ", " CC CC ", " CC CC ", " CC CC ", " ", " ", " ", " ", " ", " ", " ", " ", " ") + .aisle(" A B B A ", " A B B A ", " B CC CC B ", " B CC CC B ", " CC CC ", " ", " ", " ", " ", " ", " ", " ", " ", " ") + .aisle(" B B ", " B B ", " CCCCC ", " C C ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ") + .aisle(" A B B A ", " A B B A ", " B B B B ", " B CC CC B ", " C C ", " ", " ", " ", " ", " ", " ", " ", " ", " ") + .aisle(" B B ", " B B ", " B B ", " CCCCCCC ", " CC CC ", " ", " ", " ", " ", " ", " ", " ", " ", " ") + .aisle(" A A ", " A A ", " B B ", " B B ", " CCC CCC ", " ", " ", " ", " ", " ", " ", " ", " ", " ") + .aisle(" A A ", " A A ", " B B ", " B B ", " CCCCCCC ", " ", " ", " ", " ", " ", " ", " ", " ", " ") + .where("A", Block.getBlock('gtceu:light_concrete')) + .where("B", Block.getBlock("gtceu:tungsten_steel_frame")) + .where("C", Block.getBlock("tfg:casings/machine_casing_green_solar_panel")) + .where("D", Block.getBlock("ad_astra:iron_plateblock")) + .where("E", Block.getBlock("gtceu:tempered_glass")) + .where("F", Block.getBlock("tfg:casings/machine_casing_iron_desh")) + .where("G", Block.getBlock("gtceu:silver_block")) + .where("H", controller, Direction.SOUTH) + .where("I", GTMachines.ITEM_IMPORT_BUS[GTValues.ULV], Direction.WEST) + .where("J", GTMachines.MAINTENANCE_HATCH, Direction.SOUTH) + .where("K", GTMachines.FLUID_IMPORT_HATCH[GTValues.MV], Direction.EAST) + .where("L", GTMachines.FLUID_EXPORT_HATCH[GTValues.MV], Direction.EAST) + .where("M", GTMachines.ENERGY_OUTPUT_HATCH[GTValues.HV], Direction.NORTH) + .where(" ", Predicates.any()) + .build() + ) + .workableCasingModel('tfg:block/casings/machine_casing_iron_desh', 'gtceu:block/multiblock/hpca') + + //Tier 3 + event.create('large_solar_panel_tier3', 'multiblock') + .rotationState(RotationState.NON_Y_AXIS) + .generator(true) + .recipeType('large_solar_panel_tier3') + .noRecipeModifier() + .appearanceBlock(() => Block.getBlock('tfg:casings/machine_casing_iron_desh')) + .pattern(definition => FactoryBlockPattern.start() + .aisle(" A A ", " A A ", " A A ", " B B ", " B B ", " B B ", " CCCCCCCCC ", " ", " ", " ", " ", " ", " ", " ") + .aisle(" A A ", " A A ", " A A ", " B B ", " B B ", " B B ", " CC CC ", " ", " ", " ", " ", " ", " ", " ") + .aisle(" A A ", " A A ", " B B ", " B B ", " B B ", " CCCCCCC ", " CCC CCC ", " ", " ", " ", " ", " ", " ", " ") + .aisle(" A A A A ", " A A A A ", " A B B A ", " B B B B ", " B B B B ", " B CCC CCC B ", " C C ", " ", " ", " ", " ", " ", " ", " ") + .aisle(" A A B B A A ", " A A B B A A ", " A B B B B A ", " B B B B B B ", " B B CCCCCCC B B ", " B CCC CCC B ", " CC CC ", " ", " ", " ", " ", " ", " ", " ") + .aisle(" A B B A ", " A B B A ", " B B B B ", " B B B B ", " B CCC CCC B ", " C C ", " CC CC ", " ", " ", " ", " ", " ", " ", " ") + .aisle(" A B B A ", " A B B A ", " A B B A ", " B CCCCCCC B ", " B CC CC B ", " B CC CC B ", " C C ", " ", " ", " ", " ", " ", " ", " ") + .aisle(" A B B B B A ", " A B B B B A ", " B B B B B B ", " B B CC CC B B ", " B C C B ", " CC CC ", " ", " ", " ", " ", " ", " ", " ", " ") + .aisle(" AA B B AA ", " AA B B AA ", " AB CCCCC BA ", " BB C C BB ", " BB BB ", " BC CB ", " CC CC ", " ", " ", " ", " ", " ", " ", " ") + .aisle(" B B B B ", " B B B B ", " B CC CC B ", " B CC CC B ", " CC CC ", " C C ", " C C ", " ", " ", " ", " ", " ", " ", " ") + .aisle(" B B ", " CCCCC ", " CC CC ", " CC CC ", " CC CC ", " CC CC ", " CC CC ", " ", " ", " ", " ", " ", " ", " ") + .aisle(" A B B A ", " A CC CC A ", " A C C A ", " B C C B ", " B C C B ", " B C C B ", " C C ", " ", " ", " ", " ", " ", " ", " ") + .aisle(" A B B CCC B B A ", " A B B CC CC B B A ", " B B B CC CC B B B ", " B B C C B B ", " B C C B ", " C C ", " ", " ", " ", " ", " ", " ", " ", " ") + .aisle("A B B CC CC B B A", "A B C C B A", "A C C A", "B B", "B B", "B B", "C C", " ", " ", " ", " ", " ", " ", " ") + .aisle(" A B B C C B B A ", " A B B B B A ", " B B B B B B ", " B B C C B B ", " B C C B ", " C C ", "C C", " ", " ", " ", " ", " ", " ", " ") + .aisle(" B B B B ", " B C C B ", " C C ", " C C ", " C C ", " C C ", "C C", " ", " ", " ", " ", " ", " ", " ") + .aisle(" C III C ", " C B B C ", " C B B C ", " C B B C ", " C B B C ", " C B B C ", "C B B C", " B B ", " B B ", " B B ", " DDD ", " EEE ", " EEE ", " EEE ") + .aisle(" C IFI C ", " C F C ", " C F C ", " C F C ", " C F C ", " C F C ", "C F C", " F ", " F ", " F ", " DFD ", " EFE ", " EGE ", " EEE ") + .aisle(" C IHI C ", " C B B C ", " C B B C ", " C B B C ", " C B B C ", " C B B C ", "C B B C", " B B ", " B B ", " B B ", " DDD ", " EEE ", " EEE ", " EEE ") + .aisle(" B B B B ", " B C C B ", " C C ", " C C ", " C C ", " C C ", "C C", " ", " ", " ", " ", " ", " ", " ") + .aisle(" A B B C C B B A ", " A B B B B A ", " B B B B B B ", " B B C C B B ", " B C C B ", " C C ", "C C", " ", " ", " ", " ", " ", " ", " ") + .aisle("A B B CC CC B B A", "A B C C B A", "A C C A", "B B", "B B", "B B", "C C", " ", " ", " ", " ", " ", " ", " ") + .aisle(" A B B CCC B B A ", " A B B CC CC B B A ", " B B B CC CC B B B ", " B B C C B B ", " B C C B ", " C C ", " ", " ", " ", " ", " ", " ", " ", " ") + .aisle(" A B B A ", " A CC CC A ", " A C C A ", " B C C B ", " B C C B ", " B C C B ", " C C ", " ", " ", " ", " ", " ", " ", " ") + .aisle(" B B ", " CCCCC ", " CC CC ", " CC CC ", " CC CC ", " CC CC ", " CC CC ", " ", " ", " ", " ", " ", " ", " ") + .aisle(" B B B B ", " B B B B ", " B CC CC B ", " B CC CC B ", " CC CC ", " C C ", " C C ", " ", " ", " ", " ", " ", " ", " ") + .aisle(" AA B B AA ", " AA B B AA ", " AB CCCCC BA ", " BB C C BB ", " BB BB ", " BC CB ", " CC CC ", " ", " ", " ", " ", " ", " ", " ") + .aisle(" A B B B B A ", " A B B B B A ", " B B B B B B ", " B B CC CC B B ", " B C C B ", " CC CC ", " ", " ", " ", " ", " ", " ", " ", " ") + .aisle(" A B B A ", " A B B A ", " A B B A ", " B CCCCCCC B ", " B CC CC B ", " B CC CC B ", " C C ", " ", " ", " ", " ", " ", " ", " ") + .aisle(" A B B A ", " A B B A ", " B B B B ", " B B B B ", " B CCC CCC B ", " C C ", " CC CC ", " ", " ", " ", " ", " ", " ", " ") + .aisle(" A A B B A A ", " A A B B A A ", " A B B B B A ", " B B B B B B ", " B B CCCCCCC B B ", " B CCC CCC B ", " CC CC ", " ", " ", " ", " ", " ", " ", " ") + .aisle(" A A A A ", " A A A A ", " A B B A ", " B B B B ", " B B B B ", " B CCC CCC B ", " C C ", " ", " ", " ", " ", " ", " ", " ") + .aisle(" A A ", " A A ", " B B ", " B B ", " B B ", " CCCCCCC ", " CCC CCC ", " ", " ", " ", " ", " ", " ", " ") + .aisle(" A A ", " A A ", " A A ", " B B ", " B B ", " B B ", " CC CC ", " ", " ", " ", " ", " ", " ", " ") + .aisle(" A A ", " A A ", " A A ", " B B ", " B B ", " B B ", " CCCCCCCCC ", " ", " ", " ", " ", " ", " ", " ") + .where("A", Predicates.blocks('gtceu:light_concrete') + .or(Predicates.blocks('gtceu:polished_light_concrete')) + .or(Predicates.blocks('gtceu:light_concrete_bricks')) + .or(Predicates.blocks('gtceu:cracked_light_concrete_bricks')) + .or(Predicates.blocks('gtceu:mossy_light_concrete_bricks')) + .or(Predicates.blocks('gtceu:chiseled_light_concrete')) + .or(Predicates.blocks('gtceu:light_concrete_tile')) + .or(Predicates.blocks('gtceu:light_concrete_small_tile')) + .or(Predicates.blocks('gtceu:light_concrete_windmill_a')) + .or(Predicates.blocks('gtceu:light_concrete_windmill_b')) + .or(Predicates.blocks('gtceu:small_light_concrete_bricks')) + .or(Predicates.blocks('gtceu:square_light_concrete_bricks')) + .or(Predicates.blocks('gtceu:dark_concrete')) + .or(Predicates.blocks('gtceu:polished_dark_concrete')) + .or(Predicates.blocks('gtceu:dark_concrete_bricks')) + .or(Predicates.blocks('gtceu:cracked_dark_concrete_bricks')) + .or(Predicates.blocks('gtceu:mossy_dark_concrete_bricks')) + .or(Predicates.blocks('gtceu:chiseled_dark_concrete')) + .or(Predicates.blocks('gtceu:dark_concrete_tile')) + .or(Predicates.blocks('gtceu:dark_concrete_small_tile')) + .or(Predicates.blocks('gtceu:dark_concrete_windmill_a')) + .or(Predicates.blocks('gtceu:dark_concrete_windmill_b')) + .or(Predicates.blocks('gtceu:small_dark_concrete_bricks')) + .or(Predicates.blocks('gtceu:square_dark_concrete_bricks')) + ) + .where("B", Predicates.blocks(ChemicalHelper.getBlock(TagPrefix.frameGt, GTMaterials.RhodiumPlatedPalladium))) + .where("C", Predicates.blocks("tfg:casings/machine_casing_red_solar_panel")) + .where("D", Predicates.blocks("ad_astra:iron_plateblock")) + .where("E", Predicates.blocks(GTBlocks.CASING_TEMPERED_GLASS.get())) + .where("F", Predicates.blocks("tfg:casings/machine_casing_iron_desh")) + .where("G", Predicates.blocks(ChemicalHelper.getBlock(TagPrefix.block, GTMaterials.Silver))) + .where("H", Predicates.controller(Predicates.blocks(definition.get()))) + .where("I", Predicates.blocks("tfg:casings/machine_casing_iron_desh") + .or(Predicates.autoAbilities(definition.getRecipeTypes())) + .or(Predicates.abilities(PartAbility.MAINTENANCE).setExactLimit(1)) + ) + .where(" ", Predicates.any()) + .build() + ) + .shapeInfo(controller => MultiblockShapeInfo.builder() + .aisle(" A A ", " A A ", " A A ", " B B ", " B B ", " B B ", " CCCCCCCCC ", " ", " ", " ", " ", " ", " ", " ") + .aisle(" A A ", " A A ", " A A ", " B B ", " B B ", " B B ", " CC CC ", " ", " ", " ", " ", " ", " ", " ") + .aisle(" A A ", " A A ", " B B ", " B B ", " B B ", " CCCCCCC ", " CCC CCC ", " ", " ", " ", " ", " ", " ", " ") + .aisle(" A A A A ", " A A A A ", " A B B A ", " B B B B ", " B B B B ", " B CCC CCC B ", " C C ", " ", " ", " ", " ", " ", " ", " ") + .aisle(" A A B B A A ", " A A B B A A ", " A B B B B A ", " B B B B B B ", " B B CCCCCCC B B ", " B CCC CCC B ", " CC CC ", " ", " ", " ", " ", " ", " ", " ") + .aisle(" A B B A ", " A B B A ", " B B B B ", " B B B B ", " B CCC CCC B ", " C C ", " CC CC ", " ", " ", " ", " ", " ", " ", " ") + .aisle(" A B B A ", " A B B A ", " A B B A ", " B CCCCCCC B ", " B CC CC B ", " B CC CC B ", " C C ", " ", " ", " ", " ", " ", " ", " ") + .aisle(" A B B B B A ", " A B B B B A ", " B B B B B B ", " B B CC CC B B ", " B C C B ", " CC CC ", " ", " ", " ", " ", " ", " ", " ", " ") + .aisle(" AA B B AA ", " AA B B AA ", " AB CCCCC BA ", " BB C C BB ", " BB BB ", " BC CB ", " CC CC ", " ", " ", " ", " ", " ", " ", " ") + .aisle(" B B B B ", " B B B B ", " B CC CC B ", " B CC CC B ", " CC CC ", " C C ", " C C ", " ", " ", " ", " ", " ", " ", " ") + .aisle(" B B ", " CCCCC ", " CC CC ", " CC CC ", " CC CC ", " CC CC ", " CC CC ", " ", " ", " ", " ", " ", " ", " ") + .aisle(" A B B A ", " A CC CC A ", " A C C A ", " B C C B ", " B C C B ", " B C C B ", " C C ", " ", " ", " ", " ", " ", " ", " ") + .aisle(" A B B CCC B B A ", " A B B CC CC B B A ", " B B B CC CC B B B ", " B B C C B B ", " B C C B ", " C C ", " ", " ", " ", " ", " ", " ", " ", " ") + .aisle("A B B CC CC B B A", "A B C C B A", "A C C A", "B B", "B B", "B B", "C C", " ", " ", " ", " ", " ", " ", " ") + .aisle(" A B B C C B B A ", " A B B B B A ", " B B B B B B ", " B B C C B B ", " B C C B ", " C C ", "C C", " ", " ", " ", " ", " ", " ", " ") + .aisle(" B B B B ", " B C C B ", " C C ", " C C ", " C C ", " C C ", "C C", " ", " ", " ", " ", " ", " ", " ") + .aisle(" C FML C ", " C B B C ", " C B B C ", " C B B C ", " C B B C ", " C B B C ", "C B B C", " B B ", " B B ", " B B ", " DDD ", " EEE ", " EEE ", " EEE ") + .aisle(" C IFK C ", " C F C ", " C F C ", " C F C ", " C F C ", " C F C ", "C F C", " F ", " F ", " F ", " DFD ", " EFE ", " EGE ", " EEE ") + .aisle(" C JHF C ", " C B B C ", " C B B C ", " C B B C ", " C B B C ", " C B B C ", "C B B C", " B B ", " B B ", " B B ", " DDD ", " EEE ", " EEE ", " EEE ") + .aisle(" B B B B ", " B C C B ", " C C ", " C C ", " C C ", " C C ", "C C", " ", " ", " ", " ", " ", " ", " ") + .aisle(" A B B C C B B A ", " A B B B B A ", " B B B B B B ", " B B C C B B ", " B C C B ", " C C ", "C C", " ", " ", " ", " ", " ", " ", " ") + .aisle("A B B CC CC B B A", "A B C C B A", "A C C A", "B B", "B B", "B B", "C C", " ", " ", " ", " ", " ", " ", " ") + .aisle(" A B B CCC B B A ", " A B B CC CC B B A ", " B B B CC CC B B B ", " B B C C B B ", " B C C B ", " C C ", " ", " ", " ", " ", " ", " ", " ", " ") + .aisle(" A B B A ", " A CC CC A ", " A C C A ", " B C C B ", " B C C B ", " B C C B ", " C C ", " ", " ", " ", " ", " ", " ", " ") + .aisle(" B B ", " CCCCC ", " CC CC ", " CC CC ", " CC CC ", " CC CC ", " CC CC ", " ", " ", " ", " ", " ", " ", " ") + .aisle(" B B B B ", " B B B B ", " B CC CC B ", " B CC CC B ", " CC CC ", " C C ", " C C ", " ", " ", " ", " ", " ", " ", " ") + .aisle(" AA B B AA ", " AA B B AA ", " AB CCCCC BA ", " BB C C BB ", " BB BB ", " BC CB ", " CC CC ", " ", " ", " ", " ", " ", " ", " ") + .aisle(" A B B B B A ", " A B B B B A ", " B B B B B B ", " B B CC CC B B ", " B C C B ", " CC CC ", " ", " ", " ", " ", " ", " ", " ", " ") + .aisle(" A B B A ", " A B B A ", " A B B A ", " B CCCCCCC B ", " B CC CC B ", " B CC CC B ", " C C ", " ", " ", " ", " ", " ", " ", " ") + .aisle(" A B B A ", " A B B A ", " B B B B ", " B B B B ", " B CCC CCC B ", " C C ", " CC CC ", " ", " ", " ", " ", " ", " ", " ") + .aisle(" A A B B A A ", " A A B B A A ", " A B B B B A ", " B B B B B B ", " B B CCCCCCC B B ", " B CCC CCC B ", " CC CC ", " ", " ", " ", " ", " ", " ", " ") + .aisle(" A A A A ", " A A A A ", " A B B A ", " B B B B ", " B B B B ", " B CCC CCC B ", " C C ", " ", " ", " ", " ", " ", " ", " ") + .aisle(" A A ", " A A ", " B B ", " B B ", " B B ", " CCCCCCC ", " CCC CCC ", " ", " ", " ", " ", " ", " ", " ") + .aisle(" A A ", " A A ", " A A ", " B B ", " B B ", " B B ", " CC CC ", " ", " ", " ", " ", " ", " ", " ") + .aisle(" A A ", " A A ", " A A ", " B B ", " B B ", " B B ", " CCCCCCCCC ", " ", " ", " ", " ", " ", " ", " ") + .where("A", Block.getBlock('gtceu:light_concrete')) + .where("B", Block.getBlock("gtceu:tungsten_steel_frame")) + .where("C", Block.getBlock("tfg:casings/machine_casing_red_solar_panel")) + .where("D", Block.getBlock("ad_astra:iron_plateblock")) + .where("E", Block.getBlock("gtceu:tempered_glass")) + .where("F", Block.getBlock("tfg:casings/machine_casing_iron_desh")) + .where("G", Block.getBlock("gtceu:silver_block")) + .where("H", controller, Direction.SOUTH) + .where("I", GTMachines.ITEM_IMPORT_BUS[GTValues.ULV], Direction.WEST) + .where("J", GTMachines.MAINTENANCE_HATCH, Direction.SOUTH) + .where("K", GTMachines.FLUID_IMPORT_HATCH[GTValues.MV], Direction.EAST) + .where("L", GTMachines.FLUID_EXPORT_HATCH[GTValues.MV], Direction.EAST) + .where("M", GTMachines.ENERGY_OUTPUT_HATCH[GTValues.HV], Direction.NORTH) + .where(" ", Predicates.any()) + .build() + ) + .workableCasingModel('tfg:block/casings/machine_casing_iron_desh', 'gtceu:block/multiblock/hpca') + + + //#endregion + //#region Nuclear Multiblocks // Nuclear Fuel Factory diff --git a/kubejs/startup_scripts/gtceu/recipe_types.js b/kubejs/startup_scripts/gtceu/recipe_types.js index bfb360612..00d927406 100644 --- a/kubejs/startup_scripts/gtceu/recipe_types.js +++ b/kubejs/startup_scripts/gtceu/recipe_types.js @@ -31,6 +31,22 @@ const registerGTCEuRecipeTypes = (event) => { .setProgressBar(GuiTextures.PROGRESS_BAR_ARROW, FillDirection.LEFT_TO_RIGHT) .setSound(GTSoundEntries.COOLING) + event.create('large_solar_panel_tier2') + .category('generator') + .setEUIO('out') + .setMaxIOSize(2, 0, 2, 1) + .setSlotOverlay(false, false, GuiTextures.SOLIDIFIER_OVERLAY) + .setProgressBar(GuiTextures.PROGRESS_BAR_ARROW, FillDirection.LEFT_TO_RIGHT) + .setSound(GTSoundEntries.COOLING) + + event.create('large_solar_panel_tier3') + .category('generator') + .setEUIO('out') + .setMaxIOSize(2, 0, 2, 1) + .setSlotOverlay(false, false, GuiTextures.SOLIDIFIER_OVERLAY) + .setProgressBar(GuiTextures.PROGRESS_BAR_ARROW, FillDirection.LEFT_TO_RIGHT) + .setSound(GTSoundEntries.COOLING) + event.create('nuclear_fuel_factory') .category('nuclear_fuel_factory') .setEUIO('in')