# Annihilator

Choose exactly one top-level tally identity: `item`, `fluid`, or `stack`.

## Fields

| Field | Meaning and default | Range |
| - | - | - |
| `type` | Selects the `hbm:annihilator` recipe format. | |
| `item` | Item ID or item tag tallied by item count. | |
| `fluid` | Fluid ID tallied in mB. | |
| `stack` | Stack template tallied by item and NTM subtype; its count and other components are ignored. | |
| `stack.id` | Item ID. | |
| `stack.count` (Optional) | Stack size; default 1. | `[1, 99]` |
| `stack.components` (Optional) | Item-component values. | |
| `milestones` | Payout thresholds. | |
| `milestones.amount` | Tally threshold as a decimal integer string. | Unbounded signed integer |
| `milestones.payout.id` | Payout item ID. | |
| `milestones.payout.count` (Optional) | Payout stack size; default 1. | `[1, 99]` |
| `milestones.payout.components` (Optional) | Payout item-component values. | |

The format has no shared recipe fields such as `name` or `order`. Each Annihilator adds destroyed items and fluids to the tallies of its named pool. A destroyed item counts toward its `item` tally, its `stack` tally and the tally of each item tag it carries. A deposit pays at most the highest milestone it crosses in each tally; when several tallies pay at once, a tag payout applies before a `stack` payout, and a `stack` payout before an `item` payout. Among files with the same identity, the last resource ID applies.

The loader condition on this example is described under [Recipe conditions](https://movblock.mov/ntm-next/26.3/wiki/recipes/conditions.md).

## Example

Source path: `data/hbm/recipe/annihilator/item_ammo_arty.json`

*NTM 1.0.4 · Fabric:*

```json
{
  "fabric:load_conditions": [
    {
      "type": "hbm:flag",
      "name": "enable_528"
    }
  ],
  "type": "hbm:annihilator",
  "item": "hbm:ammo_arty",
  "milestones": [
    {
      "amount": "128",
      "payout": {
        "components": {
          "hbm:blueprint_pool": "528.arty"
        },
        "id": "hbm:blueprints"
      }
    }
  ]
}
```

*NTM 1.0.4 · NeoForge:*

```json
{
  "neoforge:conditions": [
    {
      "type": "hbm:flag",
      "name": "enable_528"
    }
  ],
  "type": "hbm:annihilator",
  "item": "hbm:ammo_arty",
  "milestones": [
    {
      "amount": "128",
      "payout": {
        "components": {
          "hbm:blueprint_pool": "528.arty"
        },
        "id": "hbm:blueprints"
      }
    }
  ]
}
```
