
GTCEuStartupEvents.registry('gtceu:recipe_type', event => {
    event.create('stargate_component_assembly')
        .category('stargate_component_assembly')
        .setEUIO('in')
        .setMaxIOSize(16, 1, 8, 0)
        .setSound(GTSoundEntries.ASSEMBLER);
});

GTCEuStartupEvents.registry('gtceu:machine', event => {
    event.create('stargate_component_assembly', 'multiblock')
        .rotationState(RotationState.NON_Y_AXIS)
        .recipeType('stargate_component_assembly')
        .recipeModifiers([GTRecipeModifiers.ELECTRIC_OVERCLOCK.apply(OverclockingLogic.PERFECT_OVERCLOCK)])
        .pattern(definition => FactoryBlockPattern.start()
            .aisle(' SSS     MCM     SSS ', 'S   S           S   S', 'S   S           S   S', 'S   S           S   S', ' SSS             SSS ', '                     ', '                     ', '                     ', '                     ', '                     ', ' SSS SSS SSS SSS SSS ', 'S   S   SPPPS   S   S', 'S   S   SPPPS   S   S', 'S   S   SPPPS   S   S', ' SSS SSS SSS SSS SSS ')
            .aisle('SFFFSDDDDMCMDDDDSFFFS', ' HHH             HHH ', ' HHH             HHH ', ' HHH             HHH ', 'SFFFS           SFFFS', '  M               M  ', '  M               M  ', '                     ', '  M               M  ', '  M               M  ', 'SFFFS   SPPPS   SFFFS', ' HHHSHHHSHHHSHHHSHHH ', ' HHHSHHHSHHHSHHHSHHH ', ' HHHSHHHSHHHSHHHSHHH ', 'S   S   SPPPS   S   S')
            .aisle('SFFFSCCCCMCMCCCCSFFFS', ' HHH             HHH ', ' HHH             HHH ', ' HHH             HHH ', 'SFFFS           SFFFS', ' MMM             MMM ', ' MMM             MMM ', '  C               C  ', ' MMM             MMM ', ' MMM             MMM ', 'SFFFS   SPPPS   SFFFS', ' HHHSHHHSHHHSHHHSHHH ', ' HHHSHHHSHHHSHHHSHHH ', ' HHHSHHHSHHHSHHHSHHH ', 'S   S   SPPPS   S   S')
            .aisle('SFFFSDDDDMCMDDDDSFFFS', ' HHH             HHH ', ' HHH             HHH ', ' HHH             HHH ', 'SFFFS           SFFFS', '  M               M  ', '  M               M  ', '                     ', '  M               M  ', '  M               M  ', 'SFFFS   SPPPS   SFFFS', ' HHHSHHHSHHHSHHHSHHH ', ' HHHSHHHSHHHSHHHSHHH ', ' HHHSHHHSHHHSHHHSHHH ', 'S   S   SPPPS   S   S')
            .aisle(' SSS     MCM     SSS ', 'S   S           S   S', 'S   S           S   S', 'S   S           S   S', ' SSS             SSS ', '                     ', '                     ', '                     ', '                     ', '                     ', ' SSS SSS SSS SSS SSS ', 'SFFFS   SFFFS   SFFFS', 'SFFFS   SFFFS   SFFFS', 'SFFFS   SFFFS   SFFFS', ' SSS SSS SSS SSS SSS ')
            .aisle(' DCD     MCM     DCD ', '                     ', '                     ', '                     ', '                     ', '                     ', '                     ', '                     ', '                     ', '                     ', '                     ', '  M       M       M  ', ' MMM     MMM     MMM ', '  M       M       M  ', '                     ')
            .aisle(' DCD     MCM     DCD ', '                     ', '                     ', '                     ', '                     ', '                     ', '                     ', '                     ', '                     ', '                     ', '                     ', '  M       M       M  ', ' MMM     MMM     MMM ', '  M       M       M  ', '                     ')
            .aisle(' DCD     MCM     DCD ', '                     ', '                     ', '                     ', '                     ', '                     ', '                     ', '                     ', '                     ', '                     ', '                     ', '                     ', '  C       C       C  ', '                     ', '                     ')
            .aisle(' DCD     MCM     DCD ', '                     ', '                     ', '                     ', '                     ', '                     ', '                     ', '                     ', '                     ', '                     ', '                     ', '  M       M       M  ', ' MMM     MMM     MMM ', '  M       M       M  ', '                     ')
            .aisle(' DCD    SSSSS    DCD ', '                     ', '                     ', '                     ', '                     ', '                     ', '                     ', '                     ', '                     ', '                     ', '                     ', '  M       M       M  ', ' MMM     MMM     MMM ', '  M       M       M  ', '                     ')
            .aisle(' SSS   SCCCCCS   SSS ', 'S   S           S   S', 'S   S           S   S', 'S   S           S   S', ' SSS             SSS ', '                     ', '                     ', '                     ', '                     ', '                     ', ' SSS SSS SSS SSS SSS ', 'SFFFS   SFFFS   SFFFS', 'SFFFS   SFFFS   SFFFS', 'SFFFS   SFFFS   SFFFS', ' SSS SSS SSS SSS SSS ')
            .aisle('SFFFSDDSCFFFCSDDSFFFS', ' HHH     SSS     HHH ', ' HHH      S      HHH ', ' HHH             HHH ', 'SFFFS           SFFFS', '  M               M  ', '  M               M  ', '                     ', '  M       S       M  ', '  M      SSS      M  ', 'SFFFS   SFFFS   SFFFS', ' HHHSHHHSHHHSHHHSHHH ', ' HHHSHHHSHHHSHHHSHHH ', ' HHHSHHHSHHHSHHHSHHH ', 'S   S   S   S   S   S')
            .aisle('SFFFSDDSCFFFCSDDSFFFS', ' HHH     SSS     HHH ', ' HHH     SSS     HHH ', ' HHH      S      HHH ', 'SFFFS     M     SFFFS', ' MMM      K      MMM ', ' MMM      M      MMM ', '  C       S       C  ', ' MMM     SSS     MMM ', ' MMM     SSS     MMM ', 'SFFFS   SFFFS   SFFFS', ' HHHSHHHSHHHSHHHSHHH ', ' HHHSHHHSHHHSHHHSHHH ', ' HHHSHHHSHHHSHHHSHHH ', 'S   S   S   S   S   S')
            .aisle('SFFFSDDSCFFFCSDDSFFFS', ' HHH     SSS     HHH ', ' HHH      S      HHH ', ' HHH             HHH ', 'SFFFS           SFFFS', '  M               M  ', '  M               M  ', '                     ', '  M       S       M  ', '  M      SSS      M  ', 'SFFFS   SFFFS   SFFFS', ' HHHSHHHSHHHSHHHSHHH ', ' HHHSHHHSHHHSHHHSHHH ', ' HHHSHHHSHHHSHHHSHHH ', 'S   S   S   S   S   S')
            .aisle(' SSS   SCCCCCS   SSS ', 'S   S           S   S', 'S   S           S   S', 'S   S           S   S', ' SSS             SSS ', '                     ', '                     ', '                     ', '                     ', '                     ', ' SSS SSS SSS SSS SSS ', 'SFFFS   SFFFS   SFFFS', 'SFFFS   SFFFS   SFFFS', 'SFFFS   SFFFS   SFFFS', ' SSS SSS SSS SSS SSS ')
            .aisle(' DCD    SSSSS    DCD ', '                     ', '                     ', '                     ', '                     ', '                     ', '                     ', '                     ', '                     ', '                     ', '                     ', '  M       M       M  ', ' MMM     MMM     MMM ', '  M       M       M  ', '                     ')
            .aisle(' DCD     MCM     DCD ', '                     ', '                     ', '                     ', '                     ', '                     ', '                     ', '                     ', '                     ', '                     ', '                     ', '  M       M       M  ', ' MMM     MMM     MMM ', '  M       M       M  ', '                     ')
            .aisle(' DCD     MCM     DCD ', '                     ', '                     ', '                     ', '                     ', '                     ', '                     ', '                     ', '                     ', '                     ', '                     ', '                     ', '  C       C       C  ', '                     ', '                     ')
            .aisle(' DCD     MCM     DCD ', '                     ', '                     ', '                     ', '                     ', '                     ', '                     ', '                     ', '                     ', '                     ', '                     ', '  M       M       M  ', ' MMM     MMM     MMM ', '  M       M       M  ', '                     ')
            .aisle(' DCD     MCM     DCD ', '                     ', '                     ', '                     ', '                     ', '                     ', '                     ', '                     ', '                     ', '                     ', '                     ', '  M       M       M  ', ' MMM     MMM     MMM ', '  M       M       M  ', '                     ')
            .aisle(' SSS     MCM     SSS ', 'S   S           S   S', 'S   S           S   S', 'S   S           S   S', ' SSS             SSS ', '                     ', '                     ', '                     ', '                     ', '                     ', ' SSS SSS SSS SSS SSS ', 'SFFFS   SFFFS   SFFFS', 'SFFFS   SFFFS   SFFFS', 'SFFFS   SFFFS   SFFFS', ' SSS SSS SSS SSS SSS ')
            .aisle('SFFFSDDDDMCMDDDDSFFFS', ' HHH             HHH ', ' HHH             HHH ', ' HHH             HHH ', 'SFFFS           SFFFS', '  M               M  ', '  M               M  ', '                     ', '  M               M  ', '  M               M  ', 'SFFFS   SPPPS   SFFFS', ' HHHSHHHSHHHSHHHSHHH ', ' HHHSHHHSHHHSHHHSHHH ', ' HHHSHHHSHHHSHHHSHHH ', 'S   S   SPPPS   S   S')
            .aisle('SFFFSCCCCMCMCCCCSFFFS', ' HHH             HHH ', ' HHH             HHH ', ' HHH             HHH ', 'SFFFS           SFFFS', ' MMM             MMM ', ' MMM             MMM ', '  C               C  ', ' MMM             MMM ', ' MMM             MMM ', 'SFFFS   SPPPS   SFFFS', ' HHHSHHHSHHHSHHHSHHH ', ' HHHSHHHSHHHSHHHSHHH ', ' HHHSHHHSHHHSHHHSHHH ', 'S   S   SPPPS   S   S')
            .aisle('SFFFSDDDDMCMDDDDSFFFS', ' HHH             HHH ', ' HHH             HHH ', ' HHH             HHH ', 'SFFFS           SFFFS', '  M               M  ', '  M               M  ', '                     ', '  M               M  ', '  M               M  ', 'SFFFS   SPPPS   SFFFS', ' HHHSHHHSHHHSHHHSHHH ', ' HHHSHHHSHHHSHHHSHHH ', ' HHHSHHHSHHHSHHHSHHH ', 'S   S   SPPPS   S   S')
            .aisle(' SSS     MCM     SSS ', 'S   S           S   S', 'S   S           S   S', 'S   S           S   S', ' SSS             SSS ', '                     ', '                     ', '                     ', '                     ', '                     ', ' SSS SSS SSS SSS SSS ', 'S   S   SPPPS   S   S', 'S   S   SPPPS   S   S', 'S   S   SPPPS   S   S', ' SSS SSS SSS SSS SSS ')
            .where('K', Predicates.controller(Predicates.blocks(definition.get())))
            .where('P', Predicates.blocks('kubejs:prismalium_casing')
                .or(Predicates.autoAbilities(definition.getRecipeTypes()))
                .or(Predicates.abilities(PartAbility.MAINTENANCE).setExactLimit(1)))
            .where('H', Predicates.heatingCoils())
            .where('D', Predicates.blocks('kubejs:dragonsteel_casing'))
            .where('M', Predicates.blocks('kubejs:melodium_casing'))
            .where('S', Predicates.blocks('kubejs:stellarium_casing'))
            .where('C', Predicates.blocks(GTBlocks.FUSION_CASING_MK3.get()))
            .where('F', Predicates.blocks(GTBlocks.FUSION_COIL.get()))
            .where(' ', Predicates.any())
            .build())
        .workableCasingRenderer("kubejs:block/casings/casing-prismalium",
            "gtceu:block/multiblock/implosion_compressor", false);
});