Ore Processing Plant Multiblock (by trulyno)
Recipe Type
Multiblock
MultiMachines.java
public static final MultiblockMachineDefinition ORE_PROCESSING_PLANT = REGISTRATE
.multiblock("ore_processing_plant", WorkableElectricMultiblockMachine::new)
.langValue("Ore Processing Plant")
.rotationState(RotationState.NON_Y_AXIS)
.recipeType(AddonRecipeTypes.ORE_PROCESSING_RECIPES)
.recipeModifiers(GTRecipeModifiers.PARALLEL_HATCH, GTRecipeModifiers.ELECTRIC_OVERCLOCK.apply(OverclockingLogic.PERFECT_OVERCLOCK))
.appearanceBlock(GTBlocks.CASING_TUNGSTENSTEEL_ROBUST)
.pattern(definition -> MultiblockPatternBuilder.start()
.slice(" AAA ", " FCF ", " FFF ", " F ", " ", " ", " ")
.slice("AFFFA", "FG GF", "F F", " F F ", " FFF ", " F ", " B ")
.slice("AFFFA", "F P F", "F P F", "F P F", " FPF ", " FMF ", " B B ")
.slice("AFFFA", "FG GF", "F F", " F F ", " FFF ", " F ", " B ")
.slice(" AAA ", " FFF ", " FFF ", " F ", " ", " ", " ")
.where('C', Predicates.controller(Predicates.blocks(definition.get())))
.where('F', Predicates.blocks(GTBlocks.CASING_TUNGSTENSTEEL_ROBUST.get())
.and(Predicates.autoAbilities(definition.getRecipeTypes()))
.and(Predicates.abilities(PartAbility.MAINTENANCE).setExactLimit(1))
.and(Predicates.abilities(PartAbility.PARALLEL_HATCH).setMaxGlobalLimited(1)))
.where('M', Predicates.abilities(PartAbility.MUFFLER))
.where('P', Predicates.blocks(GTBlocks.CASING_TUNGSTENSTEEL_PIPE.get()))
.where('G', Predicates.blocks(GTBlocks.CASING_TUNGSTENSTEEL_GEARBOX.get()))
.where('A', Predicates.blocks(GTBlocks.FIREBOX_TUNGSTENSTEEL.get()))
.where('B', Predicates.blocks(GTBlocks.BRONZE_HULL.get()))
.where(' ', Predicates.any())
.build())
.workableCasingModel(
GTCEu.id("block/casings/solid/machine_casing_robust_tungstensteel"),
GTCEu.id("block/multiblock/primitive_blast_furnace")
)
.register();
ore_processing_plant.js
GTCEuStartupEvents.registry('gtceu:machine', event => {
event.create('ore_processing_plant', 'multiblock')
.rotationState(RotationState.NON_Y_AXIS)
.langValue("Ore Processing Plant")
.recipeType('gtceu:ore_processing_plant')
.recipeModifiers(GTRecipeModifiers.PARALLEL_HATCH, GTRecipeModifiers.ELECTRIC_OVERCLOCK.apply(OverclockingLogic.PERFECT_OVERCLOCK))
.appearanceBlock(GTBlocks.CASING_TUNGSTENSTEEL_ROBUST)
.pattern(definition => MultiblockPatternBuilder.start()
.slice(" AAA ", " FCF ", " FFF ", " F ", " ", " ", " ")
.slice("AFFFA", "FG GF", "F F", " F F ", " FFF ", " F ", " B ")
.slice("AFFFA", "F P F", "F P F", "F P F", " FPF ", " FMF ", " B B ")
.slice("AFFFA", "FG GF", "F F", " F F ", " FFF ", " F ", " B ")
.slice(" AAA ", " FFF ", " FFF ", " F ", " ", " ", " ")
.where("C", Predicates.controller(Predicates.blocks(definition.get())))
.where("F", Predicates.blocks(GTBlocks.CASING_TUNGSTENSTEEL_ROBUST.get())
.and(Predicates.autoAbilities(definition.getRecipeTypes()))
.and(Predicates.abilities(PartAbility.MAINTENANCE).setExactLimit(1))
.and(Predicates.abilities(PartAbility.PARALLEL_HATCH).setMaxGlobalLimited(1)))
.where("M", Predicates.abilities(PartAbility.MUFFLER))
.where("P", Predicates.blocks(GTBlocks.CASING_TUNGSTENSTEEL_PIPE.get()))
.where("G", Predicates.blocks(GTBlocks.CASING_TUNGSTENSTEEL_GEARBOX.get()))
.where("A", Predicates.blocks(GTBlocks.FIREBOX_TUNGSTENSTEEL.get()))
.where("B", Predicates.blocks("gtceu:bronze_machine_casing"))
.where(" ", Predicates.any())
.build())
.workableCasingModel(
"gtceu:block/casings/solid/machine_casing_robust_tungstensteel",
"gtceu:block/multiblock/primitive_blast_furnace"
);
})