# Assembly Machine

Assembly Factory uses the same recipes.

Uses up to 12 item inputs, one output position, one input fluid and one output fluid. Further output and fluid entries are ignored; a row with more item inputs than slots never matches. Fluid tanks resize to twice the recipe amount, at least 4,000 mB. Each item of a `chance` output rolls separately; a weighted choice between items outputs only into an empty slot.

## Fields

| Field | Meaning and default | Range |
| - | - | - |
| `type` | Selects the `hbm:assembly_machine` recipe format. | |
| `name` (Optional) | Internal lookup name; defaults to the last segment of the recipe resource path. | |
| `input_items` (Optional) | Ordered counted item inputs; defaults to an empty list. | |
| `input_items.ingredient` | Item ID, item tag, or loader ingredient object. | |
| `input_items.count` (Optional) | Items required from one stack; default 1. The item stack limit bounds a usable count. | `[1, i32::MAX]` |
| `input_items.components` (Optional) | Exact item-component values. | |
| `input_items.predicates` (Optional) | Item-component predicates. | |
| `input_fluids` (Optional) | Ordered fluid inputs with amount and pressure; defaults to an empty list. | |
| `input_fluids.type` | Registered fluid ID. | |
| `input_fluids.amount` | Amount in mB; use $[1, \mathrm{tank\ capacity}]$ for transfers because machine code casts to int. | `i64` |
| `input_fluids.pressure` (Optional) | Pressure level; default 0. | `i32` |
| `output_items` (Optional) | Fixed or weighted item-output positions; defaults to an empty list. | |
| `output_items.item ID` | Fixed output: String form for one item. | |
| `output_items.id` | Item ID in a stack object. | |
| `output_items.count` (Optional) | Stack size; default 1. | `[1, 99]` |
| `output_items.components` (Optional) | Item-component values. | |
| `output_items.chance` (Optional) | Output chance; omit for a guaranteed output. Some machines roll each item of the stack separately. | Rounds to weight `[1, 999]` of 1000 |
| `output_items.data` | Weighted choice: Stack object or an empty object for no output. | |
| `output_items.weight` | Relative selection weight; a positive total selects an output. | `[0, i32::MAX]` each; $\sum_i w_i \le \texttt{i32::MAX}$ |
| `output_fluids` (Optional) | Ordered fluid outputs with amount and pressure; defaults to an empty list. | |
| `output_fluids.type` | Registered fluid ID. | |
| `output_fluids.amount` | Amount in mB; use $[1, \mathrm{tank\ capacity}]$ for transfers because machine code casts to int. | `i64` |
| `output_fluids.pressure` (Optional) | Pressure level; default 0. | `i32` |
| `duration` | Process duration in ticks; defaults to 0. | `i32` |
| `power` | HE demand; defaults to 0. | `i64` |
| `icon` (Optional) | Stack template displayed for the recipe; otherwise derived from the output. | |
| `icon.id` | Item ID. | |
| `icon.count` (Optional) | Stack size; default 1. | `[1, 99]` |
| `icon.components` (Optional) | Item-component values. | |
| `icon_from_input` (Optional) | Derives the display icon from the first item input when true; defaults to false. | |
| `name_wrapper` (Optional) | Translation key applied around the displayed recipe name. | |
| `custom_localization` (Optional) | Resolves the internal name as a translation key when true; defaults to false. | |
| `blueprint_pools` (Optional) | Blueprint pools containing the recipe; a pooled recipe needs a blueprint of one of them in the machine. | |
| `blueprint_pools_528` (Optional) | Replaces blueprint_pools while the enable_528 flag holds. | |
| `auto_switch_group` (Optional) | Translation key grouping recipes; the machine switches to the group member whose first item input matches its first input slot. | |
| `order` (Optional) | Sort position within the recipe table; lower values first, default 2147483647. | `i32` |

## Example

Source path: `data/hbm/recipe/assembly_machine/ass.dalekanium.json`

```json
{
  "type": "hbm:assembly_machine",
  "duration": 200,
  "input_items": [
    {
      "ingredient": "hbm:block_meteor"
    }
  ],
  "order": 14,
  "output_items": [
    "hbm:plate_dalekanium"
  ],
  "power": 100
}
```
