Example Prize Box Structure Explanation
=======================================

The JSON in `_example_box.json` is a complete skeleton that mirrors all the keys the loader currently understands.
Treat the line numbers referenced below as "side-by-side" anchors for the fields shown in the example file.

1. Top-level keys
-----------------
- **`replace`**: Set to `true` when the whole tier should override any previously registered data (common for datapack tiers); set to `false` (or omit it) to merge additional pools with earlier definitions.
- **`pools`**: An array of independent loot pools. Each pool acts like a weighted roll group whose results simply concatenate when the tier is generated.

2. Pool-level details
---------------------
| Pool | Explanation |
|------|-------------|
| First pool (`rolls`: 2) | Fires twice per prize box use. Each roll samples one of the entries below (type-item or type-tag) according to their relative weights. |
| Second pool (`rolls`: 1) | Fires once and guarantees a chance at higher-tier curios/coins because the weights there are tuned differently. |
| Third pool (no `rolls`) | Omitting `rolls` defaults to 1 roll. Use this to keep a terse definition when you only need a single selection. |

3. Entry attributes (each entry goes inside a pool)
---------------------------------------------------
- **`type`**: Either `"item"` to reference a specific item or `"tag"` to expand a tag. Tags reuse vanilla/ mod tags (e.g., `cobblemoncreatified:medicine`) so future datapack drops can stay centralized.
- **`id`**: A resource location that points to the item (e.g., `minecraft:emerald`) or the tag you want to draw from.
- **`weight`**: Relative rarity within the same pool. Higher weights are more likely; zero or negative weights are ignored, so keep it positive.
- **`min`/`max`**: The stack size delivered when that entry is chosen. `min` is clamped to at least 1, and `max` is treated as an upper bound. `Mth.nextInt(random, min, max)` is used, so setting both equal gives a fixed count.

4. Example entry callouts
-------------------------
- Pool 1: `example_prize_token` (weight 5) and the `prize_box_loot` tag (weight 3) show how to mix single-shot rewards with tag-based scopes. `exp_candy_m` illustrates a fixed-size reward (`min == max == 1`).
- Pool 2: Includes vanilla `emerald` for currency, a Cobblemon medicine tag to ensure consumables can be swapped by datapacks, and the `relic_coin` item for a guaranteed collectible.
- Pool 3: Demonstrates a cheap filler pool (coal + wild berries) that lacks an explicit `rolls`, so it fires once on every box open; use this pattern for guaranteed freebies.

5. Extensibility notes
-----------------------
- You can define as many pools as needed; tiers merge across datapacks so using `replace: true` is a safe way to rebuild a tier from scratch, while omitting it lets contributors add extra pools without clobbering each other.
- The loot manager ignores additional keys, so you can add helper fields like `_comment` or `meta` in your own copies if you want to tag sources; keep in mind those fields will be ignored during loading.
