# hbmspace:ravine

Stratified ravines.

Each Y layer starts a new width stratum with chance 1 in `strata_frequency`. A cell is cut when $(dx^2 + dz^2) \times \mathrm{stratum} + dy^2 / \mathrm{taper} < \mathrm{width}$. Cuts are air, with lava at and below `lava_level`; an ellipsoid whose shell holds water is skipped unless `underwater` is set, which fills water below Y 62 and obsidian at and below `lava_level`. On 26.3, a `minecraft:noise` generator whose biomes list a Space carver runs its carving after the surface pass, with vanilla carvers of the same biomes; Space carvers work only in such generators.

## Fields

| Field | Meaning and default | Range |
| - | - | - |
| `probability` | Chance that a source chunk starts the carver. | `[0, 1]` |
| `y` | Vanilla height provider for start heights. | |
| `y_scale` | Vanilla float provider: vertical scale of rooms. | |
| `lava_level` | Vertical anchor at and below which cuts fill with the lava block. | |
| `replaceable` | Block ID, `#tag` or ID list: blocks the carver may cut. | |
| `strata_frequency` | Inverse chance of a new stratum per layer. | `[1, 256]` |
| `strata_scale` | Stratum size: $(1 + r^2 \times \mathrm{strata\_scale})^2$. | `f32` |
| `taper` | Vertical taper. | `f64` |
| `width` | Cut threshold. | `f64` |
| `underwater` | Cuts through water-bearing shells. | |
| `top` | Block ID, `#tag` or ID list: surface blocks. | |
| `filler` | Block ID, `#tag` or ID list: blocks re-topped when exposed. | |

The top-level `type` selects this carver; the remaining fields belong beside it.

## Example

Source path: `data/hbmspace/worldgen/carver/moho/ravine.json`

```json
{
  "type": "hbmspace:ravine",
  "filler": [
    "hbmspace:moho_regolith",
    "hbm:basalt"
  ],
  "lava_level": {
    "absolute": 9
  },
  "probability": 0.02,
  "replaceable": [
    "hbmspace:moho_stone",
    "hbmspace:moho_regolith",
    "hbm:basalt"
  ],
  "strata_frequency": 3,
  "strata_scale": 1.0,
  "taper": 6.0,
  "top": [
    "hbmspace:moho_regolith",
    "hbm:basalt"
  ],
  "underwater": false,
  "width": 1.0,
  "y": {
    "type": "minecraft:biased_to_bottom",
    "inner": 8,
    "max_inclusive": {
      "absolute": 67
    },
    "min_inclusive": {
      "absolute": 20
    }
  },
  "y_scale": 3.0
}
```
