# Ingredients and components

The leafia:ff_pipe_selection predicate and Cursed item components.

## The `leafia:ff_pipe_selection` predicate

The value is `{}`. The predicate matches an item without `hbm:fluid_content`, or whose fluid content has amount 0 and pressure 0, and [claims](https://movblock.mov/ntm-next/wiki/ingredients-and-components.md#changed-component-state) `hbm:fluid_content`. Use it in the `predicates` of an `hbm:matchers` ingredient or a vanilla item predicate. Cursed special-pipe, pump, filter and converter recipes use it.

Ingredient of `data/leafia/recipe/ff_pump.json`:

*Cursed 1.0.0 · Fabric:*

```json
{
  "fabric:type": "hbm:matchers",
  "base": "leafia:ff_duct",
  "components": {"minecraft:block_state": {"style": "2"}},
  "predicates": {"leafia:ff_pipe_selection": {}}
}
```

*Cursed 1.0.0 · NeoForge:*

```json
{
  "neoforge:ingredient_type": "hbm:matchers",
  "base": "leafia:ff_duct",
  "components": {"minecraft:block_state": {"style": "2"}},
  "predicates": {"leafia:ff_pipe_selection": {}}
}
```

## Item components

These components can appear in recipe `components`, loot functions and commands.

| Component | Value |
| - | - |
| `leafia:dfc_catalyst_damage` | Number in `[0, 100]`: accumulated catalyst damage |
| `leafia:dfc_lens_wear` | Integer `[0, i64::MAX]` |
| `leafia:dfc_target_y` | Integer |
| `leafia:upgrade_control_frequency` | String of at most 10 characters |
| `leafia:advisor_open` | Boolean |
| `leafia:control_panel` | NBT compound `{format, panel, skin?}`; another format marks the panel unusable |
| `leafia:crate_labels` | Custom-data compound |
| `leafia:pwr_debris_origin` | Block state `{Name, Properties}` |
| `leafia:rod_thermal` | `{heat, depletion, melting, generosity_timer, spillage, decay, incoming, cooled, nuclear}`, all required |
| `leafia:am_rifle_state` | `{phase, timer, fan, previous_rotation, rotation, has_sound_id, sound_id, fired_at}` |
| `leafia:elevator_cabin` | `{inventory, buttons, displays}` |
| `leafia:elevator_radio` | `{up, down, idle}` |

[Radiation-profile](https://movblock.mov/ntm-next/wiki/cursed/radiation-profiles.md) channel entries also read `minecraft:custom_data` keys such as `alpha_abs` and `gamma_mod`.
