Skip to content

Example_MultiBlock

LiangquHMF edited this page Aug 11, 2026 · 12 revisions
event.create('kjs_config_parallel', 'multiblock')
      .machine((holder) => new ConfigurableElectricParallelMachine(holder, 32))
      //32 -> Max_Parallels(int)
      //32 -> 设置最大并行数(int)
      .rotationState(RotationState.ALL)
      .appearanceBlock(GCYMBlocks.CASING_INDUSTRIAL_STEAM)
      .recipeType('forge_hammer')
      .recipeModifier((machine, recipe) => ConfigurableElectricParallelMachine.recipeModifier(machine, recipe), true)
      .addOutputLimit(ItemRecipeCapability.CAP, 1)
      .pattern(definition => FactoryBlockPattern.start()
          .aisle('AAAAAA', 'ACCCCA', 'AAAAAA')
          .aisle('AAAAAA', 'ADDDDA', 'AAAAAA')
          .aisle('AAAAAA', 'ACACCA', 'AAAAAA')
          .aisle('AAA###', 'AKA###', 'AAA###')
          .where('#', Predicates.any())
          .where('K', Predicates.controller(Predicates.blocks(definition.get())))
          .where('D', Predicates.blocks('gtceu:bronze_gearbox'))
          .where('C', Predicates.blocks('gtceu:frame_bronze'))
          .where('A', Predicates.blocks('gtceu:industrial_steam_casing').setMinGlobalLimited(45)
              .or(Predicates.abilities(PartAbility.IMPORT_ITEMS).setPreviewCount(1))
              .or(Predicates.abilities(PartAbility.EXPORT_ITEMS).setPreviewCount(1))
              .or(Predicates.abilities(PartAbility.INPUT_ENERGY).setExactLimit(1)))
          .build())
      .model(GTMachineModels.createWorkableCasingMachineModel(
          GTCEu.id('block/casings/gcym/industrial_steam_casing'),
          GTCEu.id('block/multiblock/large_chemical_reactor')))
  • Max_parallels = Base_parallels * 2 ^ ( CasingTier - 1 )

  • Duration = Base_Duration * ( 1 - ( PipeTier - 1 ) * 0.1 )

  • Energy_consumer = Base_Energy_consumer * ( 1 - ( FrameTier - 1 ) * 0.05 )

  • 最大并行数 = 初始并行数 × 2^(外壳等级-1)

  • 配方时长倍率 = 1 - (管道等级-1) × 0.1

  • 能耗倍率 = 1 - (框架等级-1) × 0.05

    event.create('kjs_enhanceable_electric', 'multiblock')
        .machine((holder) => new EnhanceableElectricMachine(holder, true, true))
        /*Builder(holder,useFrame,usePipe):
          useFrame-When set to true, enables the frame tier mechanism.
          usePipe-When set to true, enables the pipe tier mechanism.
          useFrame-当设置为 true 时,启用框架等级机制
          usePipe-当设置为 true 时,启用管道方块等级机制
        */
        .rotationState(RotationState.ALL)
        .appearanceBlock(GTBlocks.CASING_STEEL_SOLID)
        .recipeType('forge_hammer')
        .recipeModifier((machine, recipe) => EnhanceableElectricMachine.recipeModifier(machine, recipe), true)
        .addOutputLimit(ItemRecipeCapability.CAP, 1)
        .pattern(definition => FactoryBlockPattern.start()
            .aisle('AAAAAA', 'ACCCCA', 'AAAAAA')
            .aisle('AAAAAA', 'ADDDDA', 'AAAAAA')
            .aisle('AAAAAA', 'ACACCA', 'AAAAAA')
            .aisle('AAA###', 'AKA###', 'AAA###')
            .where('#', Predicates.any())
            .where('K', Predicates.controller(Predicates.blocks(definition.get())))
            .where('D', GTUFPatternPredicates.UniversalPipeTier())
            .where('C', GTUFPatternPredicates.UniversalFrameTier())
            .where('A', GTUFPatternPredicates.UniversalCasingTier().setMinGlobalLimited(40)
            /*
              GTUF_PatternPredicates:
              UniversalCasingTier:CASING_STEEL_SOLID=1,CASING_ALUMINIUM_FROSTPROOF=2,
                                  CASING_STAINLESS_CLEAN=3,CASING_TITANIUM_STABLE=4,CASING_TUNGSTENSTEEL_ROBUST=5
              UniversalFrameTier:Steel=1,Aluminium=2,StainlessSteel=3,Titanium=4,TungstenSteel=5
              UniversalPipeTier:CASING_BRONZE_PIPE=1,CASING_STEEL_PIPE=2,CASING_TITANIUM_PIPE=3,CASING_TUNGSTENSTEEL_PIPE=4
              UniversalGearboxTier:Not used yet(暂无使用)
              SteamCasingTier:CASING_BRONZE_BRICKS=1,CASING_STEEL_SOLID=2
              SteamFrameTier:Bronze=1,Steel=2
            */
                .or(Predicates.abilities(PartAbility.IMPORT_ITEMS).setPreviewCount(1))
                .or(Predicates.abilities(PartAbility.EXPORT_ITEMS).setPreviewCount(1))
                .or(Predicates.abilities(PartAbility.INPUT_ENERGY).setExactLimit(1))
                .or(Predicates.abilities(GTUFPartAbility.THREAD_HATCH).setPreviewCount(1)))
            .build())
        .model(GTUFModels.createTieredMachineModel(
            GTCEu.id('block/casings/solid/machine_casing_solid_steel'),
            GTCEu.id('block/multiblock/large_chemical_reactor')))
  • Max_parallels = Math.max(1, 2 * tier)

    event.create('kjs_tier_parallel', 'multiblock')
       .machine((holder) => new TierElectricParallelMachine(holder))
       .rotationState(RotationState.ALL)                       
       .appearanceBlock(GCYMBlocks.CASING_INDUSTRIAL_STEAM)    
       .recipeType('forge_hammer')                             
       .recipeModifier((machine, recipe) => TierElectricParallelMachine.recipeModifier(machine, recipe), true)
       .addOutputLimit(ItemRecipeCapability.CAP, 1)           
       .pattern(definition => FactoryBlockPattern.start()
           .aisle('AAAAAA', 'ACCCCA', 'AAAAAA')
           .aisle('AAAAAA', 'ADDDDA', 'AAAAAA')
           .aisle('AAAAAA', 'ACACCA', 'AAAAAA')
           .aisle('AAA###', 'AKA###', 'AAA###')
           .where('#', Predicates.any())
           .where('K', Predicates.controller(Predicates.blocks(definition.get())))
           .where('D', Predicates.blocks('gtceu:bronze_gearbox'))
           .where('C', Predicates.blocks('gtceu:frame_bronze'))
           .where('A', Predicates.blocks('gtceu:industrial_steam_casing').setMinGlobalLimited(45)
               .or(Predicates.abilities(PartAbility.IMPORT_ITEMS).setPreviewCount(1))
               .or(Predicates.abilities(PartAbility.EXPORT_ITEMS).setPreviewCount(1))
               .or(Predicates.abilities(PartAbility.INPUT_ENERGY).setExactLimit(1)))
           .build())
       .model(GTMachineModels.createWorkableCasingMachineModel(
           GTCEu.id('block/casings/gcym/industrial_steam_casing'),
           GTCEu.id('block/multiblock/large_chemical_reactor')))
