-
Notifications
You must be signed in to change notification settings - Fork 0
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,2)) .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')))