# hbm:ore_cave

Forms an ore-lined noise cave with optional fluid and cave spikes.

## Fields

| Field | Meaning and default | Range |
| - | - | - |
| `domain` | Noise-domain ID shaping the cave. | |
| `max_range` | Upper range before cave half-height folds back. | `i32` |
| `ore` | Ore block state used in the cave wall. | |
| `ore.Name` | Registered block ID. | |
| `ore.Properties` (Optional) | Block-state property names and string values. | |
| `range_mult` | Converts noise above the threshold into vertical half-height. | `i32` |
| `replaceable` | Vanilla rule test selecting blocks to replace. | |
| `replaceable.predicate_type` | Vanilla rule-test type. | |
| `replaceable.tag` (Optional) | Block tag for tag_match. | |
| `replaceable.block` (Optional) | Block ID for block_match. | |
| `stalactite` (until NTM 1.0.2) | Ceiling spike block state. | |
| `stalactite.Name` | Registered block ID. | |
| `stalactite.Properties` (Optional) | Block-state property names and string values. | |
| `stalactite` (Optional; since NTM 1.0.2) | Ceiling spike block state; omit to generate no ceiling spikes. | |
| `stalactite.Name` | Registered block ID. | |
| `stalactite.Properties` (Optional) | Block-state property names and string values. | |
| `stalagmite` (until NTM 1.0.2) | Floor spike block state. | |
| `stalagmite.Name` | Registered block ID. | |
| `stalagmite.Properties` (Optional) | Block-state property names and string values. | |
| `stalagmite` (Optional; since NTM 1.0.2) | Floor spike block state; omit to generate no floor spikes. | |
| `stalagmite.Name` | Registered block ID. | |
| `stalagmite.Properties` (Optional) | Block-state property names and string values. | |
| `threshold` | Minimum horizontal noise value for a cave column. | finite `f64` |
| `y_level` | Centre Y of the cave band. | `i32` |
| `fluid` (Optional) | Fluid block state placed in enclosed pockets. | |
| `fluid.Name` | Registered block ID. | |
| `fluid.Properties` (Optional) | Block-state property names and string values. | |
| `exposed_by_fluid` (Optional; since NTM 1.0.2) | Treats a neighboring fluid block as an exposed cave wall, like air or a cave spike; default false. | |

The top-level `type` selects this feature; `config` supplies the fields above.

## Example

Source path: `data/hbm/worldgen/configured_feature/ore_cave_asbestos.json`

*NTM 1.0.0:*

```json
{
  "type": "hbm:ore_cave",
  "config": {
    "domain": "hbm:noise/ore_cave_asbestos",
    "max_range": 20,
    "ore": {
      "Name": "hbm:stone_resource_asbestos"
    },
    "range_mult": 20,
    "replaceable": {
      "predicate_type": "minecraft:tag_match",
      "tag": "minecraft:stone_ore_replaceables"
    },
    "stalactite": {
      "Name": "hbm:stalactite_asbestos",
      "Properties": {
        "waterlogged": "false"
      }
    },
    "stalagmite": {
      "Name": "hbm:stalagmite_asbestos",
      "Properties": {
        "waterlogged": "false"
      }
    },
    "threshold": 1.75,
    "y_level": 25
  }
}
```

*NTM 1.0.1–1.0.4:*

```json
{
  "type": "hbm:ore_cave",
  "config": {
    "domain": "hbm:noise/ore_cave_asbestos",
    "max_range": 20,
    "ore": {
      "Name": "hbm:stone_resource_asbestos"
    },
    "range_mult": 20,
    "replaceable": {
      "predicate_type": "minecraft:tag_match",
      "tag": "minecraft:base_stone_overworld"
    },
    "stalactite": {
      "Name": "hbm:stalactite_asbestos",
      "Properties": {
        "waterlogged": "false"
      }
    },
    "stalagmite": {
      "Name": "hbm:stalagmite_asbestos",
      "Properties": {
        "waterlogged": "false"
      }
    },
    "threshold": 1.75,
    "y_level": 25
  }
}
```
