Phase 4: veins in every chunk, drops for the mobs the island lacks
Ore veins: make_world.py loads the island again row by row until Regenerating Ore Veins has filled every chunk (/cobblesurvival veins unfilled), cave tiers sit at their biome's depths, small zones get denser veins, showcase veins are full size. The world report checks surface tiers against the zone grid, cave tiers within two biome cells of their cave, and fails on unfilled chunks; the template passes (37,689 chunks). Drops: tools/drop_audit.py checks every creature drop a recipe or brewing needs (docs/pokemon-drops.md). Blaze rods, ghast tears, breeze rods, shulker shells and nether stars now drop from Pokemon through species additions (self-test drop_additions_apply). The field guide counts vanilla mobs as absent, applies species additions and reads the veins as sources. Cobblebase tried (loads, self-tests pass) and left out until Adrian decides its scope. Phase 4 checklist with the open questions. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
5d275e4e14
commit
1a1fb93da8
33 files changed
+1279
-126
No files matched your search
@@ -0,0 +1,137 @@
|
||||
{
|
||||
"_comment": "Generated by tools/zone_ores.py from world/zones.json; extra item sources for the field guide.",
|
||||
"sources": [
|
||||
{
|
||||
"item": "minecraft:coal",
|
||||
"how": "Regenerating coal vein in Button Isle",
|
||||
"kind": "ore vein",
|
||||
"needs": []
|
||||
},
|
||||
{
|
||||
"item": "minecraft:raw_copper",
|
||||
"how": "Regenerating copper vein in Southwold",
|
||||
"kind": "ore vein",
|
||||
"needs": []
|
||||
},
|
||||
{
|
||||
"item": "minecraft:raw_iron",
|
||||
"how": "Regenerating iron vein in Westmarch",
|
||||
"kind": "ore vein",
|
||||
"needs": []
|
||||
},
|
||||
{
|
||||
"item": "minecraft:redstone",
|
||||
"how": "Regenerating redstone vein in Verdant Jungle",
|
||||
"kind": "ore vein",
|
||||
"needs": []
|
||||
},
|
||||
{
|
||||
"item": "minecraft:lapis_lazuli",
|
||||
"how": "Regenerating lapis vein in Highland Meadows",
|
||||
"kind": "ore vein",
|
||||
"needs": []
|
||||
},
|
||||
{
|
||||
"item": "minecraft:raw_gold",
|
||||
"how": "Regenerating gold vein in Sunscorch",
|
||||
"kind": "ore vein",
|
||||
"needs": []
|
||||
},
|
||||
{
|
||||
"item": "minecraft:emerald",
|
||||
"how": "Regenerating emerald vein in Frostpeak Range",
|
||||
"kind": "ore vein",
|
||||
"needs": []
|
||||
},
|
||||
{
|
||||
"item": "minecraft:amethyst_block",
|
||||
"how": "Regenerating amethyst vein in Dripstone Depths",
|
||||
"kind": "ore vein",
|
||||
"needs": []
|
||||
},
|
||||
{
|
||||
"item": "minecraft:amethyst_shard",
|
||||
"how": "Regenerating amethyst vein in Dripstone Depths",
|
||||
"kind": "ore vein",
|
||||
"needs": []
|
||||
},
|
||||
{
|
||||
"item": "minecraft:diamond",
|
||||
"how": "Regenerating diamond vein in Deep Dark",
|
||||
"kind": "ore vein",
|
||||
"needs": []
|
||||
},
|
||||
{
|
||||
"item": "minecraft:quartz",
|
||||
"how": "Regenerating quartz vein in Basalt Furnace",
|
||||
"kind": "ore vein",
|
||||
"needs": []
|
||||
},
|
||||
{
|
||||
"item": "minecraft:ancient_debris",
|
||||
"how": "Regenerating netherite vein in Basalt Furnace",
|
||||
"kind": "ore vein",
|
||||
"needs": []
|
||||
},
|
||||
{
|
||||
"item": "cobblemon:thunder_stone",
|
||||
"how": "Regenerating thunder stone vein in Westmarch",
|
||||
"kind": "ore vein",
|
||||
"needs": []
|
||||
},
|
||||
{
|
||||
"item": "cobblemon:shiny_stone",
|
||||
"how": "Regenerating shiny stone vein in Lush Caves",
|
||||
"kind": "ore vein",
|
||||
"needs": []
|
||||
},
|
||||
{
|
||||
"item": "cobblemon:leaf_stone",
|
||||
"how": "Regenerating leaf stone vein in Verdant Jungle",
|
||||
"kind": "ore vein",
|
||||
"needs": []
|
||||
},
|
||||
{
|
||||
"item": "cobblemon:water_stone",
|
||||
"how": "Regenerating water stone vein in Mangrove Mire",
|
||||
"kind": "ore vein",
|
||||
"needs": []
|
||||
},
|
||||
{
|
||||
"item": "cobblemon:moon_stone",
|
||||
"how": "Regenerating moon stone vein in Dripstone Depths",
|
||||
"kind": "ore vein",
|
||||
"needs": []
|
||||
},
|
||||
{
|
||||
"item": "cobblemon:sun_stone",
|
||||
"how": "Regenerating sun stone vein in Highland Meadows",
|
||||
"kind": "ore vein",
|
||||
"needs": []
|
||||
},
|
||||
{
|
||||
"item": "cobblemon:fire_stone",
|
||||
"how": "Regenerating fire stone vein in Sunscorch",
|
||||
"kind": "ore vein",
|
||||
"needs": []
|
||||
},
|
||||
{
|
||||
"item": "cobblemon:ice_stone",
|
||||
"how": "Regenerating ice stone vein in Frostpeak Range",
|
||||
"kind": "ore vein",
|
||||
"needs": []
|
||||
},
|
||||
{
|
||||
"item": "cobblemon:dawn_stone",
|
||||
"how": "Regenerating dawn stone vein in Frostpeak Range",
|
||||
"kind": "ore vein",
|
||||
"needs": []
|
||||
},
|
||||
{
|
||||
"item": "cobblemon:dusk_stone",
|
||||
"how": "Regenerating dusk stone vein in Deep Dark",
|
||||
"kind": "ore vein",
|
||||
"needs": []
|
||||
}
|
||||
]
|
||||
}
|
||||
+13
-13
@@ -1,5 +1,5 @@
|
||||
{
|
||||
"_comment": "Zone plan for Phase 3 (model approved by Adrian 2026-10-29; levels are placeholders, see docs/balance.md). tools/zone_layout.py assigns each surface cell of the island to the first zone whose rule matches, in this order, and renders build/zone-map.png. Rules: 'within' = distance from 0,0 in blocks; 'biomes' = cells of these biomes, clusters smaller than min_cells dropped, plus 'absorb' = cells of other biomes within that many blocks of the cluster; 'region' = what is left, by half-plane (x/z bounds in blocks); 'water' = sea cells of these biomes. Biomes in 'inherit' (rivers) take the zone of the land around them. Cave zones follow the cave biome everywhere under the island and are not drawn. 'lines' = how many evolution lines tools/zone_spawns.py aims to give the zone (scaled to the lines available); 'species' pins a line to a zone by hand. 'guardian': the zone's Alpha guardian (tools/zone_spawns.py picks the strongest Pokémon spawning in the zone unless 'species' is given, at the band's top level + 5) and its drops, which help with the next zone; it stands at the zone's sample point and returns guardian_respawn_hours after it is beaten (Adrian, 2026-10-29: fixed spots, 5 hours). 'ores': Phase 4 ore tiers for Regenerating Ore Veins (tools/zone_ores.py writes the mod's config from them). Each tier has veins in exactly one zone, higher tiers in higher zones; Cobblemon's evolution stones are tiers too, since their natural ores are off. 'stone'/'deepslate' split a tier into an upper vein (y >= 0) and a lower one; 'blocks' is a weighted list for one vein. 'radius' in blocks, 'y' range, 'spacing' in chunks between candidate chunks, 'regen_minutes' of real time, plus 'jitter' (share of the interval), 'fill' and 'attempts' from 'ore_defaults'. 'showcase': the template gets one hand-placed vein of the tier at its zone's sample point. 'level_pressure': a Pokémon more than grace_levels above the band of the zone its trainer stands in gets per_level less experience per extra level, down to minimum (Exp. Candy and commands excepted).",
|
||||
"_comment": "Zone plan for Phase 3 (model approved by Adrian 2026-10-29; levels are placeholders, see docs/balance.md). tools/zone_layout.py assigns each surface cell of the island to the first zone whose rule matches, in this order, and renders build/zone-map.png. Rules: 'within' = distance from 0,0 in blocks; 'biomes' = cells of these biomes, clusters smaller than min_cells dropped, plus 'absorb' = cells of other biomes within that many blocks of the cluster; 'region' = what is left, by half-plane (x/z bounds in blocks); 'water' = sea cells of these biomes. Biomes in 'inherit' (rivers) take the zone of the land around them. Cave zones follow the cave biome everywhere under the island and are not drawn. 'lines' = how many evolution lines tools/zone_spawns.py aims to give the zone (scaled to the lines available); 'species' pins a line to a zone by hand. 'guardian': the zone's Alpha guardian (tools/zone_spawns.py picks the strongest Pokémon spawning in the zone unless 'species' is given, at the band's top level + 5) and its drops, which help with the next zone; it stands at the zone's sample point and returns guardian_respawn_hours after it is beaten (Adrian, 2026-10-29: fixed spots, 5 hours). 'ores': Phase 4 ore tiers for Regenerating Ore Veins (tools/zone_ores.py writes the mod's config from them). Each tier has veins in exactly one zone, higher tiers in higher zones; Cobblemon's evolution stones are tiers too, since their natural ores are off. 'stone'/'deepslate' split a tier into an upper vein (y >= 0) and a lower one; 'blocks' is a weighted list for one vein. 'radius' in blocks, 'y' range, 'spacing' in chunks between candidate chunks, 'regen_minutes' of real time, plus 'jitter' (share of the interval), 'fill' and 'attempts' from 'ore_defaults'. Cave tiers' 'y' follows where their biome lies (the biome preview: Deep Dark mostly below y -24, the other three between 0 and 40), and they get more 'attempts', since each try lands at a random height. 'showcase': the template gets one hand-placed vein of the tier near its zone's sample point (vein '<tier>_showcase': radius 2, never generates by itself). 'level_pressure': a Pokémon more than grace_levels above the band of the zone its trainer stands in gets per_level less experience per extra level, down to minimum (Exp. Candy and commands excepted).",
|
||||
"min_cells": 6,
|
||||
"inherit": ["minecraft:river"],
|
||||
"guardian_respawn_hours": 5,
|
||||
@@ -11,22 +11,22 @@
|
||||
"iron": {"zone": "westmarch", "stone": "minecraft:iron_ore", "deepslate": "minecraft:deepslate_iron_ore", "radius": [1, 2], "y": [-48, 90], "spacing": 5, "regen_minutes": 40, "attempts": 2, "showcase": true},
|
||||
"redstone": {"zone": "jungle", "stone": "minecraft:redstone_ore", "deepslate": "minecraft:deepslate_redstone_ore", "radius": [1, 2], "y": [-56, 60], "spacing": 6, "regen_minutes": 45, "showcase": true},
|
||||
"lapis": {"zone": "highlands", "stone": "minecraft:lapis_ore", "deepslate": "minecraft:deepslate_lapis_ore", "radius": [1, 2], "y": [-56, 80], "spacing": 6, "regen_minutes": 45, "showcase": true},
|
||||
"gold": {"zone": "sunscorch", "stone": "minecraft:gold_ore", "deepslate": "minecraft:deepslate_gold_ore", "radius": [1, 2], "y": [-48, 120], "spacing": 6, "regen_minutes": 60, "showcase": true},
|
||||
"emerald": {"zone": "frostpeak", "stone": "minecraft:emerald_ore", "deepslate": "minecraft:deepslate_emerald_ore", "radius": [1, 1], "y": [-16, 320], "spacing": 7, "regen_minutes": 75, "showcase": true},
|
||||
"amethyst": {"zone": "dripstone", "blocks": [["minecraft:amethyst_block", 3], ["minecraft:budding_amethyst", 1]], "radius": [1, 1], "y": [-64, 64], "spacing": 8, "regen_minutes": 120},
|
||||
"diamond": {"zone": "deep_dark", "deepslate": "minecraft:deepslate_diamond_ore", "radius": [1, 1], "y": [-64, 0], "spacing": 7, "regen_minutes": 90},
|
||||
"quartz": {"zone": "basalt", "blocks": [["minecraft:nether_quartz_ore", 1]], "radius": [1, 2], "y": [-64, 64], "spacing": 6, "regen_minutes": 60},
|
||||
"netherite": {"zone": "basalt", "blocks": [["minecraft:ancient_debris", 1]], "radius": [0, 1], "y": [-64, 32], "spacing": 10, "regen_minutes": 180},
|
||||
"gold": {"zone": "sunscorch", "stone": "minecraft:gold_ore", "deepslate": "minecraft:deepslate_gold_ore", "radius": [1, 2], "y": [-48, 120], "spacing": 5, "regen_minutes": 60, "showcase": true, "attempts": 2},
|
||||
"emerald": {"zone": "frostpeak", "stone": "minecraft:emerald_ore", "deepslate": "minecraft:deepslate_emerald_ore", "radius": [1, 1], "y": [-16, 320], "spacing": 6, "regen_minutes": 75, "showcase": true, "attempts": 2},
|
||||
"amethyst": {"zone": "dripstone", "blocks": [["minecraft:amethyst_block", 3], ["minecraft:budding_amethyst", 1]], "radius": [1, 1], "y": [0, 40], "spacing": 10, "regen_minutes": 120, "attempts": 4},
|
||||
"diamond": {"zone": "deep_dark", "deepslate": "minecraft:deepslate_diamond_ore", "radius": [1, 1], "y": [-64, -24], "spacing": 10, "regen_minutes": 90, "attempts": 3},
|
||||
"quartz": {"zone": "basalt", "blocks": [["minecraft:nether_quartz_ore", 1]], "radius": [1, 2], "y": [0, 40], "spacing": 8, "regen_minutes": 60, "attempts": 3},
|
||||
"netherite": {"zone": "basalt", "blocks": [["minecraft:ancient_debris", 1]], "radius": [0, 1], "y": [0, 40], "spacing": 14, "regen_minutes": 180, "attempts": 2},
|
||||
"thunder_stone": {"zone": "westmarch", "stone": "cobblemon:thunder_stone_ore", "deepslate": "cobblemon:deepslate_thunder_stone_ore", "radius": [0, 1], "y": [-48, 100], "spacing": 8, "regen_minutes": 60},
|
||||
"shiny_stone": {"zone": "lush_caves", "stone": "cobblemon:shiny_stone_ore", "deepslate": "cobblemon:deepslate_shiny_stone_ore", "radius": [0, 1], "y": [-64, 64], "spacing": 8, "regen_minutes": 60},
|
||||
"shiny_stone": {"zone": "lush_caves", "stone": "cobblemon:shiny_stone_ore", "deepslate": "cobblemon:deepslate_shiny_stone_ore", "radius": [0, 1], "y": [-16, 40], "spacing": 10, "regen_minutes": 60, "attempts": 4},
|
||||
"leaf_stone": {"zone": "jungle", "stone": "cobblemon:leaf_stone_ore", "deepslate": "cobblemon:deepslate_leaf_stone_ore", "radius": [0, 1], "y": [-48, 100], "spacing": 8, "regen_minutes": 60},
|
||||
"water_stone": {"zone": "mire", "stone": "cobblemon:water_stone_ore", "deepslate": "cobblemon:deepslate_water_stone_ore", "radius": [0, 1], "y": [-48, 100], "spacing": 8, "regen_minutes": 60, "showcase": true},
|
||||
"moon_stone": {"zone": "dripstone", "blocks": [["cobblemon:dripstone_moon_stone_ore", 1], ["cobblemon:moon_stone_ore", 1], ["cobblemon:deepslate_moon_stone_ore", 1]], "radius": [0, 1], "y": [-64, 64], "spacing": 8, "regen_minutes": 60},
|
||||
"moon_stone": {"zone": "dripstone", "blocks": [["cobblemon:dripstone_moon_stone_ore", 1], ["cobblemon:moon_stone_ore", 1], ["cobblemon:deepslate_moon_stone_ore", 1]], "radius": [0, 1], "y": [0, 40], "spacing": 10, "regen_minutes": 60, "attempts": 4},
|
||||
"sun_stone": {"zone": "highlands", "stone": "cobblemon:sun_stone_ore", "deepslate": "cobblemon:deepslate_sun_stone_ore", "radius": [0, 1], "y": [-48, 100], "spacing": 8, "regen_minutes": 60},
|
||||
"fire_stone": {"zone": "sunscorch", "stone": "cobblemon:fire_stone_ore", "deepslate": "cobblemon:deepslate_fire_stone_ore", "radius": [0, 1], "y": [-48, 120], "spacing": 8, "regen_minutes": 60},
|
||||
"ice_stone": {"zone": "frostpeak", "stone": "cobblemon:ice_stone_ore", "deepslate": "cobblemon:deepslate_ice_stone_ore", "radius": [0, 1], "y": [-16, 320], "spacing": 8, "regen_minutes": 60},
|
||||
"dawn_stone": {"zone": "frostpeak", "stone": "cobblemon:dawn_stone_ore", "deepslate": "cobblemon:deepslate_dawn_stone_ore", "radius": [0, 1], "y": [-16, 320], "spacing": 9, "regen_minutes": 75},
|
||||
"dusk_stone": {"zone": "deep_dark", "deepslate": "cobblemon:deepslate_dusk_stone_ore", "radius": [0, 1], "y": [-64, 0], "spacing": 9, "regen_minutes": 75}
|
||||
"fire_stone": {"zone": "sunscorch", "stone": "cobblemon:fire_stone_ore", "deepslate": "cobblemon:deepslate_fire_stone_ore", "radius": [0, 1], "y": [-48, 120], "spacing": 6, "regen_minutes": 60, "attempts": 2},
|
||||
"ice_stone": {"zone": "frostpeak", "stone": "cobblemon:ice_stone_ore", "deepslate": "cobblemon:deepslate_ice_stone_ore", "radius": [0, 1], "y": [-16, 320], "spacing": 6, "regen_minutes": 60, "attempts": 2},
|
||||
"dawn_stone": {"zone": "frostpeak", "stone": "cobblemon:dawn_stone_ore", "deepslate": "cobblemon:deepslate_dawn_stone_ore", "radius": [0, 1], "y": [-16, 320], "spacing": 7, "regen_minutes": 75, "attempts": 2},
|
||||
"dusk_stone": {"zone": "deep_dark", "deepslate": "cobblemon:deepslate_dusk_stone_ore", "radius": [0, 1], "y": [-64, -24], "spacing": 12, "regen_minutes": 75, "attempts": 3}
|
||||
},
|
||||
"species": {"durant": "basalt", "torkoal": "basalt", "heatmor": "basalt"},
|
||||
"zones": [
|
||||
|
||||
Reference in new issue
Block a user