# 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.id` | 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` (Optional) | Ceiling spike block state; omit to generate no ceiling spikes. | |
| `stalactite.id` | Registered block ID. | |
| `stalactite.properties` (Optional) | Block-state property names and string values. | |
| `stalagmite` (Optional) | Floor spike block state; omit to generate no floor spikes. | |
| `stalagmite.id` | 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.id` | Registered block ID. | |
| `fluid.properties` (Optional) | Block-state property names and string values. | |
| `exposed_by_fluid` (Optional) | 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; the remaining fields belong beside it.

## Example

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

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