GTCEuStartupEvents.registry('gtceu:recipe_type', event => { event.create('cobbleworks') .category('cobbleworks') .setEUIO('in') .setMaxIOSize(1, 1, 2, 0) .setSound(GTSoundEntries.COOLING); }); GTCEuStartupEvents.registry('gtceu:machine', event => { event.create('cobbleworks', 'multiblock') .rotationState(RotationState.NON_Y_AXIS) .recipeType('cobbleworks') .recipeModifiers([GTRecipeModifiers.ELECTRIC_OVERCLOCK.apply(OverclockingLogic.PERFECT_OVERCLOCK)]) .appearanceBlock(GCyMBlocks.CASING_STRESS_PROOF) .pattern(definition => FactoryBlockPattern.start() .aisle('FTTTF', 'FSSSF', 'FSISF', 'FSSSF', 'FTTTF') .aisle('TTFTT', 'SWWWS', 'SWWWS', 'SWWWS', 'TTSTT') .aisle('TFOFT', 'SW WS', 'HP PH', 'SW WS', 'TSSST') .aisle('TTFTT', 'SWWWS', 'SWWWS', 'SWWWS', 'TTSTT') .aisle('FTTTF', 'FSSSF', 'FSCSF', 'FSSSF', 'FTTTF') .where('C', Predicates.controller(Predicates.blocks(definition.get()))) .where('S', Predicates.blocks(GCyMBlocks.CASING_STRESS_PROOF.get()) .or(Predicates.abilities(PartAbility.MAINTENANCE).setExactLimit(1)) .or(Predicates.abilities(PartAbility.INPUT_ENERGY).setMaxGlobalLimited(2))) .where('T', Predicates.blocks(GTBlocks.CASING_TUNGSTENSTEEL_ROBUST.get())) .where('F', Predicates.blocks('gtceu:tungsten_steel_frame')) .where('P', Predicates.blocks(GTBlocks.CASING_TUNGSTENSTEEL_PIPE.get())) .where('I', Predicates.abilities(PartAbility.IMPORT_ITEMS)) .where('O', Predicates.abilities(PartAbility.EXPORT_ITEMS)) .where('H', Predicates.abilities(PartAbility.IMPORT_FLUIDS)) .where('W', Predicates.blocks(GCyMBlocks.CRUSHING_WHEELS.get())) .where(' ', Predicates.any()) .build()) .workableCasingRenderer("gtceu:block/casings/gcym/stress_proof_casing", "gtceu:block/multiblock/implosion_compressor", false); });