neuralgia/kubejs/startup_scripts/gtceu/machines.js
Pyritie 3a590aca60
Feature/steam multis (#2574)
* init

* langs?

* more steam multis
2025-12-31 23:59:28 +00:00

444 lines
No EOL
55 KiB
JavaScript

// priority: 0
const registerGTCEuMachines = (event) => {
const CoilWorkableElectricMultiblockMachine = Java.loadClass("com.gregtechceu.gtceu.api.machine.multiblock.CoilWorkableElectricMultiblockMachine")
//#region Large Solar Panels
//Tier 1
event.create('large_solar_panel', 'multiblock')
.regressWhenWaiting(false)
.rotationState(RotationState.NON_Y_AXIS)
.generator(true)
.recipeType('large_solar_panel')
.noRecipeModifier()
.appearanceBlock(() => Block.getBlock('tfg:casings/machine_casing_iron_desh'))
.pattern(definition => FactoryBlockPattern.start()
.aisle(" S S ", " S S ", " CCCCC ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ")
.aisle(" S S ", " S S ", " CC CC ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ")
.aisle(" S S ", " CCCCC ", " CC CC ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ")
.aisle(" S S ", " CC CC ", " C C ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ")
.aisle(" CCC ", " CC CC ", " CC CC ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ")
.aisle(" S S CC CC S S ", " S C C S ", " C C ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ")
.aisle(" C C ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ")
.aisle("S S S S", "S C C S", "C C", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ")
.aisle(" C FFF C ", " C B B C ", "C B B C", " B B ", " B B ", " B B ", " B B ", " B B ", " B B ", " B B ", " EEE ", " GGG ", " GGG ", " GGG ")
.aisle(" C FIF C ", " C I C ", "C I C", " I ", " I ", " I ", " I ", " I ", " I ", " I ", " EIE ", " GIG ", " GKG ", " GGG ")
.aisle(" C FHF C ", " C B B C ", "C B B C", " B B ", " B B ", " B B ", " B B ", " B B ", " B B ", " B B ", " EEE ", " GGG ", " GGG ", " GGG ")
.aisle("S S S S", "S C C S", "C C", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ")
.aisle(" C C ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ")
.aisle(" S S CC CC S S ", " S C C S ", " C C ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ")
.aisle(" CCC ", " CC CC ", " CC CC ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ")
.aisle(" S S ", " CC CC ", " C C ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ")
.aisle(" S S ", " CCCCC ", " CC CC ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ")
.aisle(" S S ", " S S ", " CC CC ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ")
.aisle(" S S ", " S S ", " CCCCC ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ")
.where("H", Predicates.controller(Predicates.blocks(definition.get())))
.where("B", Predicates.blocks(ChemicalHelper.getBlock(TagPrefix.frameGt, GTMaterials.StainlessSteel)))
.where("S", Predicates.blocks(ChemicalHelper.getBlock(TagPrefix.frameGt, GTMaterials.Steel)))
.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()))
.or(Predicates.abilities(PartAbility.MAINTENANCE).setExactLimit(1))
)
.where("G", Predicates.blocks("ae2:quartz_glass"))
.where("I", Predicates.blocks("tfg:casings/machine_casing_iron_desh"))
.where("K", Predicates.blocks("tfg:reflector"))
.where(" ", Predicates.any())
.build()
)
.workableCasingModel('tfg:block/casings/machine_casing_iron_desh', 'gtceu:block/multiblock/hpca')
//Tier 2
event.create('large_solar_panel_tier2', 'multiblock')
.regressWhenWaiting(false)
.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 ", " S S ", " S S ", " CCCCCCC ", " ", " ", " ", " ", " ", " ", " ", " ", " ")
.aisle(" A A ", " A A ", " S S ", " S S ", " CCC CCC ", " ", " ", " ", " ", " ", " ", " ", " ", " ")
.aisle(" S S ", " S S ", " S S ", " CCCCCCC ", " CC CC ", " ", " ", " ", " ", " ", " ", " ", " ", " ")
.aisle(" A S S A ", " A S S A ", " S S S S ", " S CC CC S ", " C C ", " ", " ", " ", " ", " ", " ", " ", " ", " ")
.aisle(" S S ", " S S ", " CCCCC ", " C C ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ")
.aisle(" A S S A ", " A S S A ", " S CC CC S ", " S CC CC S ", " CC CC ", " ", " ", " ", " ", " ", " ", " ", " ", " ")
.aisle(" S S ", " CCCCC ", " CC CC ", " CC CC ", " CC CC ", " ", " ", " ", " ", " ", " ", " ", " ", " ")
.aisle(" S S ", " CC CC ", " C C ", " C C ", " C C ", " ", " ", " ", " ", " ", " ", " ", " ", " ")
.aisle(" A S CCC S A ", " A S CC CC S A ", " S S CC CC S S ", " S C C S ", " C C ", " ", " ", " ", " ", " ", " ", " ", " ", " ")
.aisle(" S S CC CC S S ", " S C C S ", " C C ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ")
.aisle("A S C C S A", "A S S A", "S S S S", "S C C S", "C C", " ", " ", " ", " ", " ", " ", " ", " ", " ")
.aisle(" S S S S ", " S C C S ", " 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(" S S S S ", " S C C S ", " C C ", " C C ", "C C", " ", " ", " ", " ", " ", " ", " ", " ", " ")
.aisle("A S C C S A", "A S S A", "S S S S", "S C C S", "C C", " ", " ", " ", " ", " ", " ", " ", " ", " ")
.aisle(" S S CC CC S S ", " S C C S ", " C C ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ")
.aisle(" A S CCC S A ", " A S CC CC S A ", " S S CC CC S S ", " S C C S ", " C C ", " ", " ", " ", " ", " ", " ", " ", " ", " ")
.aisle(" S S ", " CC CC ", " C C ", " C C ", " C C ", " ", " ", " ", " ", " ", " ", " ", " ", " ")
.aisle(" S S ", " CCCCC ", " CC CC ", " CC CC ", " CC CC ", " ", " ", " ", " ", " ", " ", " ", " ", " ")
.aisle(" A S S A ", " A S S A ", " S CC CC S ", " S CC CC S ", " CC CC ", " ", " ", " ", " ", " ", " ", " ", " ", " ")
.aisle(" S S ", " S S ", " CCCCC ", " C C ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ")
.aisle(" A S S A ", " A S S A ", " S S S S ", " S CC CC S ", " C C ", " ", " ", " ", " ", " ", " ", " ", " ", " ")
.aisle(" S S ", " S S ", " S S ", " CCCCCCC ", " CC CC ", " ", " ", " ", " ", " ", " ", " ", " ", " ")
.aisle(" A A ", " A A ", " S S ", " S S ", " CCC CCC ", " ", " ", " ", " ", " ", " ", " ", " ", " ")
.aisle(" A A ", " A A ", " S S ", " S S ", " 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("S", Predicates.blocks(ChemicalHelper.getBlock(TagPrefix.frameGt, GTMaterials.Aluminium)))
.where("C", Predicates.blocks("tfg:casings/machine_casing_green_solar_panel"))
.where("D", Predicates.blocks("ad_astra:iron_plateblock"))
.where("E", Predicates.blocks("ae2:quartz_glass"))
.where("F", Predicates.blocks("tfg:casings/machine_casing_iron_desh"))
.where("G", Predicates.blocks("tfg:reflector"))
.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()
)
.workableCasingModel('tfg:block/casings/machine_casing_iron_desh', 'gtceu:block/multiblock/hpca')
//Tier 3
event.create('large_solar_panel_tier3', 'multiblock')
.regressWhenWaiting(false)
.rotationState(RotationState.NON_Y_AXIS)
.generator(true)
.recipeType('large_solar_panel_tier3')
.recipeModifiers([GTRecipeModifiers.PARALLEL_HATCH])
.appearanceBlock(() => Block.getBlock('tfg:casings/machine_casing_iron_desh'))
.pattern(definition => FactoryBlockPattern.start()
.aisle(" A A ", " A A ", " A A ", " S S ", " S S ", " S S ", " CCCCCCCCC ", " ", " ", " ", " ", " ", " ", " ")
.aisle(" A A ", " A A ", " A A ", " S S ", " S S ", " S S ", " CC CC ", " ", " ", " ", " ", " ", " ", " ")
.aisle(" A A ", " A A ", " S S ", " S S ", " S S ", " CCCCCCC ", " CCC CCC ", " ", " ", " ", " ", " ", " ", " ")
.aisle(" A A A A ", " A A A A ", " A S S A ", " S S S S ", " S S S S ", " S CCC CCC S ", " C C ", " ", " ", " ", " ", " ", " ", " ")
.aisle(" A A S S A A ", " A A S S A A ", " A S S S S A ", " S S S S S S ", " S S CCCCCCC S S ", " S CCC CCC S ", " CC CC ", " ", " ", " ", " ", " ", " ", " ")
.aisle(" A S S A ", " A S S A ", " S S S S ", " S S S S ", " S CCC CCC S ", " C C ", " CC CC ", " ", " ", " ", " ", " ", " ", " ")
.aisle(" A S S A ", " A S S A ", " A S S A ", " S CCCCCCC S ", " S CC CC S ", " S CC CC S ", " C C ", " ", " ", " ", " ", " ", " ", " ")
.aisle(" A S S S S A ", " A S S S S A ", " S S S S S S ", " S S CC CC S S ", " S C C S ", " CC CC ", " ", " ", " ", " ", " ", " ", " ", " ")
.aisle(" AA S S AA ", " AA S S AA ", " AS CCCCC SA ", " SS C C SS ", " SS SS ", " SC CS ", " CC CC ", " ", " ", " ", " ", " ", " ", " ")
.aisle(" S S S S ", " S S S S ", " S CC CC S ", " S CC CC S ", " CC CC ", " C C ", " C C ", " ", " ", " ", " ", " ", " ", " ")
.aisle(" S S ", " CCCCC ", " CC CC ", " CC CC ", " CC CC ", " CC CC ", " CC CC ", " ", " ", " ", " ", " ", " ", " ")
.aisle(" A S S A ", " A CC CC A ", " A C C A ", " S C C S ", " S C C S ", " S C C S ", " C C ", " ", " ", " ", " ", " ", " ", " ")
.aisle(" A S S CCC S S A ", " A S S CC CC S S A ", " S S S CC CC S S S ", " S S C C S S ", " S C C S ", " C C ", " ", " ", " ", " ", " ", " ", " ", " ")
.aisle("A S S CC CC S S A", "A S C C S A", "A C C A", "S S", "S S", "S S", "C C", " ", " ", " ", " ", " ", " ", " ")
.aisle(" A S S C C S S A ", " A S S S S A ", " S S S S S S ", " S S C C S S ", " S C C S ", " C C ", "C C", " ", " ", " ", " ", " ", " ", " ")
.aisle(" S S S S ", " S C C S ", " 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(" S S S S ", " S C C S ", " C C ", " C C ", " C C ", " C C ", "C C", " ", " ", " ", " ", " ", " ", " ")
.aisle(" A S S C C S S A ", " A S S S S A ", " S S S S S S ", " S S C C S S ", " S C C S ", " C C ", "C C", " ", " ", " ", " ", " ", " ", " ")
.aisle("A S S CC CC S S A", "A S C C S A", "A C C A", "S S", "S S", "S S", "C C", " ", " ", " ", " ", " ", " ", " ")
.aisle(" A S S CCC S S A ", " A S S CC CC S S A ", " S S S CC CC S S S ", " S S C C S S ", " S C C S ", " C C ", " ", " ", " ", " ", " ", " ", " ", " ")
.aisle(" A S S A ", " A CC CC A ", " A C C A ", " S C C S ", " S C C S ", " S C C S ", " C C ", " ", " ", " ", " ", " ", " ", " ")
.aisle(" S S ", " CCCCC ", " CC CC ", " CC CC ", " CC CC ", " CC CC ", " CC CC ", " ", " ", " ", " ", " ", " ", " ")
.aisle(" S S S S ", " S S S S ", " S CC CC S ", " S CC CC S ", " CC CC ", " C C ", " C C ", " ", " ", " ", " ", " ", " ", " ")
.aisle(" AA S S AA ", " AA S S AA ", " AS CCCCC SA ", " SS C C SS ", " SS SS ", " SC CS ", " CC CC ", " ", " ", " ", " ", " ", " ", " ")
.aisle(" A S S S S A ", " A S S S S A ", " S S S S S S ", " S S CC CC S S ", " S C C S ", " CC CC ", " ", " ", " ", " ", " ", " ", " ", " ")
.aisle(" A S S A ", " A S S A ", " A S S A ", " S CCCCCCC S ", " S CC CC S ", " S CC CC S ", " C C ", " ", " ", " ", " ", " ", " ", " ")
.aisle(" A S S A ", " A S S A ", " S S S S ", " S S S S ", " S CCC CCC S ", " C C ", " CC CC ", " ", " ", " ", " ", " ", " ", " ")
.aisle(" A A S S A A ", " A A S S A A ", " A S S S S A ", " S S S S S S ", " S S CCCCCCC S S ", " S CCC CCC S ", " CC CC ", " ", " ", " ", " ", " ", " ", " ")
.aisle(" A A A A ", " A A A A ", " A S S A ", " S S S S ", " S S S S ", " S CCC CCC S ", " C C ", " ", " ", " ", " ", " ", " ", " ")
.aisle(" A A ", " A A ", " S S ", " S S ", " S S ", " CCCCCCC ", " CCC CCC ", " ", " ", " ", " ", " ", " ", " ")
.aisle(" A A ", " A A ", " A A ", " S S ", " S S ", " S S ", " CC CC ", " ", " ", " ", " ", " ", " ", " ")
.aisle(" A A ", " A A ", " A A ", " S S ", " S S ", " S S ", " 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("S", Predicates.blocks(ChemicalHelper.getBlock(TagPrefix.frameGt, GTMaterials.StainlessSteel)))
.where("C", Predicates.blocks("tfg:casings/machine_casing_red_solar_panel"))
.where("D", Predicates.blocks("ad_astra:iron_plateblock"))
.where("E", Predicates.blocks("ae2:quartz_glass"))
.where("F", Predicates.blocks("tfg:casings/machine_casing_iron_desh"))
.where("G", Predicates.blocks("tfg:reflector"))
.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))
.or(Predicates.abilities(PartAbility.PARALLEL_HATCH).setMaxGlobalLimited(1))
)
.where(" ", Predicates.any())
.build()
)
.workableCasingModel('tfg:block/casings/machine_casing_iron_desh', 'gtceu:block/multiblock/hpca')
//#endregion
//#region Nuclear Multiblocks
// Nuclear Fuel Factory
event.create('nuclear_fuel_factory', 'multiblock')
.machine((holder) => new CoilWorkableElectricMultiblockMachine(holder))
.rotationState(RotationState.NON_Y_AXIS)
.recipeType('nuclear_fuel_factory')
.recipeModifiers(
[
GTRecipeModifiers.PARALLEL_HATCH,
(machine, recipe) => GTRecipeModifiers.pyrolyseOvenOverclock(machine, recipe),
GTRecipeModifiers.BATCH_MODE
]
)
.appearanceBlock(() => Block.getBlock('gtceu:atomic_casing'))
.pattern(definition => FactoryBlockPattern.start()
.aisle('RLLLR', 'I I', 'I I', 'I I', 'RLLLR')
.aisle('LRRRL', ' KPK ', ' KPK ', ' KPK ', 'LRRRL')
.aisle('LRSRL', ' PCP ', ' PCP ', ' PCP ', 'LRSRL')
.aisle('LRRRL', ' KPK ', ' KPK ', ' KPK ', 'LRRRL')
.aisle('RLXLR', 'I I', 'I I', 'I I', 'RLLLR')
.where('X', Predicates.controller(Predicates.blocks(definition.get())))
.where('R', Predicates.blocks('gtceu:atomic_casing'))
.where('I', Predicates.blocks('gtceu:stainless_steel_frame'))
.where('G', Predicates.blocks('gtceu:high_temperature_smelting_casing'))
.where('P', Predicates.blocks('gtceu:laminated_glass'))
.where('S', Predicates.blocks(GTBlocks.CASING_ENGINE_INTAKE.get()))
.where('K', Predicates.blocks('gtceu:high_temperature_smelting_casing'))
.where('C', Predicates.heatingCoils())
.where('L', Predicates.blocks('gtceu:atomic_casing').setMinGlobalLimited(15)
.or(Predicates.abilities(PartAbility.IMPORT_ITEMS).setPreviewCount(1))
.or(Predicates.abilities(PartAbility.EXPORT_ITEMS).setPreviewCount(1))
.or(Predicates.abilities(PartAbility.MAINTENANCE).setExactLimit(1))
.or(Predicates.abilities(PartAbility.IMPORT_FLUIDS).setPreviewCount(1))
.or(Predicates.abilities(PartAbility.INPUT_ENERGY).setExactLimit(1))
.or(Predicates.abilities(PartAbility.PARALLEL_HATCH).setMaxGlobalLimited(1)))
.where('#', Predicates.air())
.where(' ', Predicates.any())
.build()
)
.workableCasingModel(
'gtceu:block/casings/gcym/atomic_casing',
'gtceu:block/machines/fermenter')
// Nuclear Heat Exchanger
event.create('heat_exchanger', 'multiblock')
.rotationState(RotationState.NON_Y_AXIS)
.recipeType('heat_exchanger')
.recipeModifiers([GTRecipeModifiers.OC_PERFECT_SUBTICK, GTRecipeModifiers.BATCH_MODE])
.appearanceBlock(() => Block.getBlock('gtceu:high_temperature_smelting_casing'))
.pattern(definition => FactoryBlockPattern.start()
.aisle(' ','BBBBBBB','BCCCCCB','BBBBBBB',' ')
.aisle('AAAAAAA','A#####A','BDDDDDB','A#####A','AAAAAAA')
.aisle('AFFFFFA','B#####B','LEEEEEL','B#####B','AFFFFFA')
.aisle('AAAAAAA','A#####A','BDDDDDB','A#####A','AAAAAAA')
.aisle(' ','BBBXBBB','BCCCCCB','BBBMBBB',' ')
.where('X', Predicates.controller(Predicates.blocks(definition.get())))
.where('A', Predicates.blocks('gtceu:atomic_casing'))
.where('B', Predicates.blocks('gtceu:high_temperature_smelting_casing')
.or(Predicates.abilities(PartAbility.INPUT_ENERGY).setExactLimit(1)))
.where('C', Predicates.blocks('gtceu:laminated_glass'))
.where('D', Predicates.blocks(GTBlocks.FIREBOX_TITANIUM.get()))
.where('E', Predicates.blocks(GTBlocks.CASING_TITANIUM_PIPE.get()))
.where('F', Predicates.blocks(GTBlocks.CASING_ENGINE_INTAKE.get()))
.where('L', Predicates.blocks('gtceu:high_temperature_smelting_casing')
.or(Predicates.abilities(PartAbility.IMPORT_FLUIDS_4X).setExactLimit(1))
.or(Predicates.abilities(PartAbility.EXPORT_FLUIDS_4X).setExactLimit(1)))
.where('M', Predicates.abilities(PartAbility.MAINTENANCE).setExactLimit(1)
.or(Predicates.blocks('gtceu:high_temperature_smelting_casing')))
.where('#', Predicates.air())
.where(' ', Predicates.any())
.build()
)
.workableCasingModel(
"gtceu:block/casings/gcym/high_temperature_smelting_casing",
"gtceu:block/machines/fluid_heater")
// Nuclear Fission Reactor - Just keeping it in case we got mod issues
/*
event.create('fission_reactor', 'multiblock')
.rotationState(RotationState.NON_Y_AXIS)
.recipeType('fission_reactor')
.recipeModifiers([GTRecipeModifiers.OC_PERFECT_SUBTICK])
.appearanceBlock(() => Block.getBlock('gtceu:atomic_casing'))
.pattern(definition => FactoryBlockPattern.start()
.aisle('LLLLL','ABCBA','ABCBA','ABCBA','ABCBA','ABCBA','LLLLL')
.aisle('LAAAL','BE#EB','BE#EB','BE#EB','BE#EB','BE#EB','LAAAL')
.aisle('LAAAL','C#D#C','C#D#C','C#D#C','C#D#C','C#D#C','LAAAL')
.aisle('LAAAL','BE#EB','BE#EB','BE#EB','BE#EB','BE#EB','LAAAL')
.aisle('LLXLL','ABCBA','ABCBA','ABCBA','ABCBA','ABCBA','LLLLL')
.where('X', Predicates.controller(Predicates.blocks(definition.get())))
.where('A', Predicates.blocks('gtceu:high_temperature_smelting_casing'))
.where('B', Predicates.blocks('gtceu:atomic_casing'))
.where('C', Predicates.blocks('gtceu:laminated_glass'))
.where('D', Predicates.blocks(GTBlocks.FIREBOX_TITANIUM.get()))
.where('E', Predicates.blocks('gtceu:titanium_frame'))
.where('F', Predicates.blocks(GTBlocks.CASING_ENGINE_INTAKE.get()))
.where('L', Predicates.blocks('gtceu:atomic_casing').setMinGlobalLimited(10)
.or(Predicates.abilities(PartAbility.IMPORT_FLUIDS).setPreviewCount(1))
.or(Predicates.abilities(PartAbility.EXPORT_FLUIDS).setPreviewCount(1))
.or(Predicates.abilities(PartAbility.IMPORT_ITEMS).setPreviewCount(1))
.or(Predicates.abilities(PartAbility.INPUT_ENERGY).setExactLimit(1))
.or(Predicates.abilities(PartAbility.MAINTENANCE).setExactLimit(1)))
.where('#', Predicates.air())
.where(' ', Predicates.any())
.build()
)
.workableCasingModel(
"gtceu:block/casings/gcym/atomic_casing",
"gtceu:block/machines/electromagnetic_separator")
*/
//#endregion
//#region Ore Line
// Ostrum Harvester
event.create('ostrum_harvester', 'multiblock')
.machine((holder) => new CoilWorkableElectricMultiblockMachine(holder))
.rotationState(RotationState.NON_Y_AXIS)
.recipeType('ostrum_harvester')
.recipeModifiers([(machine, recipe) => GTRecipeModifiers.crackerOverclock(machine, recipe), GTRecipeModifiers.BATCH_MODE])
.appearanceBlock(() => Block.getBlock('gtceu:nonconducting_casing'))
.pattern(definition => FactoryBlockPattern.start()
.aisle(' ' ,'A A', 'AAAAA', 'ACCCA', 'AACAA', ' AAA ')
.aisle(' G ' ,' ', 'BBBBB', 'B###B', 'BB#BB', ' BFB ')
.aisle(' GGG ' ,' ', 'ADDDA', 'D###D', 'A###A', ' BFB ')
.aisle('GGGGG' ,' ', 'ADDDA', 'D###D', 'A###A', ' BFB ')
.aisle(' GGG ' ,' ', 'ADDDA', 'D###D', 'A###A', ' BFB ')
.aisle(' G ' ,' ', 'BBBBB', 'B###B', 'BB#BB', ' BFB ')
.aisle(' ' ,'A A', 'AAAAA', 'ACXCA', 'AACAA', ' AAA ')
.where('X', Predicates.controller(Predicates.blocks(definition.get())))
.where('A', Predicates.blocks('gtceu:secure_maceration_casing'))
.where('B', Predicates.blocks('gtceu:nonconducting_casing'))
.where('C', Predicates.blocks('gtceu:nonconducting_casing')
.or(Predicates.abilities(PartAbility.IMPORT_FLUIDS).setMaxGlobalLimited(1).setPreviewCount(1))
.or(Predicates.abilities(PartAbility.EXPORT_ITEMS).setMaxGlobalLimited(1).setPreviewCount(1))
.or(Predicates.abilities(PartAbility.INPUT_ENERGY).setMaxGlobalLimited(2).setPreviewCount(2))
.or(Predicates.abilities(PartAbility.MAINTENANCE).setExactLimit(1).setPreviewCount(1)))
.where('D', Predicates.blocks('tfg:casings/machine_casing_vacuum_engine_intake'))
.where('F', Predicates.heatingCoils())
.where('G', Predicates.blocks('tfg:spice'))
.where('#', Predicates.air())
.where(' ', Predicates.any())
.build()
)
.workableCasingModel(
'gtceu:block/casings/gcym/nonconducting_casing',
'gtceu:block/multiblock/distillation_tower')
// Moon Harvester
event.create('moon_dust_harvester', 'multiblock')
.machine((holder) => new CoilWorkableElectricMultiblockMachine(holder))
.rotationState(RotationState.NON_Y_AXIS)
.recipeType('moon_dust_harvester')
.recipeModifiers([(machine, recipe) => GTRecipeModifiers.crackerOverclock(machine, recipe), GTRecipeModifiers.BATCH_MODE])
.appearanceBlock(() => Block.getBlock('gtceu:nonconducting_casing'))
.pattern(definition => FactoryBlockPattern.start()
.aisle('A A', 'AAAAA', 'ACCCA', 'AAEAA', ' AAA ')
.aisle(' ', 'BBBBB', 'B###B', 'BB#BB', ' BFB ')
.aisle(' ', 'ADDDA', 'D###D', 'A###A', ' BFB ')
.aisle(' ', 'ADDDA', 'D###D', 'A###A', ' BFB ')
.aisle(' ', 'ADDDA', 'D###D', 'A###A', ' BFB ')
.aisle(' ', 'BBBBB', 'B###B', 'BB#BB', ' BFB ')
.aisle('A A', 'AAAAA', 'ACXCA', 'AACAA', ' AAA ')
.where('X', Predicates.controller(Predicates.blocks(definition.get())))
.where('A', Predicates.blocks('tfg:casings/machine_casing_iron_desh'))
.where('B', Predicates.blocks('gtceu:nonconducting_casing'))
.where('C', Predicates.blocks('gtceu:nonconducting_casing')
.or(Predicates.abilities(PartAbility.IMPORT_ITEMS).setMaxGlobalLimited(1).setPreviewCount(1))
.or(Predicates.abilities(PartAbility.EXPORT_ITEMS).setMaxGlobalLimited(1).setPreviewCount(1))
.or(Predicates.abilities(PartAbility.INPUT_ENERGY).setMinGlobalLimited(1).setMaxGlobalLimited(2).setPreviewCount(1))
.or(Predicates.abilities(PartAbility.MAINTENANCE).setExactLimit(1).setPreviewCount(1)))
.where('D', Predicates.blocks('tfg:casings/machine_casing_vacuum_engine_intake'))
.where('E', Predicates.blocks('gtceu:nonconducting_casing'))
.where('F', Predicates.heatingCoils())
.where('#', Predicates.air())
.where(' ', Predicates.any())
.build()
)
.workableCasingModel(
'gtceu:block/casings/gcym/nonconducting_casing',
'gtceu:block/multiblock/distillation_tower')
//#region Power Rework
// Coal Liquefaction Tower
event.create('coal_liquefaction_tower', 'multiblock')
.machine((holder) => new CoilWorkableElectricMultiblockMachine(holder))
.rotationState(RotationState.NON_Y_AXIS)
.recipeType('coal_liquefaction_tower')
.recipeModifiers([(machine, recipe) => GTRecipeModifiers.pyrolyseOvenOverclock(machine, recipe), GTRecipeModifiers.BATCH_MODE])
.appearanceBlock(() => Block.getBlock('gtceu:solid_machine_casing'))
.pattern(definition => FactoryBlockPattern.start()
.aisle('CCC', 'D D', 'D D', 'DED', 'DED', 'BBB')
.aisle('CCC', ' Y ', ' E ', 'E#E', 'EEE', 'BMB')
.aisle('CXC', 'D D', 'D D', 'DED', 'DED', 'BBB' )
.where('X', Predicates.controller(Predicates.blocks(definition.get())))
.where('B', Predicates.blocks('gtceu:solid_machine_casing').setMinGlobalLimited(4)
.or(Predicates.abilities(PartAbility.IMPORT_FLUIDS).setPreviewCount(2))
.or(Predicates.abilities(PartAbility.IMPORT_ITEMS).setPreviewCount(1)))
.where('C', Predicates.blocks('gtceu:solid_machine_casing')
.or(Predicates.abilities(PartAbility.EXPORT_FLUIDS).setPreviewCount(2))
.or(Predicates.abilities(PartAbility.INPUT_ENERGY).setExactLimit(1).setPreviewCount(1))
.or(Predicates.abilities(PartAbility.MAINTENANCE).setExactLimit(1).setPreviewCount(1)))
.where('D', Predicates.blocks('create:metal_girder'))
.where('E', Predicates.blocks('gtceu:steam_machine_casing'))
.where('Y', Predicates.heatingCoils())
.where('M', Predicates.abilities(PartAbility.MUFFLER).setExactLimit(1))
.where('#', Predicates.air())
.where(' ', Predicates.any())
.build()
)
.workableCasingModel(
'gtceu:block/casings/solid/machine_casing_solid_steel',
'gtceu:block/multiblock/distillation_tower')
}