# Electric Arc Furnace

The furnace converts each item of a stack separately, using the first input position; `count` is ignored. A row applies in solid mode only with `output_items` and in molten mode only with `output_materials`. Authored rows apply before rows derived from material tags, [material distribution](https://movblock.mov/ntm-next/26.3/wiki/recipes/material-distribution.md) and smelting recipes; a derived row is dropped when an earlier row covers the same input stack in the same mode. In molten mode, foundry scraps melt into their own material before any row applies; scraps with other component changes are refused.

## Fields

| Field | Meaning and default | Range |
| - | - | - |
| `type` | Selects the `hbm:arc_furnace` recipe format. | |
| `name` (Optional) | Internal lookup name; defaults to the last segment of the recipe resource path. | |
| `input_items` | 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. | |
| `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}$ |
| `order` (Optional) | Sort position within the recipe table; lower values first, default 2147483647. | `i32` |
| `output_materials` (Optional) | Molten-mode material stacks poured per input item; default empty. | |
| `output_materials.material` | NTM material name. | |
| `output_materials.amount` | Quantity in NTM material units. | `i32` |

Solid mode produces the first entry of the first `output_items` position once per input item; weights and `chance` are ignored.

## Example

Source path: `data/hbm/recipe/arc_furnace/arc.sand_quartz.json`

```json
{
  "type": "hbm:arc_furnace",
  "input_items": [
    {
      "ingredient": "hbm:sand_quartz"
    }
  ],
  "order": 10,
  "output_items": [
    "hbm:glass_quartz"
  ]
}
```
