GTCEuStartupEvents.registry('gtceu:recipe_type', event => {
    event.create('differential_centrifuge')
        .setEUIO("in")
        .setMaxIOSize(6, 6, 6, 6)
        .setSlotOverlay(false, false, GuiTextures.SOLIDIFIER_OVERLAY)
        .setProgressBar(GuiTextures.PROGRESS_BAR_EXTRACT, FillDirection.LEFT_TO_RIGHT)
        .setSound(GTSoundEntries.CENTRIFUGE)
})

GTCEuStartupEvents.registry('gtceu:machine', event => {
    event.create('super_centrifuge', 'multiblock')
        .rotationState(RotationState.NON_Y_AXIS)
        .recipeType('centrifuge')
        .recipeType('differential_centrifuge')
        .appearanceBlock(GTBlocks.CASING_TITANIUM_STABLE)
        .pattern(definition => FactoryBlockPattern.start()
            .aisle("#BBB#", "BBBBB", "#BBB#", "BBBBB", "#BBB#") 
            .aisle("BBBBB", "B#C#B", "B#C#B", "B#C#B", "BBBBB") 
            .aisle("BBBBB", "BC#CB", "BC#CB", "BC#CB", "BBBBB") 
            .aisle("BBBBB", "B#C#B", "B#C#B", "B#C#B", "BBBBB") 
            .aisle("#BBB#", "BBBBB", "#B@B#", "BBBBB", "#BBB#") 
            .where("B", Predicates.blocks("gtceu:stable_machine_casing").setMinGlobalLimited(40)
                    .or(Predicates.autoAbilities(definition.getRecipeTypes()))
                    .or(Predicates.abilities(PartAbility.MAINTENANCE).setExactLimit(1)))
            .where("#", Predicates.any())
            .where("C", Predicates.blocks("gtceu:titanium_pipe_casing"))
            .where("@", Predicates.controller(Predicates.blocks(definition.get())))
            .build()
        )
        .workableCasingRenderer('gtceu:block/casings/solid/machine_casing_stable_titanium', 'gtceu:block/multiblock/implosion_compressor', false)
})