Skip to content

Example_MultiBlock

LiangquHMF edited this page Aug 9, 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')))

Clone this wiki locally