# ChanceMapping

Используется для описания состава жилы.
Определяет правила замены базовых блоков на руду в жилах. 
**Для каждого блока жилы выбор правила происходит заново.**

## Как работает

Для **каждого блока** в жиле выполняется:
1. **Случайный выбор правила** из списка по весам (`chance`)
2. **Проверка замены**: ищем блок в `mapping` выбранного правила
3. **Применение или пропуск**: если нашли — заменяем, нет — оставляем как есть

### Правило - ChanceMapping
```json
{
  "chance": 1.0,           // Вес этого правила
  "mapping": {            // Словарь замен
    "базовый_блок": "целевой_блок"
  }
}
```

### Состав жилы - ChanceMapping[]
```json
[
  {
    "chance": 1.0,
    "mapping": {
      "minecraft:stone": "minecraft:iron_ore",
      "minecraft:deepslate": "minecraft:deepslate_iron_ore"
    }
  },
  {
    "chance": 7.0,
    "mapping": {
      "minecraft:stone": "minecraft:gravel"
    }
  },
  {
    "chance": 2.0,
    "mapping": {
      "minecraft:stone": "minecraft:tuff"
    }
  }
]
```

## Детали алгоритма



### Что происходит блок за блоком

Допустим, жила состоит из 4 блоков камня (stone):

Блок 1:

    Выпал гравий → заменяем stone на gravel

Блок 2:

    Выпало железо → заменяем stone на iron_ore

Блок 3:

    Снова гравий → stone на gravel

Блок 4:

    Выпал туф → stone на tuff

Итог: [gravel, iron_ore, gravel, tuff] — каждый блок выбирался независимо!

### Вероятности

Для примера выше:

    Гравий: 70% (7 из 10)

    Железо: 10% (1 из 10)

    Туф: 20% (2 из 10)

В большой жиле распределение будет примерно соответствовать этим процентам.