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:
claudeandClaude Opus 5.5 committed 2026-10-30 03:36:50 +01:00
1 parent 5d275e4e14
commit 1a1fb93da8
33 files changed
+1279 -126

No files matched your search

+272 -48
View File
@@ -1,4 +1,32 @@
[
{
"id": "coal_showcase",
"blocks": [
"minecraft:coal_ore"
],
"weights": [
1
],
"dimension_whitelist": [
"minecraft:overworld"
],
"area_whitelist": [
"selftest_nowhere"
],
"shape": "sphere",
"min_radius": 2,
"max_radius": 2,
"attempts": 2,
"min_y": 0,
"max_y": 0,
"chunk_minimum_generation_separation": 4,
"fill_factor": 0.8,
"regeneration_interval_seconds": 1200,
"regeneration_interval_jitter": {
"range_min": -120,
"range_max": 120
}
},
{
"id": "coal",
"blocks": [
@@ -103,6 +131,34 @@
"range_max": 120
}
},
{
"id": "copper_showcase",
"blocks": [
"minecraft:copper_ore"
],
"weights": [
1
],
"dimension_whitelist": [
"minecraft:overworld"
],
"area_whitelist": [
"selftest_nowhere"
],
"shape": "sphere",
"min_radius": 2,
"max_radius": 2,
"attempts": 2,
"min_y": 0,
"max_y": 0,
"chunk_minimum_generation_separation": 5,
"fill_factor": 0.8,
"regeneration_interval_seconds": 1800,
"regeneration_interval_jitter": {
"range_min": -180,
"range_max": 180
}
},
{
"id": "copper",
"blocks": [
@@ -409,6 +465,34 @@
"range_max": 180
}
},
{
"id": "iron_showcase",
"blocks": [
"minecraft:iron_ore"
],
"weights": [
1
],
"dimension_whitelist": [
"minecraft:overworld"
],
"area_whitelist": [
"selftest_nowhere"
],
"shape": "sphere",
"min_radius": 2,
"max_radius": 2,
"attempts": 2,
"min_y": 0,
"max_y": 0,
"chunk_minimum_generation_separation": 5,
"fill_factor": 0.8,
"regeneration_interval_seconds": 2400,
"regeneration_interval_jitter": {
"range_min": -240,
"range_max": 240
}
},
{
"id": "iron",
"blocks": [
@@ -583,6 +667,34 @@
"range_max": 240
}
},
{
"id": "redstone_showcase",
"blocks": [
"minecraft:redstone_ore"
],
"weights": [
1
],
"dimension_whitelist": [
"minecraft:overworld"
],
"area_whitelist": [
"selftest_nowhere"
],
"shape": "sphere",
"min_radius": 2,
"max_radius": 2,
"attempts": 1,
"min_y": 0,
"max_y": 0,
"chunk_minimum_generation_separation": 6,
"fill_factor": 0.8,
"regeneration_interval_seconds": 2700,
"regeneration_interval_jitter": {
"range_min": -270,
"range_max": 270
}
},
{
"id": "redstone",
"blocks": [
@@ -791,6 +903,34 @@
"range_max": 270
}
},
{
"id": "lapis_showcase",
"blocks": [
"minecraft:lapis_ore"
],
"weights": [
1
],
"dimension_whitelist": [
"minecraft:overworld"
],
"area_whitelist": [
"selftest_nowhere"
],
"shape": "sphere",
"min_radius": 2,
"max_radius": 2,
"attempts": 1,
"min_y": 0,
"max_y": 0,
"chunk_minimum_generation_separation": 6,
"fill_factor": 0.8,
"regeneration_interval_seconds": 2700,
"regeneration_interval_jitter": {
"range_min": -270,
"range_max": 270
}
},
{
"id": "lapis",
"blocks": [
@@ -1171,6 +1311,34 @@
"range_max": 270
}
},
{
"id": "gold_showcase",
"blocks": [
"minecraft:gold_ore"
],
"weights": [
1
],
"dimension_whitelist": [
"minecraft:overworld"
],
"area_whitelist": [
"selftest_nowhere"
],
"shape": "sphere",
"min_radius": 2,
"max_radius": 2,
"attempts": 2,
"min_y": 0,
"max_y": 0,
"chunk_minimum_generation_separation": 5,
"fill_factor": 0.8,
"regeneration_interval_seconds": 3600,
"regeneration_interval_jitter": {
"range_min": -360,
"range_max": 360
}
},
{
"id": "gold",
"blocks": [
@@ -1242,10 +1410,10 @@
"shape": "sphere",
"min_radius": 1,
"max_radius": 2,
"attempts": 1,
"attempts": 2,
"min_y": 0,
"max_y": 120,
"chunk_minimum_generation_separation": 6,
"chunk_minimum_generation_separation": 5,
"fill_factor": 0.7,
"regeneration_interval_seconds": 3600,
"regeneration_interval_jitter": {
@@ -1324,10 +1492,10 @@
"shape": "sphere",
"min_radius": 1,
"max_radius": 2,
"attempts": 1,
"attempts": 2,
"min_y": -48,
"max_y": -1,
"chunk_minimum_generation_separation": 6,
"chunk_minimum_generation_separation": 5,
"fill_factor": 0.7,
"regeneration_interval_seconds": 3600,
"regeneration_interval_jitter": {
@@ -1335,6 +1503,34 @@
"range_max": 360
}
},
{
"id": "emerald_showcase",
"blocks": [
"minecraft:emerald_ore"
],
"weights": [
1
],
"dimension_whitelist": [
"minecraft:overworld"
],
"area_whitelist": [
"selftest_nowhere"
],
"shape": "sphere",
"min_radius": 2,
"max_radius": 2,
"attempts": 2,
"min_y": 0,
"max_y": 0,
"chunk_minimum_generation_separation": 6,
"fill_factor": 0.8,
"regeneration_interval_seconds": 4500,
"regeneration_interval_jitter": {
"range_min": -450,
"range_max": 450
}
},
{
"id": "emerald",
"blocks": [
@@ -1449,10 +1645,10 @@
"shape": "sphere",
"min_radius": 1,
"max_radius": 1,
"attempts": 1,
"attempts": 2,
"min_y": 0,
"max_y": 320,
"chunk_minimum_generation_separation": 7,
"chunk_minimum_generation_separation": 6,
"fill_factor": 0.7,
"regeneration_interval_seconds": 4500,
"regeneration_interval_jitter": {
@@ -1574,10 +1770,10 @@
"shape": "sphere",
"min_radius": 1,
"max_radius": 1,
"attempts": 1,
"attempts": 2,
"min_y": -16,
"max_y": -1,
"chunk_minimum_generation_separation": 7,
"chunk_minimum_generation_separation": 6,
"fill_factor": 0.7,
"regeneration_interval_seconds": 4500,
"regeneration_interval_jitter": {
@@ -1604,10 +1800,10 @@
"shape": "sphere",
"min_radius": 1,
"max_radius": 1,
"attempts": 1,
"min_y": -64,
"max_y": 64,
"chunk_minimum_generation_separation": 8,
"attempts": 4,
"min_y": 0,
"max_y": 40,
"chunk_minimum_generation_separation": 10,
"fill_factor": 0.7,
"regeneration_interval_seconds": 7200,
"regeneration_interval_jitter": {
@@ -1632,10 +1828,10 @@
"shape": "sphere",
"min_radius": 1,
"max_radius": 1,
"attempts": 1,
"attempts": 3,
"min_y": -64,
"max_y": -1,
"chunk_minimum_generation_separation": 7,
"max_y": -24,
"chunk_minimum_generation_separation": 10,
"fill_factor": 0.7,
"regeneration_interval_seconds": 5400,
"regeneration_interval_jitter": {
@@ -1660,10 +1856,10 @@
"shape": "sphere",
"min_radius": 1,
"max_radius": 2,
"attempts": 1,
"min_y": -64,
"max_y": 64,
"chunk_minimum_generation_separation": 6,
"attempts": 3,
"min_y": 0,
"max_y": 40,
"chunk_minimum_generation_separation": 8,
"fill_factor": 0.7,
"regeneration_interval_seconds": 3600,
"regeneration_interval_jitter": {
@@ -1688,10 +1884,10 @@
"shape": "sphere",
"min_radius": 0,
"max_radius": 1,
"attempts": 1,
"min_y": -64,
"max_y": 32,
"chunk_minimum_generation_separation": 10,
"attempts": 2,
"min_y": 0,
"max_y": 40,
"chunk_minimum_generation_separation": 14,
"fill_factor": 0.7,
"regeneration_interval_seconds": 10800,
"regeneration_interval_jitter": {
@@ -1890,10 +2086,10 @@
"shape": "sphere",
"min_radius": 0,
"max_radius": 1,
"attempts": 1,
"attempts": 4,
"min_y": 0,
"max_y": 64,
"chunk_minimum_generation_separation": 8,
"max_y": 40,
"chunk_minimum_generation_separation": 10,
"fill_factor": 0.7,
"regeneration_interval_seconds": 3600,
"regeneration_interval_jitter": {
@@ -1918,10 +2114,10 @@
"shape": "sphere",
"min_radius": 0,
"max_radius": 1,
"attempts": 1,
"min_y": -64,
"attempts": 4,
"min_y": -16,
"max_y": -1,
"chunk_minimum_generation_separation": 8,
"chunk_minimum_generation_separation": 10,
"fill_factor": 0.7,
"regeneration_interval_seconds": 3600,
"regeneration_interval_jitter": {
@@ -2137,6 +2333,34 @@
"range_max": 360
}
},
{
"id": "water_stone_showcase",
"blocks": [
"cobblemon:water_stone_ore"
],
"weights": [
1
],
"dimension_whitelist": [
"minecraft:overworld"
],
"area_whitelist": [
"selftest_nowhere"
],
"shape": "sphere",
"min_radius": 2,
"max_radius": 2,
"attempts": 1,
"min_y": 0,
"max_y": 0,
"chunk_minimum_generation_separation": 8,
"fill_factor": 0.8,
"regeneration_interval_seconds": 3600,
"regeneration_interval_jitter": {
"range_min": -360,
"range_max": 360
}
},
{
"id": "water_stone",
"blocks": [
@@ -2334,10 +2558,10 @@
"shape": "sphere",
"min_radius": 0,
"max_radius": 1,
"attempts": 1,
"min_y": -64,
"max_y": 64,
"chunk_minimum_generation_separation": 8,
"attempts": 4,
"min_y": 0,
"max_y": 40,
"chunk_minimum_generation_separation": 10,
"fill_factor": 0.7,
"regeneration_interval_seconds": 3600,
"regeneration_interval_jitter": {
@@ -2796,10 +3020,10 @@
"shape": "sphere",
"min_radius": 0,
"max_radius": 1,
"attempts": 1,
"attempts": 2,
"min_y": 0,
"max_y": 120,
"chunk_minimum_generation_separation": 8,
"chunk_minimum_generation_separation": 6,
"fill_factor": 0.7,
"regeneration_interval_seconds": 3600,
"regeneration_interval_jitter": {
@@ -2878,10 +3102,10 @@
"shape": "sphere",
"min_radius": 0,
"max_radius": 1,
"attempts": 1,
"attempts": 2,
"min_y": -48,
"max_y": -1,
"chunk_minimum_generation_separation": 8,
"chunk_minimum_generation_separation": 6,
"fill_factor": 0.7,
"regeneration_interval_seconds": 3600,
"regeneration_interval_jitter": {
@@ -3003,10 +3227,10 @@
"shape": "sphere",
"min_radius": 0,
"max_radius": 1,
"attempts": 1,
"attempts": 2,
"min_y": 0,
"max_y": 320,
"chunk_minimum_generation_separation": 8,
"chunk_minimum_generation_separation": 6,
"fill_factor": 0.7,
"regeneration_interval_seconds": 3600,
"regeneration_interval_jitter": {
@@ -3128,10 +3352,10 @@
"shape": "sphere",
"min_radius": 0,
"max_radius": 1,
"attempts": 1,
"attempts": 2,
"min_y": -16,
"max_y": -1,
"chunk_minimum_generation_separation": 8,
"chunk_minimum_generation_separation": 6,
"fill_factor": 0.7,
"regeneration_interval_seconds": 3600,
"regeneration_interval_jitter": {
@@ -3253,10 +3477,10 @@
"shape": "sphere",
"min_radius": 0,
"max_radius": 1,
"attempts": 1,
"attempts": 2,
"min_y": 0,
"max_y": 320,
"chunk_minimum_generation_separation": 9,
"chunk_minimum_generation_separation": 7,
"fill_factor": 0.7,
"regeneration_interval_seconds": 4500,
"regeneration_interval_jitter": {
@@ -3378,10 +3602,10 @@
"shape": "sphere",
"min_radius": 0,
"max_radius": 1,
"attempts": 1,
"attempts": 2,
"min_y": -16,
"max_y": -1,
"chunk_minimum_generation_separation": 9,
"chunk_minimum_generation_separation": 7,
"fill_factor": 0.7,
"regeneration_interval_seconds": 4500,
"regeneration_interval_jitter": {
@@ -3406,10 +3630,10 @@
"shape": "sphere",
"min_radius": 0,
"max_radius": 1,
"attempts": 1,
"attempts": 3,
"min_y": -64,
"max_y": -1,
"chunk_minimum_generation_separation": 9,
"max_y": -24,
"chunk_minimum_generation_separation": 12,
"fill_factor": 0.7,
"regeneration_interval_seconds": 4500,
"regeneration_interval_jitter": {
+1 -1
View File
@@ -42,7 +42,7 @@ hash = "a6e9d717e2f73e463b25b1eacfbff43304fd8993937d8c002f9629f24ebcc221"
[[files]]
file = "config/regenerating_ore_veins/veins.json"
hash = "a671bcfc92c200a93f16bc92d46426b8d5f2bfd21e57af463a821c4fa3755d2c"
hash = "ead417ded7b2867aadf6946c5f919b95fb2001d5207c1c39753872a2676a5d79"
[[files]]
file = "config/worldgen_editor/presets/cobblesurvival_island.json"
+1 -1
View File
@@ -6,7 +6,7 @@ pack-format = "packwiz:1.1.0"
[index]
file = "index.toml"
hash-format = "sha256"
hash = "37b01e238f83c754e3eb7093432815272645949ebcbc623ae5cde213a30e2155"
hash = "d3263f05660d4365aad10cef3f235c204ddc497118675165714f95d378de3d1f"
[versions]
minecraft = "1.21.1"