movblock.mov

Custom machines

Define a multiblock machine and its controller.

A custom machine has a definition, process recipes joined by recipe_key, and a crafting recipe for its controller. The controller's hbm:custom_machine_type component names the definition ID.

Definition file: data/<namespace>/hbm/custom_machine/<path>.json. See the paper press example for a complete definition, process recipe and controller recipe.

Definition fields

FieldMeaning and defaultRange
recipe_keyProcess-family key matched by hbm:custom_machine recipes.
nameText component displayed as the machine name.
cellsStructure-cell list relative to the controller.
item_in_count​OptionalItem input positions; default 0.[0, 6]
item_out_count​OptionalItem output positions; default 0.[0, 6]
fluid_in_count​OptionalInput tanks; default 0.[0, 3]
fluid_out_count​OptionalOutput tanks; default 0.[0, 3]
fluid_in_cap​OptionalInput-tank capacity in mB; default 0.[0, \texttt{i32::MAX}]
fluid_out_cap​OptionalOutput-tank capacity in mB; default 0.[0, \texttt{i32::MAX}]
max_power​OptionalHE buffer capacity; default 0. Use a nonnegative capacity.\texttt{i64}
max_heat​OptionalStored-heat limit; default 0.[0, \texttt{i32::MAX}]
max_pollution_cap​OptionalPollution buffer limit; default 0.[0, \texttt{i32::MAX}]
recipe_speed_mult​OptionalPositive divisor of recipe duration; default 1.0.(0, \texttt{f64::MAX}]
recipe_consumption_mult​OptionalPositive multiplier on recipe HE cost per tick; default 1.0.(0, \texttt{f64::MAX}]
generator_mode​OptionalSpends inputs at the start and produces energy during the run when true; default false.
flux_mode​OptionalApplies the recipe's flux requirement when true; default false.

Effective duration, truncated to an integer:

\max\!\left(\frac{\mathrm{duration}}{\mathrm{recipe\_speed\_mult}},1\right)

Effective HE cost per tick, truncated to a long integer:

\max\!\left(\mathrm{power}\cdot\mathrm{recipe\_consumption\_mult},1\right)

Loading

Definitions load when the world opens. Reopen singleplayer or restart the server after changing one. Process and controller crafting recipes refresh with /reload.

© 2026 movblock. Original site text is licensed under CC BY-SA 4.0 unless otherwise noted. Built with Fumadocs.

On this page