event.create('kjs_adjustable_steam', 'multiblock')
       .machine((holder) => new AdjustableSteamParallelMachine(
           holder, GTRecipeTypes.MIXER_RECIPES, 64, 64, 0.5, true))
      /* Builder(holder,RecipeType,Base_Parallels,Max_Parallels,Duration,GuiConfig)
         Builder(holder,配方类型,初始并行数,最大并行数,配方时长倍率,并行数是否GUI可调)*/
       .rotationState(RotationState.NON_Y_AXIS)
       .appearanceBlock(GTBlocks.BRONZE_HULL)
       .recipeType('mixer')
       .pattern(definition => FactoryBlockPattern.start()
           .aisle('#######', '#######', '#######', '#######', '#######', '#######')
           .aisle('##A#A##', '##A#A##', '##CCC##', '##CCC##', '##CCC##', '#######')
           .aisle('#######', '#######', '##CCC##', '##CDC##', '##CCC##', '#######')
           .aisle('##A#A##', '##A#A##', '##CCC##', '##CDC##', '##CCC##', '#######')
           .aisle('##BBB##', '#######', '#######', '###D###', '##BBB##', '#######')
           .aisle('#BBBBB#', '##BBB##', '##BBB##', '##BDB##', '#BBBBB#', '##BBB##')
           .aisle('BBEEEBB', '#BF#FB#', '#B###B#', '#BFDFB#', 'BBBBBBB', '#BGGGB#')
           .aisle('BBEDEBB', '#G#D#G#', '#G#D#G#', '#G#D#G#', 'BBBBBBB', '#BGGGB#')
           .aisle('BBEEEBB', '#BF#FB#', '#B###B#', '#BF#FB#', 'BBBBBBB', '#BGGGB#')
           .aisle('#BBBBB#', '##BKB##', '##BGB##', '##BGB##', '#BBBBB#', '##BBB##')
           .aisle('##BBB##', '#######', '#######', '#######', '##BBB##', '#######')
           .where('K', Predicates.controller(Predicates.blocks(definition.get())))
           .where('C', GTUFPatternPredicates.Casing('minecraft:stone').setMinGlobalLimited(20)
               /*
               ⭐⭐⭐GTUF_PatternPredicates.Casing() – Applicable when .appearanceBlock does not match the block you intend to be replaced by hatches.
               ⭐⭐⭐GTUF_PatternPredicates.Casing():适用于当你的.appearanceBlock()与你期望被仓室替换的机械方块不同时。
               */
               .or(Predicates.abilities(PartAbility.STEAM_IMPORT_ITEMS).setPreviewCount(1))
               .or(Predicates.abilities(PartAbility.STEAM_EXPORT_ITEMS).setPreviewCount(1))
               .or(Predicates.abilities(PartAbility.STEAM).setExactLimit(1))
               .or(Predicates.abilities(PartAbility.EXPORT_FLUIDS))
               .or(Predicates.abilities(PartAbility.IMPORT_FLUIDS)))
           .where('B', Predicates.blocks('gtceu:steam_machine_casing'))
           .where('A', Predicates.blocks('gtceu:frame_bronze'))
           .where('F', Predicates.blocks('gtceu:bronze_gearbox'))
           .where('D', Predicates.blocks('gtceu:bronze_pipe_casing'))
           .where('E', Predicates.blocks('gtceu:bronze_firebox_casing'))
           .where('G', Predicates.blocks('minecraft:glass'))
           .where('#', Predicates.any())
           .build())
       .model(GTUFModels.createTieredSteamMachineModel(
           GTCEu.id('block/casings/solid/machine_casing_bronze_plated_bricks'),
           GTCEu.id('block/multiblock/large_chemical_reactor')))
  • Max_Parallel = Base_Parallels * 4 ^ ( CasingTier - 1 )

  • Duration = Base_Duration ^ ( 1 - ( FrameTier - 1 ) * 0.1 )

  • 最大并行数 = 初始并行数 × 4 ^ ( 外壳等级 - 1 )

  • 实际配方时间 = 原始配方时间 ^ ( 1 - ( 框架等级 - 1 ) × 0.1 )

