MI Multiblock Editor
is a KubeJS-powered tool for modpack developers that allows you to replace and customize the structures of existing Modern Industrialization multiblock machines without creating a separate addon for every change.
Multiblock layouts are defined directly in KubeJS startup scripts. You can assign normal blocks, block tags, exact block states, hatch-compatible positions, and multiple structure variants for machines with different tiers or configurations.
The mod includes dedicated support for more complex Modern Industrialization multiblocks such as the Electric Blast Furnace, Distillation Tower, Large Tank, Nuclear Reactor, Steam Boilers and Fusion Reactor, as well as compatibility with selected machines from Extended Industrialization, Industrialization Overdrive and Yet Another Industrialization!.
MI Multiblock Editor is designed primarily for modpack authors who want full control over machine structures while keeping the original machines, recipes and mechanics intact.
Example
Place the script in:
kubejs/startup_scripts/
For example, this replaces the structure of the Vacuum Freezer:
MIMultiblocks
.create('example:vacuum_freezer')
.controller(
'modern_industrialization:vacuum_freezer'
)
.hatchCasing(
'modern_industrialization:frostproof_machine_casing'
)
.layer([
'ABA',
'A#A',
'ACA'
])
.layer([
'AAA',
'A A',
'AAA'
])
.layer([
'AAA',
'AAA',
'AAA'
])
.mappingBlock(
'A',
'modern_industrialization:frostproof_machine_casing',
[
'modern_industrialization:item_input',
'modern_industrialization:item_output',
'modern_industrialization:fluid_input',
'modern_industrialization:fluid_output',
'modern_industrialization:energy_input'
]
)
.mappingTag(
'B',
'minecraft:logs',
'minecraft:oak_log',
[]
)
.mappingState(
'C',
'minecraft:oak_log[axis=y]',
[]
)
.register();
In a structure:
#marks the controller.Spacesare ignored positions..mappingBlock()accepts a block and optionally allows specific hatch types in its place..mappingTag()accepts any block from a tag and specifies a block used for the structure preview..mappingState()requires an exact block state..variant()can be used for machines with multiple structure tiers or configurations..requiresMod()allows scripts to safely define structures for optional addon mods.
Because the API is registered during the KubeJS startup phase, changes to these scripts require a full game restart.

