Legendary vault-2.0.5-1.21.1
Curse Maven Snippet
What's new
# LegendaryVault — Changelog
**Minecraft 1.21.1 · Fabric · Cobblemon 1.8.0 Compatible**
**UB Natural Spawn Patch for Ultra Space Mod**
---
## v47 — UB Natural Spawn Patch (September 15, 2026)
### Overview
Added **natural Ultra Beast spawning** for all 11 Generation 7 Ultra Beasts to the LegendaryVault v47 natural-spawn system. Ultra Beasts spawn **only** in the `ultraspace:ultra_space` dimension using the existing LegendaryVault NATURAL spawn pipeline. Each UB is assigned to specific biomes and location types matching its lore and habitat.
### Ultra Beasts Added (11 total)
| # | UB | rarityWeight | Biomes | locationTypes | canFly | spawnMode |
|---|---|---|---|---|---|---|
| 1 | Nihilego | 0.35 | crystal_wastes | WATER | true | NATURAL |
| 2 | Buzzwole | 0.30 | ultra_forest, mega_void_forest | LAND, TREE_TOP | false | NATURAL |
| 3 | Pheromosa | 0.30 | ultra_desert | LAND | false | NATURAL |
| 4 | Xurkitree | 0.35 | obsidian_spires | LAND | false | NATURAL |
| 5 | Celesteela | 0.25 | ultra_forest, mega_void_forest | LAND | false | NATURAL |
| 6 | Kartana | 0.30 | ultra_forest | LAND | false | NATURAL |
| 7 | Guzzlord | 0.20 | ultra_desert | LAND | false | NATURAL |
| 8 | Stakataka | 0.20 | obsidian_spires | LAND | false | NATURAL |
| 9 | Blacephalon | 0.20 | ultra_forest, mega_void_forest | LAND | false | NATURAL |
| 10 | Poipole | 0.10 | ultra_desert | LAND | false | NATURAL |
| 11 | Naganadel | 0.10 | all 6 (wiki display only) | AIR, LAND | true | RITUAL |
### Common Spawn Settings (All UBs)
- **Dimension**: `ultraspace:ultra_space` only (enforced by `SpawnConditionChecker.checkDimension()`)
- **Rarity Tier**: `RARE_LEGENDARY` (not MYTHICAL — avoids `allowMythicals` gate)
- **Time**: `ANY` (any time of day)
- **Weather**: `ANY` (weight 1.0)
- **Y Range**: -64 to 320
- **Nearby Block**: `ANY`
- **Moon Phase**: `ANY`
### New Feature: TREE_TOP Spawn Location
This patch introduces `TREE_TOP` as a new `SpawnLocation` enum value, enabling Pokémon to spawn on top of tree canopies.
1. **Enum**: `SpawnLocation.TREE_TOP` added to the existing `SpawnLocation` enum (alongside `LAND`, `AIR`, `WATER`, `WATER_SURFACE`, `UNDERGROUND`, `INDOORS`, `MANMADE`).
2. **Detection** (`SpawnEnvironment.classify()`): A position is classified as TREE_TOP when:
- The block at the position is air with clear collision space
- The block below (the "floor") is a solid, non-empty collision block
- That floor block is a tree block — identified by checking if the block's registry path contains `log`, `leaves`, `_stem`, `mushroom`, or equals `nether_warts`
- There are 2 blocks of clear air above the position
3. **Resolution** (`SpawnPositionResolver.resolveTreeTop()`): Uses the `MOTION_BLOCKING` heightmap (which includes foliage) to find the highest non-air block at a candidate XZ, then verifies the block below that position is actually a tree block (log/leaves/stem/mushroom).
4. **Safety** (`SpawnPositionResolver.isTreeTopSafe()`): Validates that the position has 3 blocks of clear collision space above, no fluid at the position, and the floor block is a tree block with non-empty collision shape.
5. **Multi-location support**: `findSpawnPosition()` and `findPatrolPosition()` now iterate over ALL `entry.getLocationTypes()` per random position attempt. Previously, only the primary `location` was used. Now, entries like Buzzwole (LAND + TREE_TOP) will try both resolution strategies at each candidate position, increasing spawn success rate.
### Special Cases
- **Nihilego**: Uses `location=WATER` and `locationTypes=[WATER]` — spawns in water bodies within crystal_wastes. `canFly=true` allows it to float above water.
- **Buzzwole**: Uses `locationTypes=[LAND, TREE_TOP]` — will spawn on the ground or on top of tree canopies. The only UB with multi-location spawning.
- **Naganadel**: `spawnMode=RITUAL` — excluded from `getNATURAL_SPAWN_POOL()`, so it will NOT spawn naturally. Retained in the registry for PokéTab wiki display and ritual/shrine spawning. All 6 biomes are listed for wiki display purposes only.
This mod has no additional files
