File Layout
Config-generated blocks
Masterful Machinery reads generated controller, port, and extra-block definitions from the instance config folder:
.minecraft/config/mm/
├─ controllers/
│ └─ my_controller.json
├─ ports/
│ └─ my_item_port.json
└─ extras/
└─ my_circuit.json
The config loaders recursively scan those folders and load files ending in .json.
Datapack data
Structures and processes are datapack content:
<datapack>/
├─ pack.mcmeta
└─ data/
└─ mypack/
└─ mm/
├─ structures/
│ └─ my_structure.json
└─ processes/
└─ my_recipe.json
The runtime ids are derived from the datapack namespace and path. For example:
data/mypack/mm/structures/coke_oven.json
becomes:
mypack:coke_oven
and:
data/mypack/mm/processes/coke_oven/charcoal.json
becomes:
mypack:coke_oven/charcoal
KubeJS alternative
If KubeJS is installed, the source exposes the MMEvents event group:
MMEvents.registerControllers(event => {}) // startup
MMEvents.registerPorts(event => {}) // startup
MMEvents.registerExtraBlocks(event => {}) // startup
MMEvents.createStructures(event => {}) // server
MMEvents.createProcesses(event => {}) // server
Controllers and ports are startup content. Structures and process recipes are server content.