event.create('kjs_enhanceable_steam', 'multiblock')
       .machine((holder) => new EnhanceableSteamMachine(holder, GTRecipeTypes.MIXER_RECIPES, 2))
       //Base_Parallels = 2 (int) *初始并行数可调
       .rotationState(RotationState.NON_Y_AXIS)
       .appearanceBlock(GTBlocks.BRONZE_HULL)
       .recipeType('mixer')
       .pattern(definition => FactoryBlockPattern.start()
           .aisle('AAAAAA', 'ACCCCA', 'AAAAAA')
           .aisle('AAAAAA', 'ACCCCA', 'AAAAAA')
           .aisle('AAAAAA', 'ACCCCA', 'AAAAAA')
           .aisle('AAA###', 'AKA###', 'AAA###')
           .where('#', Predicates.any())
           .where('K', Predicates.controller(Predicates.blocks(definition.get())))
           .where('C', GTUFPatternPredicates.SteamFrameTier())
           .where('A', GTUFPatternPredicates.SteamCasingTier().setMinGlobalLimited(40)
               .or(Predicates.abilities(PartAbility.STEAM_IMPORT_ITEMS).setPreviewCount(1))
               .or(Predicates.abilities(PartAbility.STEAM_EXPORT_ITEMS).setPreviewCount(1))
               .or(Predicates.abilities(PartAbility.STEAM).setExactLimit(1))
               .or(Predicates.abilities(PartAbility.EXPORT_FLUIDS))
               .or(Predicates.abilities(PartAbility.IMPORT_FLUIDS)))
           .build())
       .model(GTUFModels.createTieredSteamMachineModel(
           GTCEu.id('block/casings/solid/machine_casing_bronze_plated_bricks'),
           GTCEu.id('block/multiblock/large_chemical_reactor')))
  • When use EnhancedParallelHatchPartMachine 1 mB Steam = 4 EU , with OC to MV

  • 当使用 EnhancedParallelHatchPartMachine 的蒸汽仓时,1 mB 蒸汽被转换为 4 EU, 且允许超频至 MV

event.create('kjs_industrial_steam', 'multiblock')
       .machine((holder) => new IndustrialSteamMachine(holder, GTRecipeTypes.MIXER_RECIPES, 32))
       //Max_Parallels:32(int) 最大并行数32
       .rotationState(RotationState.NON_Y_AXIS)
       .appearanceBlock(GTBlocks.BRONZE_HULL)
       .recipeType('mixer')
       .pattern(definition => FactoryBlockPattern.start()
           .aisle('AAAAAA', 'ACCCCA', 'AAAAAA')
           .aisle('AAAAAA', 'ACCCCA', 'AAAAAA')
           .aisle('AAAAAA', 'ACCCCA', 'AAAAAA')
           .aisle('AAA###', 'AKA###', 'AAA###')
           .where('#', Predicates.any())
           .where('K', Predicates.controller(Predicates.blocks(definition.get())))
           .where('C', GTUFPatternPredicates.SteamFrameTier())
           .where('A', GTUFPatternPredicates.SteamCasingTier().setMinGlobalLimited(40)
               .or(Predicates.abilities(PartAbility.STEAM_IMPORT_ITEMS).setPreviewCount(1))
               .or(Predicates.abilities(PartAbility.STEAM_EXPORT_ITEMS).setPreviewCount(1))
               .or(Predicates.abilities(PartAbility.STEAM).setExactLimit(1))
               .or(Predicates.abilities(PartAbility.EXPORT_FLUIDS))
               .or(Predicates.abilities(PartAbility.IMPORT_FLUIDS)))
           .build())
       .model(GTUFModels.createTieredSteamMachineModel(
           GTCEu.id('block/casings/solid/machine_casing_bronze_plated_bricks'),
           GTCEu.id('block/multiblock/large_chemical_reactor')))

Clone this wiki locally