diff --git a/README.md b/README.md index cb3eef8..3c10f0b 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@ A free NeoForge 1.21.1 modpack on Cobblemon 1.8: one large island with soft-gated, Palworld/ARK-style progression, plus a companion mod for the mechanics no addon covers. The plan is in [docs/roadmap.md](docs/roadmap.md); decisions taken so far are in [docs/design.md](docs/design.md). -**Status:** Phases 0–7 approved (2026-11-03); Phase 8 (questbook as a research tree, drop sources in JEI) in progress. Checks per phase: `docs/checklists/`. +**Status:** Phases 0–8 approved (2026-11-09); Phase 9 (balancing and release) in progress. Checks per phase: `docs/checklists/`. ## What's in the pack diff --git a/datapacks/core/data/cobblesurvival/ore_nodes/island.json b/datapacks/core/data/cobblesurvival/ore_nodes/island.json index 96ef20e..0edac3a 100644 --- a/datapacks/core/data/cobblesurvival/ore_nodes/island.json +++ b/datapacks/core/data/cobblesurvival/ore_nodes/island.json @@ -5,57 +5,57 @@ "vein": "coal_node", "zone": "button_isle", "where": "surface", - "chance": 0.5, - "radius": 1 + "chance": 0.3, + "radius": 2 }, { "vein": "copper_node", "zone": "southwold", "where": "surface", - "chance": 0.2, - "radius": 1 + "chance": 0.12, + "radius": 2 }, { "vein": "iron_node", "zone": "westmarch", "where": "surface", - "chance": 0.2, - "radius": 1 + "chance": 0.12, + "radius": 2 }, { "vein": "redstone_node", "zone": "jungle", "where": "surface", - "chance": 0.2, - "radius": 1 + "chance": 0.12, + "radius": 2 }, { "vein": "lapis_node", "zone": "highlands", "where": "surface", - "chance": 0.15, - "radius": 1 + "chance": 0.09, + "radius": 2 }, { "vein": "gold_node", "zone": "sunscorch", "where": "surface", - "chance": 0.3, - "radius": 1 + "chance": 0.18, + "radius": 2 }, { "vein": "emerald_node", "zone": "frostpeak", "where": "surface", - "chance": 0.15, - "radius": 1 + "chance": 0.09, + "radius": 2 }, { "vein": "amethyst_node", "zone": "dripstone", "where": "cave", - "chance": 0.5, - "radius": 1, + "chance": 0.3, + "radius": 2, "biome": "minecraft:dripstone_caves", "tries": 8, "y": [ @@ -67,8 +67,8 @@ "vein": "diamond_node", "zone": "deep_dark", "where": "cave", - "chance": 0.15, - "radius": 1, + "chance": 0.09, + "radius": 2, "biome": "minecraft:deep_dark", "tries": 8, "y": [ @@ -80,8 +80,8 @@ "vein": "quartz_node", "zone": "basalt", "where": "cave", - "chance": 0.5, - "radius": 1, + "chance": 0.3, + "radius": 2, "biome": "minecraft:basalt_deltas", "tries": 8, "y": [ @@ -93,8 +93,8 @@ "vein": "netherite_node", "zone": "basalt", "where": "cave", - "chance": 0.06, - "radius": 0, + "chance": 0.036, + "radius": 1, "biome": "minecraft:basalt_deltas", "tries": 8, "y": [ @@ -106,15 +106,15 @@ "vein": "thunder_stone_node", "zone": "westmarch", "where": "surface", - "chance": 0.03, - "radius": 0 + "chance": 0.018, + "radius": 1 }, { "vein": "shiny_stone_node", "zone": "lush_caves", "where": "cave", - "chance": 0.15, - "radius": 1, + "chance": 0.09, + "radius": 2, "biome": "minecraft:lush_caves", "tries": 8, "y": [ @@ -126,22 +126,22 @@ "vein": "leaf_stone_node", "zone": "jungle", "where": "surface", - "chance": 0.04, - "radius": 0 + "chance": 0.024, + "radius": 1 }, { "vein": "water_stone_node", "zone": "mire", "where": "surface", - "chance": 0.04, - "radius": 0 + "chance": 0.024, + "radius": 1 }, { "vein": "moon_stone_node", "zone": "dripstone", "where": "cave", - "chance": 0.25, - "radius": 1, + "chance": 0.15, + "radius": 2, "biome": "minecraft:dripstone_caves", "tries": 8, "y": [ @@ -153,36 +153,36 @@ "vein": "sun_stone_node", "zone": "highlands", "where": "surface", - "chance": 0.02, - "radius": 0 + "chance": 0.012, + "radius": 1 }, { "vein": "fire_stone_node", "zone": "sunscorch", "where": "surface", - "chance": 0.08, - "radius": 0 + "chance": 0.048, + "radius": 1 }, { "vein": "ice_stone_node", "zone": "frostpeak", "where": "surface", - "chance": 0.06, - "radius": 0 + "chance": 0.036, + "radius": 1 }, { "vein": "dawn_stone_node", "zone": "frostpeak", "where": "surface", - "chance": 0.04, - "radius": 0 + "chance": 0.024, + "radius": 1 }, { "vein": "dusk_stone_node", "zone": "deep_dark", "where": "cave", - "chance": 0.1, - "radius": 1, + "chance": 0.06, + "radius": 2, "biome": "minecraft:deep_dark", "tries": 8, "y": [ diff --git a/datapacks/core/data/cobblesurvival/spawn_pool_world/basalt.json b/datapacks/core/data/cobblesurvival/spawn_pool_world/basalt.json index 70a833f..cf58468 100644 --- a/datapacks/core/data/cobblesurvival/spawn_pool_world/basalt.json +++ b/datapacks/core/data/cobblesurvival/spawn_pool_world/basalt.json @@ -48,6 +48,22 @@ "multiplier": 1.25 } }, + { + "id": "basalt-armarouge-16", + "type": "pokemon", + "pokemon": "armarouge", + "presets": [], + "spawnablePositionType": "grounded", + "bucket": "rare", + "level": "55-70", + "weight": 10, + "condition": { + "zone": "basalt", + "biomes": [ + "minecraft:basalt_deltas" + ] + } + }, { "bucket": "common", "condition": { diff --git a/datapacks/core/data/cobblesurvival/spawn_pool_world/deep_dark.json b/datapacks/core/data/cobblesurvival/spawn_pool_world/deep_dark.json index ed1a117..9f90b18 100644 --- a/datapacks/core/data/cobblesurvival/spawn_pool_world/deep_dark.json +++ b/datapacks/core/data/cobblesurvival/spawn_pool_world/deep_dark.json @@ -90,6 +90,22 @@ "multiplier": 1.25 } }, + { + "id": "deep_dark-chandelure-36", + "type": "pokemon", + "pokemon": "chandelure", + "presets": [], + "spawnablePositionType": "grounded", + "bucket": "rare", + "level": "45-60", + "weight": 10, + "condition": { + "zone": "deep_dark", + "biomes": [ + "minecraft:deep_dark" + ] + } + }, { "bucket": "common", "condition": { @@ -455,6 +471,24 @@ } ] }, + { + "id": "deep_dark-grimmsnarl-34", + "type": "pokemon", + "pokemon": "grimmsnarl", + "presets": [ + "wild" + ], + "spawnablePositionType": "grounded", + "bucket": "rare", + "level": "45-60", + "weight": 10, + "condition": { + "zone": "deep_dark", + "biomes": [ + "minecraft:deep_dark" + ] + } + }, { "anticondition": { "structures": [ @@ -539,6 +573,22 @@ "multiplier": 2.0 } }, + { + "id": "deep_dark-lampent-35", + "type": "pokemon", + "pokemon": "lampent", + "presets": [], + "spawnablePositionType": "grounded", + "bucket": "rare", + "level": "45-60", + "weight": 10, + "condition": { + "zone": "deep_dark", + "biomes": [ + "minecraft:deep_dark" + ] + } + }, { "bucket": "common", "condition": { diff --git a/datapacks/core/data/cobblesurvival/spawn_pool_world/deep_sea.json b/datapacks/core/data/cobblesurvival/spawn_pool_world/deep_sea.json index 8a18a1b..8a4fae4 100644 --- a/datapacks/core/data/cobblesurvival/spawn_pool_world/deep_sea.json +++ b/datapacks/core/data/cobblesurvival/spawn_pool_world/deep_sea.json @@ -538,6 +538,21 @@ } ] }, + { + "id": "deep_sea-dewgong-141", + "type": "pokemon", + "pokemon": "dewgong", + "presets": [ + "water" + ], + "spawnablePositionType": "submerged", + "bucket": "rare", + "level": "34-50", + "weight": 10, + "condition": { + "zone": "deep_sea" + } + }, { "anticondition": { "biomes": [ @@ -974,6 +989,21 @@ "multiplier": 5.0 } }, + { + "id": "deep_sea-empoleon-139", + "type": "pokemon", + "pokemon": "empoleon", + "presets": [ + "water" + ], + "spawnablePositionType": "submerged", + "bucket": "rare", + "level": "36-50", + "weight": 10, + "condition": { + "zone": "deep_sea" + } + }, { "bucket": "common", "condition": { @@ -2312,6 +2342,21 @@ "type": "pokemon", "weight": 60.0 }, + { + "id": "deep_sea-piplup-137", + "type": "pokemon", + "pokemon": "piplup", + "presets": [ + "water" + ], + "spawnablePositionType": "submerged", + "bucket": "rare", + "level": "30-50", + "weight": 10, + "condition": { + "zone": "deep_sea" + } + }, { "anticondition": { "biomes": [ @@ -2408,6 +2453,21 @@ "type": "pokemon", "weight": 4.0 }, + { + "id": "deep_sea-prinplup-138", + "type": "pokemon", + "pokemon": "prinplup", + "presets": [ + "water" + ], + "spawnablePositionType": "submerged", + "bucket": "rare", + "level": "30-50", + "weight": 10, + "condition": { + "zone": "deep_sea" + } + }, { "bucket": "common", "condition": { @@ -2628,6 +2688,36 @@ } ] }, + { + "id": "deep_sea-sealeo-142", + "type": "pokemon", + "pokemon": "sealeo", + "presets": [ + "water" + ], + "spawnablePositionType": "submerged", + "bucket": "rare", + "level": "32-50", + "weight": 10, + "condition": { + "zone": "deep_sea" + } + }, + { + "id": "deep_sea-seel-140", + "type": "pokemon", + "pokemon": "seel", + "presets": [ + "water" + ], + "spawnablePositionType": "submerged", + "bucket": "rare", + "level": "30-50", + "weight": 10, + "condition": { + "zone": "deep_sea" + } + }, { "anticondition": { "biomes": [ @@ -3598,6 +3688,21 @@ }, "multiplier": 3.0 } + }, + { + "id": "deep_sea-walrein-143", + "type": "pokemon", + "pokemon": "walrein", + "presets": [ + "water" + ], + "spawnablePositionType": "submerged", + "bucket": "rare", + "level": "44-50", + "weight": 10, + "condition": { + "zone": "deep_sea" + } } ] } diff --git a/datapacks/core/data/cobblesurvival/spawn_pool_world/dripstone.json b/datapacks/core/data/cobblesurvival/spawn_pool_world/dripstone.json index 802122d..cabb4e4 100644 --- a/datapacks/core/data/cobblesurvival/spawn_pool_world/dripstone.json +++ b/datapacks/core/data/cobblesurvival/spawn_pool_world/dripstone.json @@ -64,6 +64,24 @@ "multiplier": 1.25 } }, + { + "id": "dripstone-aron-49", + "type": "pokemon", + "pokemon": "aron", + "presets": [ + "wild" + ], + "spawnablePositionType": "grounded", + "bucket": "rare", + "level": "22-38", + "weight": 10, + "condition": { + "zone": "dripstone", + "biomes": [ + "minecraft:dripstone_caves" + ] + } + }, { "bucket": "ultra-rare", "condition": { @@ -619,6 +637,24 @@ "type": "pokemon", "weight": 60.0 }, + { + "id": "dripstone-lairon-50", + "type": "pokemon", + "pokemon": "lairon", + "presets": [ + "wild" + ], + "spawnablePositionType": "grounded", + "bucket": "rare", + "level": "32-38", + "weight": 10, + "condition": { + "zone": "dripstone", + "biomes": [ + "minecraft:dripstone_caves" + ] + } + }, { "bucket": "uncommon", "condition": { diff --git a/datapacks/core/data/cobblesurvival/spawn_pool_world/frostpeak.json b/datapacks/core/data/cobblesurvival/spawn_pool_world/frostpeak.json index 920eb0e..e3ed34e 100644 --- a/datapacks/core/data/cobblesurvival/spawn_pool_world/frostpeak.json +++ b/datapacks/core/data/cobblesurvival/spawn_pool_world/frostpeak.json @@ -121,6 +121,21 @@ "type": "pokemon", "weight": 4.8 }, + { + "id": "frostpeak-avalugg-84", + "type": "pokemon", + "pokemon": "avalugg", + "presets": [ + "natural" + ], + "spawnablePositionType": "grounded", + "bucket": "rare", + "level": "40-55", + "weight": 10, + "condition": { + "zone": "frostpeak" + } + }, { "bucket": "common", "condition": { @@ -455,6 +470,22 @@ "type": "pokemon", "weight": 21.6 }, + { + "id": "frostpeak-beartic-86", + "type": "pokemon", + "pokemon": "beartic", + "presets": [ + "natural", + "wild" + ], + "spawnablePositionType": "grounded", + "bucket": "rare", + "level": "40-55", + "weight": 10, + "condition": { + "zone": "frostpeak" + } + }, { "bucket": "uncommon", "condition": { @@ -528,6 +559,22 @@ } ] }, + { + "id": "frostpeak-cetitan-85", + "type": "pokemon", + "pokemon": "cetitan", + "presets": [ + "natural", + "wild" + ], + "spawnablePositionType": "grounded", + "bucket": "rare", + "level": "40-55", + "weight": 10, + "condition": { + "zone": "frostpeak" + } + }, { "anticondition": { "biomes": [ @@ -869,6 +916,21 @@ "type": "pokemon", "weight": 87.5 }, + { + "id": "frostpeak-eiscue-87", + "type": "pokemon", + "pokemon": "eiscue", + "presets": [ + "natural" + ], + "spawnablePositionType": "grounded", + "bucket": "rare", + "level": "40-55", + "weight": 10, + "condition": { + "zone": "frostpeak" + } + }, { "bucket": "common", "condition": { @@ -1532,6 +1594,22 @@ "multiplier": 0.25 } }, + { + "id": "frostpeak-mamoswine-91", + "type": "pokemon", + "pokemon": "mamoswine", + "presets": [ + "natural", + "wild" + ], + "spawnablePositionType": "grounded", + "bucket": "rare", + "level": "40-55", + "weight": 10, + "condition": { + "zone": "frostpeak" + } + }, { "bucket": "ultra-rare", "condition": { @@ -1659,6 +1737,22 @@ "type": "pokemon", "weight": 21.6 }, + { + "id": "frostpeak-piloswine-90", + "type": "pokemon", + "pokemon": "piloswine", + "presets": [ + "natural", + "wild" + ], + "spawnablePositionType": "grounded", + "bucket": "rare", + "level": "40-55", + "weight": 10, + "condition": { + "zone": "frostpeak" + } + }, { "bucket": "common", "condition": { @@ -2033,6 +2127,22 @@ "type": "pokemon", "weight": 99.0 }, + { + "id": "frostpeak-stantler-88", + "type": "pokemon", + "pokemon": "stantler", + "presets": [ + "natural", + "wild" + ], + "spawnablePositionType": "grounded", + "bucket": "rare", + "level": "40-55", + "weight": 10, + "condition": { + "zone": "frostpeak" + } + }, { "anticondition": { "biomes": [ @@ -2383,6 +2493,22 @@ }, "multiplier": 1.25 } + }, + { + "id": "frostpeak-wyrdeer-89", + "type": "pokemon", + "pokemon": "wyrdeer", + "presets": [ + "natural", + "wild" + ], + "spawnablePositionType": "grounded", + "bucket": "rare", + "level": "42-55", + "weight": 10, + "condition": { + "zone": "frostpeak" + } } ] } diff --git a/datapacks/core/data/cobblesurvival/spawn_pool_world/highlands.json b/datapacks/core/data/cobblesurvival/spawn_pool_world/highlands.json index e44983b..bf49e8a 100644 --- a/datapacks/core/data/cobblesurvival/spawn_pool_world/highlands.json +++ b/datapacks/core/data/cobblesurvival/spawn_pool_world/highlands.json @@ -121,6 +121,22 @@ "multiplier": 2.0 } }, + { + "id": "highlands-blitzle-128", + "type": "pokemon", + "pokemon": "blitzle", + "presets": [ + "natural", + "wild" + ], + "spawnablePositionType": "grounded", + "bucket": "rare", + "level": "25-35", + "weight": 10, + "condition": { + "zone": "highlands" + } + }, { "bucket": "common", "condition": { @@ -525,6 +541,36 @@ "multiplier": 2.0 } }, + { + "id": "highlands-dodrio-131", + "type": "pokemon", + "pokemon": "dodrio", + "presets": [ + "natural" + ], + "spawnablePositionType": "grounded", + "bucket": "rare", + "level": "31-35", + "weight": 10, + "condition": { + "zone": "highlands" + } + }, + { + "id": "highlands-doduo-130", + "type": "pokemon", + "pokemon": "doduo", + "presets": [ + "natural" + ], + "spawnablePositionType": "grounded", + "bucket": "rare", + "level": "25-35", + "weight": 10, + "condition": { + "zone": "highlands" + } + }, { "anticondition": { "biomes": [ @@ -3926,6 +3972,22 @@ "multiplier": 1.5 } }, + { + "id": "highlands-zebstrika-129", + "type": "pokemon", + "pokemon": "zebstrika", + "presets": [ + "natural", + "wild" + ], + "spawnablePositionType": "grounded", + "bucket": "rare", + "level": "27-35", + "weight": 10, + "condition": { + "zone": "highlands" + } + }, { "anticondition": { "biomes": [ diff --git a/datapacks/core/data/cobblesurvival/spawn_pool_world/jungle.json b/datapacks/core/data/cobblesurvival/spawn_pool_world/jungle.json index ff97b4d..4ea66f7 100644 --- a/datapacks/core/data/cobblesurvival/spawn_pool_world/jungle.json +++ b/datapacks/core/data/cobblesurvival/spawn_pool_world/jungle.json @@ -58,6 +58,21 @@ "multiplier": 1.25 } }, + { + "id": "jungle-bewear-84", + "type": "pokemon", + "pokemon": "bewear", + "presets": [ + "natural" + ], + "spawnablePositionType": "grounded", + "bucket": "rare", + "level": "27-30", + "weight": 10, + "condition": { + "zone": "jungle" + } + }, { "bucket": "common", "condition": { @@ -499,6 +514,24 @@ "type": "pokemon", "weight": 100.0 }, + { + "id": "jungle-komala-81", + "type": "pokemon", + "pokemon": "komala", + "presets": [ + "natural", + "foliage", + "treetop", + "wild" + ], + "spawnablePositionType": "grounded", + "bucket": "rare", + "level": "23-30", + "weight": 10, + "condition": { + "zone": "jungle" + } + }, { "anticondition": { "structures": [ @@ -552,6 +585,22 @@ "multiplier": 2.0 } }, + { + "id": "jungle-pancham-82", + "type": "pokemon", + "pokemon": "pancham", + "presets": [ + "natural", + "wild" + ], + "spawnablePositionType": "grounded", + "bucket": "rare", + "level": "18-30", + "weight": 10, + "condition": { + "zone": "jungle" + } + }, { "bucket": "uncommon", "condition": { @@ -1003,6 +1052,21 @@ "multiplier": 2.0 } }, + { + "id": "jungle-stufful-83", + "type": "pokemon", + "pokemon": "stufful", + "presets": [ + "natural" + ], + "spawnablePositionType": "grounded", + "bucket": "rare", + "level": "18-30", + "weight": 10, + "condition": { + "zone": "jungle" + } + }, { "bucket": "common", "condition": { diff --git a/datapacks/core/data/cobblesurvival/spawn_pool_world/lush_caves.json b/datapacks/core/data/cobblesurvival/spawn_pool_world/lush_caves.json index 3bc2b1d..8686c41 100644 --- a/datapacks/core/data/cobblesurvival/spawn_pool_world/lush_caves.json +++ b/datapacks/core/data/cobblesurvival/spawn_pool_world/lush_caves.json @@ -219,6 +219,22 @@ "multiplier": 2.0 } }, + { + "id": "lush_caves-foongus-35", + "type": "pokemon", + "pokemon": "foongus", + "presets": [], + "spawnablePositionType": "grounded", + "bucket": "rare", + "level": "12-28", + "weight": 10, + "condition": { + "zone": "lush_caves", + "biomes": [ + "minecraft:lush_caves" + ] + } + }, { "bucket": "common", "condition": { diff --git a/datapacks/core/data/cobblesurvival/spawn_pool_world/mire.json b/datapacks/core/data/cobblesurvival/spawn_pool_world/mire.json index 7665a94..e5996d1 100644 --- a/datapacks/core/data/cobblesurvival/spawn_pool_world/mire.json +++ b/datapacks/core/data/cobblesurvival/spawn_pool_world/mire.json @@ -960,6 +960,38 @@ "type": "pokemon", "weight": 4.0 }, + { + "id": "mire-hatenna-82", + "type": "pokemon", + "pokemon": "hatenna", + "presets": [ + "natural", + "wild" + ], + "spawnablePositionType": "grounded", + "bucket": "rare", + "level": "25-38", + "weight": 10, + "condition": { + "zone": "mire" + } + }, + { + "id": "mire-hattrem-83", + "type": "pokemon", + "pokemon": "hattrem", + "presets": [ + "natural", + "wild" + ], + "spawnablePositionType": "grounded", + "bucket": "rare", + "level": "32-38", + "weight": 10, + "condition": { + "zone": "mire" + } + }, { "anticondition": { "biomes": [ @@ -2115,6 +2147,38 @@ "multiplier": 3.0 } }, + { + "id": "mire-toedscool-84", + "type": "pokemon", + "pokemon": "toedscool", + "presets": [ + "natural", + "wild" + ], + "spawnablePositionType": "grounded", + "bucket": "rare", + "level": "25-38", + "weight": 10, + "condition": { + "zone": "mire" + } + }, + { + "id": "mire-toedscruel-85", + "type": "pokemon", + "pokemon": "toedscruel", + "presets": [ + "natural", + "wild" + ], + "spawnablePositionType": "grounded", + "bucket": "rare", + "level": "30-38", + "weight": 10, + "condition": { + "zone": "mire" + } + }, { "bucket": "common", "condition": { diff --git a/datapacks/core/data/cobblesurvival/spawn_pool_world/southwold.json b/datapacks/core/data/cobblesurvival/spawn_pool_world/southwold.json index c4e15a4..5c6fc29 100644 --- a/datapacks/core/data/cobblesurvival/spawn_pool_world/southwold.json +++ b/datapacks/core/data/cobblesurvival/spawn_pool_world/southwold.json @@ -2202,6 +2202,70 @@ "multiplier": 5.0 } }, + { + "id": "southwold-nidoranf-124", + "type": "pokemon", + "pokemon": "nidoranf", + "presets": [ + "natural", + "wild" + ], + "spawnablePositionType": "grounded", + "bucket": "rare", + "level": "8-18", + "weight": 10, + "condition": { + "zone": "southwold" + } + }, + { + "id": "southwold-nidoranm-126", + "type": "pokemon", + "pokemon": "nidoranm", + "presets": [ + "natural", + "wild" + ], + "spawnablePositionType": "grounded", + "bucket": "rare", + "level": "8-18", + "weight": 10, + "condition": { + "zone": "southwold" + } + }, + { + "id": "southwold-nidorina-125", + "type": "pokemon", + "pokemon": "nidorina", + "presets": [ + "natural", + "wild" + ], + "spawnablePositionType": "grounded", + "bucket": "rare", + "level": "16-18", + "weight": 10, + "condition": { + "zone": "southwold" + } + }, + { + "id": "southwold-nidorino-127", + "type": "pokemon", + "pokemon": "nidorino", + "presets": [ + "natural", + "wild" + ], + "spawnablePositionType": "grounded", + "bucket": "rare", + "level": "16-18", + "weight": 10, + "condition": { + "zone": "southwold" + } + }, { "anticondition": { "biomes": [ @@ -2593,6 +2657,21 @@ "multiplier": 2.0 } }, + { + "id": "southwold-smoliv-128", + "type": "pokemon", + "pokemon": "smoliv", + "presets": [ + "natural" + ], + "spawnablePositionType": "grounded", + "bucket": "rare", + "level": "8-18", + "weight": 10, + "condition": { + "zone": "southwold" + } + }, { "anticondition": { "biomes": [ diff --git a/datapacks/core/data/cobblesurvival/spawn_pool_world/sunscorch.json b/datapacks/core/data/cobblesurvival/spawn_pool_world/sunscorch.json index ac3506c..f80adf2 100644 --- a/datapacks/core/data/cobblesurvival/spawn_pool_world/sunscorch.json +++ b/datapacks/core/data/cobblesurvival/spawn_pool_world/sunscorch.json @@ -581,6 +581,22 @@ } ] }, + { + "id": "sunscorch-farigiraf-78", + "type": "pokemon", + "pokemon": "farigiraf", + "presets": [ + "natural", + "wild" + ], + "spawnablePositionType": "grounded", + "bucket": "rare", + "level": "32-45", + "weight": 10, + "condition": { + "zone": "sunscorch" + } + }, { "bucket": "common", "condition": { @@ -748,6 +764,22 @@ "type": "pokemon", "weight": 0.6 }, + { + "id": "sunscorch-girafarig-77", + "type": "pokemon", + "pokemon": "girafarig", + "presets": [ + "natural", + "wild" + ], + "spawnablePositionType": "grounded", + "bucket": "rare", + "level": "30-45", + "weight": 10, + "condition": { + "zone": "sunscorch" + } + }, { "bucket": "common", "condition": { @@ -827,6 +859,22 @@ "multiplier": 5.0 } }, + { + "id": "sunscorch-kangaskhan-79", + "type": "pokemon", + "pokemon": "kangaskhan", + "presets": [ + "natural", + "wild" + ], + "spawnablePositionType": "grounded", + "bucket": "rare", + "level": "30-45", + "weight": 10, + "condition": { + "zone": "sunscorch" + } + }, { "bucket": "uncommon", "condition": { @@ -950,6 +998,22 @@ "multiplier": 2.0 } }, + { + "id": "sunscorch-litleo-80", + "type": "pokemon", + "pokemon": "litleo", + "presets": [ + "natural", + "wild" + ], + "spawnablePositionType": "grounded", + "bucket": "rare", + "level": "30-45", + "weight": 10, + "condition": { + "zone": "sunscorch" + } + }, { "bucket": "uncommon", "condition": { @@ -1369,6 +1433,22 @@ "multiplier": 1.25 } }, + { + "id": "sunscorch-pyroar-81", + "type": "pokemon", + "pokemon": "pyroar female", + "presets": [ + "natural", + "wild" + ], + "spawnablePositionType": "grounded", + "bucket": "rare", + "level": "35-45", + "weight": 10, + "condition": { + "zone": "sunscorch" + } + }, { "bucket": "common", "condition": { diff --git a/datapacks/core/data/cobblesurvival/spawn_pool_world/westmarch.json b/datapacks/core/data/cobblesurvival/spawn_pool_world/westmarch.json index 477603d..2cfa941 100644 --- a/datapacks/core/data/cobblesurvival/spawn_pool_world/westmarch.json +++ b/datapacks/core/data/cobblesurvival/spawn_pool_world/westmarch.json @@ -481,6 +481,21 @@ } ] }, + { + "id": "westmarch-dedenne-142", + "type": "pokemon", + "pokemon": "dedenne", + "presets": [ + "natural" + ], + "spawnablePositionType": "grounded", + "bucket": "rare", + "level": "18-25", + "weight": 10, + "condition": { + "zone": "westmarch" + } + }, { "anticondition": { "biomes": [ @@ -923,6 +938,22 @@ "type": "pokemon", "weight": 16.8 }, + { + "id": "westmarch-emolga-143", + "type": "pokemon", + "pokemon": "emolga", + "presets": [ + "natural", + "treetop" + ], + "spawnablePositionType": "grounded", + "bucket": "rare", + "level": "18-25", + "weight": 10, + "condition": { + "zone": "westmarch" + } + }, { "bucket": "common", "condition": { @@ -3937,6 +3968,37 @@ } ] }, + { + "id": "westmarch-pineco-144", + "type": "pokemon", + "pokemon": "pineco", + "presets": [ + "natural", + "treetop" + ], + "spawnablePositionType": "grounded", + "bucket": "rare", + "level": "15-25", + "weight": 10, + "condition": { + "zone": "westmarch" + } + }, + { + "id": "westmarch-rotom-145", + "type": "pokemon", + "pokemon": "rotom", + "presets": [ + "natural" + ], + "spawnablePositionType": "grounded", + "bucket": "rare", + "level": "15-25", + "weight": 10, + "condition": { + "zone": "westmarch" + } + }, { "anticondition": { "biomes": [ diff --git a/docs/balance.md b/docs/balance.md index 74155f7..9be4fbe 100644 --- a/docs/balance.md +++ b/docs/balance.md @@ -49,9 +49,11 @@ Every tunable lives in a config file or in this table. **Placeholder** means gue | High zone for strong flyers | band starts at Lv 30 or more (Sunscorch, Frostpeak, Deep Sea, Deep Dark, Basalt Furnace) | Decided (Adrian, 2026-10-30) | `tools/zone_spawns.py` (`HIGH_ZONE_LEVEL`) | | | Ore tiers per zone | Button Isle: coal; Southwold: copper; Westmarch: iron, thunder stone; Verdant Jungle: redstone, leaf stone; Highland Meadows: lapis, sun stone; Sunscorch: gold, fire stone; Frostpeak Range: emerald, ice stone, dawn stone; Dripstone Depths: amethyst, moon stone; Deep Dark: diamond, dusk stone; Basalt Furnace: quartz, netherite; Lush Caves: shiny stone; Mangrove Mire: water stone | Fine for now (Adrian, 2026-10-30) | `world/zones.json` → `ores` → `tools/zone_ores.py` | Each tier in exactly one zone; evolution stones are tiers (their natural ores are off) | | Vein regrowth | 20 min: coal; 30 min: copper; 40 min: iron; 45 min: redstone, lapis; 60 min: gold, quartz, thunder stone, shiny stone, leaf stone, water stone, moon stone, sun stone, fire stone, ice stone; 75 min: emerald, dawn stone, dusk stone; 90 min: diamond; 120 min: amethyst; 180 min: netherite; ±10 % jitter; real time | Fine for now (Adrian, 2026-10-30) | `world/zones.json` → `ores` (`regen_minutes`, `ore_defaults.jitter`) | Counts while the server is off too | -| Ore nodes | chance per chunk of the zone — surface: coal 50 %, copper 20 %, iron 20 %, redstone 20 %, lapis 15 %, gold 30 %, emerald 15 %, thunder stone 3 %, leaf stone 4 %, water stone 4 %, sun stone 2 %, fire stone 8 %, ice stone 6 %, dawn stone 4 %; cave floor (8 columns searched): amethyst 50 %, diamond 15 %, quartz 50 %, netherite 6 %, shiny stone 15 %, moon stone 25 %, dusk stone 10 %. Radius 0–1 (evolution stones and netherite one block), 80 % filled | Placeholder (Adrian, 2026-10-30: small on the surface) | `world/zones.json` → `ores` → `nodes` | | -| Underground veins (surface tiers) | radius 2–4 (stones 1–2), spacing 6–11 chunks between candidate chunks, 70 % filled, 1–2 tries per candidate chunk | Placeholder (Adrian, 2026-10-30: larger but harder to find) | `world/zones.json` → `ores` → `veins` | Ore blocks in the template (2026-10-31, nodes and veins): copper 33,211, iron 18,275, quartz 13,366, coal 7,363, lapis 6,092, amethyst 3,640, redstone 3,406, gold 2,223, emerald 1,404, shiny stone 1,270, diamond 1,078, moon stone 970, sun stone 684, thunder stone 667, ice stone 435, dusk stone 425, water stone 404, dawn stone 380, leaf stone 352, fire stone 317, netherite 290. Per zone in `build/island-report.json` after `tools/make_world.py` | +| Ore nodes | chance per chunk of the zone — surface: coal 30 %, copper 12 %, iron 12 %, redstone 12 %, lapis 9 %, gold 18 %, emerald 9 %, thunder stone 1.8 %, leaf stone 2.4 %, water stone 2.4 %, sun stone 1.2 %, fire stone 4.8 %, ice stone 3.6 %, dawn stone 2.4 %; cave floor (8 columns searched): amethyst 30 %, diamond 9 %, quartz 30 %, netherite 3.6 %, shiny stone 9 %, moon stone 15 %, dusk stone 6 %. Radius 1–2 (evolution stones and netherite 0–1), 80 % filled | Placeholder (Adrian, 2026-11-09: more sporadic but bigger; 2026-10-30: small on the surface) | `world/zones.json` → `ores` → `nodes` | New numbers apply to a newly generated island only | +| Underground veins (surface tiers) | radius 3–5 (stones 2–3), spacing 8–14 chunks between candidate chunks, 70 % filled, 1–2 tries per candidate chunk | Placeholder (Adrian, 2026-11-09: more sporadic but bigger) | `world/zones.json` → `ores` → `veins` | Ore blocks on the island (2026-11-09, nodes and veins): copper 53,334, iron 28,509, quartz 21,350, lapis 12,319, coal 11,652, redstone 7,536, amethyst 5,839, gold 4,973, shiny stone 3,514, emerald 3,290, moon stone 2,936, diamond 2,015, thunder stone 1,800, sun stone 1,612, dusk stone 1,261, leaf stone 849, dawn stone 814, water stone 696, ice stone 660, fire stone 536, netherite 533: 1.5–3× the old totals, since the larger size outweighs the wider spacing. Per zone in `build/island-report.json` after `tools/make_world.py` | | Regenerators breakable by players | no; explosions don't hurt veins | Fine for now (Adrian, 2026-10-30) | `tools/zone_ores.py` → `global.json` | Otherwise a player could remove a vein for good | +| Respawn block (regenerator) | the player's aim passes through it unless sneaking, so ore behind it can be mined; no collision (the mod's own); glass about 9 % opaque with a 27 % edge (was stained glass, about 50 %) | Adrian, 2026-11-09 | `mod/src/main/java/.../RegeneratorBlockMixin.java`; `pack/kubejs/assets/regenerating_ore_veins/` | Sneak-use still shows its info | +| Homeless lines | 31 lines with no matching biome on the island: rare bucket, weight 10, at the zone's levels, anywhere in the zone | Placeholder (Adrian, 2026-11-09: rare, in fitting zones) | `world/zones.json` → `homeless` → `tools/zone_spawns.py` | Which zone each lives in is listed there and in `docs/zone-species.md` | | Vein Locator | compass + copper ingot; 75 % chance to break per use (the mod's default) | Fine for now (Adrian, 2026-10-30) | `tools/zone_ores.py` → `vein_locator.json` | The mod's default recipe needs netherite | | Drops for mobs the island lacks | Blaze Rod: Carkol 10 %, Torkoal 25 % ×1–2; Ghast Tear: Drifloon 5 %, Dusclops 10 %; Breeze Rod: Whimsicott 10 %; Shulker Shell: Shuckle 10 %, Cloyster 10 %; Nether Star: Charizard 5 % | Fine for now (Adrian, 2026-10-30) | `datapacks/core/data/cobblesurvival/species_additions/` | Every drop and what consumes it: `docs/pokemon-drops.md` (`tools/drop_audit.py`) | | Cobblebase skill gates | start: gatherer, harvester, irrigator, producer, furnace fuel, water fill, extinguisher, scout, guard; Button Isle: fishing, forager, botanist, collector, snow fill, brewing fuel, craftsman; Southwold: pharmacist, scholar, mentor (passive XP), lava fill; Westmarch: mining, excavator, architect, armorer, diving; Verdant Jungle: alchemist, trainer, smith, prospector, growth aura; Highland Meadows: speed, jump, haste, night vision, water breathing, saturation buffs; Mangrove Mire: resistance, strength buffs; Sunscorch: friend recruiter, aura boost; Frostpeak: healer, lucky charm; Deep Dark: breeder, egg hatcher | Placeholder | `datapacks/core/data/cobblesurvival/progression_gates/base.json` → `cobblebase_skills` | A zone means its soft gate, checked on the pastured Pokémon (see "Soft gate levels and materials") | diff --git a/docs/checklists/phase-8.md b/docs/checklists/phase-8.md index 581d96d..9afa166 100644 --- a/docs/checklists/phase-8.md +++ b/docs/checklists/phase-8.md @@ -25,4 +25,6 @@ ## Ask Adrian +**Phase 8 approved 2026-11-09** ("Approved, next phase"; after the JEI pages were restyled to match Cobblemon Info's). + - (after the first chapters) Does the layout read well? Move nodes freely in the editor; the next generation keeps your positions. diff --git a/docs/checklists/phase-9.md b/docs/checklists/phase-9.md new file mode 100644 index 0000000..425aa72 --- /dev/null +++ b/docs/checklists/phase-9.md @@ -0,0 +1,21 @@ +# Phase 9 – checks for Adrian + +## Decided + +**2026-11-09:** Pokémon with no biome on the island spawn rarely in fitting zones; legendaries come from crafted summons; ore veins more sporadic but bigger; the respawn block is see-through and mine-through; no public release (Adrian hands the pack out privately). Roadmap additions: every implemented Pokémon obtainable; a shader pack by default (Complementary Reimagined through Iris). Details: `docs/design.md` → "Phase 9". + +## Built so far + +- **Ore veins:** rarer nodes and wider vein spacing, one block larger in radius. Needs a new island: the save "Cobblemon Survival Island (new veins)" has it. Your other saves keep their old veins. +- **Respawn block:** much fainter glass; you aim through it unless sneaking. Automated: `regenerator_lets_the_aim_through`. +- **Left-out Pokémon:** 31 lines (67 species) spawn rarely in fitting zones (`docs/zone-species.md`). Automated: `spawn_pools_are_zoned`, `drop_sources_match_the_server`. + +## In game (Prism instance) + +- [ ] In the new save, mine into an ore node or vein: the mined blocks turn into faint glass, and you can keep aiming and mining the ore behind them. Sneak and use one: its info still shows. +- [ ] Do nodes and veins feel right: fewer, bigger? The island has 1.5–3× the old ore; tell me if that's too much. +- [ ] Spend time in Frostpeak or the Deep Sea: now and then a Beartic, Mamoswine, Empoleon or Walrein turns up. JEI's Island Drops page names the zone. + +## Ask Adrian + +- All numbers are placeholders (`docs/balance.md`). diff --git a/docs/design.md b/docs/design.md index f5fa5d4..e6c642e 100644 --- a/docs/design.md +++ b/docs/design.md @@ -322,6 +322,19 @@ The pages sit next to Cobblemon Info's own, and Adrian likes having both, so the JEI runs on the client, which on a dedicated server doesn't have the server's data, so the pages are built from `assets/cobblesurvival/jei/drop_sources.json` inside the mod, written by `tools/jei_sources.py` from the pack's own files (Cobblemon's species drops with the pack's species additions, the zone spawn pools, guardians, the End boss, the machines, `world/zones.json` ores, Cobblebase's zone tables). Which ore a vein gives now lives in `world/zones.json` → `ores` → `item` (the quest book reads it too). Self-tests: `drop_sources_match_the_server` compares the file with the live server (every listed Pokémon's drops and zones, spawns with own drops, guardians, the End boss, altar tiers) and fails when it's stale; `jei_pages_build` builds every page with the same code JEI calls and checks every item exists. +## Phase 9: balancing and release (Adrian, 2026-11-09) + +Adrian's choices: Pokémon with no biome on the island become rare spawns in fitting zones; legendaries come from crafted summons; no public release: he hands the pack out himself through a private channel to select people. The Modrinth/CurseForge split therefore stays unresolved on purpose. + +**Every implemented Pokémon is obtainable** (roadmap). Of 905 implemented species, 95 were out of reach by wild spawn or by evolving a wild line (2026-11-09): +- 5 fossils (Aerodactyl, Arctovish, Arctozolt, Dracovish, Dracozolt): already obtainable. The field guide lists their fossils as found on the island, and the fossil machines are craftable. +- 67 species in 31 lines that spawn only in biomes the island lacks, or not at all (Rotom): each line gets a home in the closest-fitting zone (`world/zones.json` → `homeless`), as a rare spawn anywhere in that zone at its levels. Conditions tied to the missing biomes are dropped. Existing spawns and homes don't move. They show in `docs/zone-species.md` and in JEI. +- 23 legendaries, mythicals, Ultra Beasts and Paradox Pokémon, with no spawn data: crafted summons (to do). + +**Ore veins** (Adrian, 2026-11-09: more sporadic but bigger). Nodes are about 40 % rarer and veins about 30 % further apart, each one block larger in radius; the bigger size outweighs the spacing, so the island holds 1.5–3× the ore. Veins are laid down when chunks generate, so this needs a newly generated island. + +**The respawn block** (Regenerating Ore Veins' regenerator, the placeholder where a mined vein block grows back) no longer stops the player's aim, so the ore behind it can be mined; it never had collision. While sneaking the player can still target it, which is how its info opens. A mixin returns an empty outline shape (`RegeneratorBlockMixin.java`, the mod's only one, targeting the class by name). Its model and glass come from `pack/kubejs/assets/regenerating_ore_veins/`, much fainter than the stained glass it had. Self-test `regenerator_lets_the_aim_through` casts a real ray at it. + ## Open decisions for Adrian (proceeding with the default, flagged) | Decision | Default used for now | diff --git a/docs/roadmap.md b/docs/roadmap.md index 298adca..e880ae2 100644 --- a/docs/roadmap.md +++ b/docs/roadmap.md @@ -191,6 +191,7 @@ Goal: a quest book that points players onward, laid out like a research tree who - **Balance pass** on levels, drop rates, vein timers, job cooldowns, hazard damage and machine output, all from `docs/balance.md`. - **Every implemented Pokémon is obtainable** (Adrian, 2026-11-09). Every species Cobblemon has a model for must be reachable somewhere in the world, even if rarely or through crafting: a wild spawn, evolving a wild line, a fossil, or a crafted or summoned encounter. Legendaries and the like count too; they can be very rare or expensive. Checked on 2026-11-09: 95 of 905 implemented species are not reachable by a wild spawn or by evolving a wild line (legendaries, fossils, and lines the zone assignment left out, such as Aron, Litwick and Piplup). Report what is missing with a tool or self-test so new Cobblemon versions can't reopen the gap. +- **A shader pack by default** (Adrian, 2026-11-09). Ship [Iris](https://modrinth.com/mod/iris) (client only) and [Complementary Reimagined](https://modrinth.com/shader/complementary-reimagined), switched on for new players; players can turn it off or pick a lower profile. Iris 1.8.14-beta.1+1.21.1-neoforge (MR `KduFYu4t`) is built against Sodium 0.8.13, which the pack already pins; it is the only NeoForge 1.21.1 build for Sodium 0.8, and a beta. Complementary r5.9.3 (MR `Bqen1mJX`) has the most downloads of the common shader packs and keeps a vanilla-like look, which suits Cobblemon's models. Its license allows modpacks if it is credited where the pack is described, left unmodified, and added through Modrinth or CurseForge's own systems, never as an uploaded file: the private pack has to download it from Modrinth. Check that Cobblemon's models, the machine and boss particles and the see-through blocks render properly with it on, and measure the frame-rate cost. - **Performance.** Profile with spark on a server with realistic pen and machine counts; cap entity density through pasture config if needed. - **Multiplayer test** with Adrian's group. - **Release.** Final `docs/licenses.md`, credits and non-affiliation disclaimer; publish client and server packs on Modrinth and CurseForge as dependency-based packs. @@ -233,3 +234,5 @@ The agent should proceed with the default in each row and flag it, rather than b - [Cobblemon Auto-Battle changelog (CurseForge)](https://www.curseforge.com/minecraft/mc-mods/cobblemon-auto-battle/files/7999259) - [FTB Quests NeoForge files (CurseForge)](https://www.curseforge.com/minecraft/mc-mods/ftb-quests-forge/files/all) - [FTB Quests flexible-mode fix (Modrinth)](https://modrinth.com/project/SWZGEk5x) +- [Iris Shaders (Modrinth)](https://modrinth.com/mod/iris) +- [Complementary Reimagined (Modrinth)](https://modrinth.com/shader/complementary-reimagined), [its license](https://github.com/ComplementaryDevelopment/ComplementaryReimagined/blob/main/License.txt) diff --git a/docs/zone-species.md b/docs/zone-species.md index cacbd26..f22fceb 100644 --- a/docs/zone-species.md +++ b/docs/zone-species.md @@ -6,57 +6,57 @@ Generated by `tools/zone_spawns.py` from Cobblemon's spawn data and `world/zones Bidoof, Bonsly, Caterpie (Butterfree, Caterpie, Metapod), Combee, Gimmighoul, Hoothoot, Kricketot (Kricketot, Kricketune), Ledyba, Meditite, Meowth, Morpeko, Nincada, Pachirisu, Rattata, Sableye, Scatterbug (Scatterbug, Spewpa), Skitty, Smeargle, Spinarak, Sunkern, Tarountula, Weedle (Beedrill, Kakuna, Weedle), Wooper, Wurmple (Beautifly, Cascoon, Dustox, Silcoon, Wurmple), Wynaut -## Frostpeak Range (Lv 40–55, 43 lines) +## Frostpeak Range (Lv 40–55, 49 lines) -Axew (Fraxure, Haxorus), Basculin (Basculegion, Basculin), Budew (Roselia, Roserade), Cherubi (Cherrim), Chespin (Chesnaught, Quilladin), Chikorita (Bayleef, Meganium), Chimchar (Infernape, Monferno), Cryogonal, Cufant (Copperajah), Delibird, Duraludon (Archaludon, Duraludon), Elekid (Electabuzz, Electivire), Gossifleur (Eldegoss), Larvitar (Pupitar, Tyranitar), Machop (Machamp, Machoke), Makuhita (Hariyama), Mankey (Annihilape, Primeape), Mienfoo (Mienshao), Minior, Rhyhorn (Rhydon, Rhyperior), Riolu (Lucario), Rockruff (Lycanroc), Rowlet (Dartrix, Decidueye), Rufflet (Braviary), Salandit, Sawk, Skiddo (Gogoat), Smoochum (Jynx), Sneasel (Sneasel, Sneasler), Snom (Frosmoth), Snorunt (Froslass, Glalie), Snover (Abomasnow), Spinda, Spoink (Grumpig), Sprigatito (Floragato, Meowscarada), Spritzee (Aromatisse), Starly (Staraptor), Throh, Togedemaru, Togepi (Togekiss, Togetic), Tyrogue (Hitmonchan, Hitmonlee, Hitmontop), Vanillite (Vanillish, Vanilluxe), Wooloo (Dubwool) +Axew (Fraxure, Haxorus), Basculin (Basculegion, Basculin), Bergmite (Avalugg), Budew (Roselia, Roserade), Cetoddle (Cetitan), Cherubi (Cherrim), Chespin (Chesnaught, Quilladin), Chikorita (Bayleef, Meganium), Chimchar (Infernape, Monferno), Cryogonal, Cubchoo (Beartic), Cufant (Copperajah), Delibird, Duraludon (Archaludon, Duraludon), Eiscue, Elekid (Electabuzz, Electivire), Gossifleur (Eldegoss), Larvitar (Pupitar, Tyranitar), Machop (Machamp, Machoke), Makuhita (Hariyama), Mankey (Annihilape, Primeape), Mienfoo (Mienshao), Minior, Rhyhorn (Rhydon, Rhyperior), Riolu (Lucario), Rockruff (Lycanroc), Rowlet (Dartrix, Decidueye), Rufflet (Braviary), Salandit, Sawk, Skiddo (Gogoat), Smoochum (Jynx), Sneasel (Sneasel, Sneasler), Snom (Frosmoth), Snorunt (Froslass, Glalie), Snover (Abomasnow), Spinda, Spoink (Grumpig), Sprigatito (Floragato, Meowscarada), Spritzee (Aromatisse), Stantler (Stantler, Wyrdeer), Starly (Staraptor), Swinub (Mamoswine, Piloswine), Throh, Togedemaru, Togepi (Togekiss, Togetic), Tyrogue (Hitmonchan, Hitmonlee, Hitmontop), Vanillite (Vanillish, Vanilluxe), Wooloo (Dubwool) -## Sunscorch (Lv 30–45, 33 lines) +## Sunscorch (Lv 30–45, 36 lines) -Bramblin (Brambleghast), Cacnea (Cacnea, Cacturne), Capsakid (Capsakid, Scovillain), Cubone (Cubone, Marowak), Drampa, Dwebble (Crustle, Dwebble), Ekans (Arbok), Falinks, Fennekin (Braixen, Delphox, Fennekin), Flittle (Espathra), Fuecoco (Crocalor, Fuecoco, Skeledirge), Helioptile (Heliolisk), Hippopotas (Hippopotas, Hippowdon), Klawf, Larvesta, Maractus, Nacli (Garganacl, Naclstack), Numel (Camerupt, Numel), Pawniard, Phanpy (Donphan, Phanpy), Poltchageist (Poltchageist, Sinistcha), Rellor (Rabsca), Sandile (Krokorok, Krookodile), Sandshrew (Sandshrew, Sandslash), Scraggy (Scrafty, Scraggy), Shinx (Luxio, Luxray), Silicobra (Sandaconda, Silicobra), Skarmory, Skorupi (Drapion, Skorupi), Spearow (Fearow), Totodile (Croconaw, Feraligatr, Totodile), Trapinch (Flygon, Vibrava), Tympole (Palpitoad, Seismitoad) +Bramblin (Brambleghast), Cacnea (Cacnea, Cacturne), Capsakid (Capsakid, Scovillain), Cubone (Cubone, Marowak), Drampa, Dwebble (Crustle, Dwebble), Ekans (Arbok), Falinks, Fennekin (Braixen, Delphox, Fennekin), Flittle (Espathra), Fuecoco (Crocalor, Fuecoco, Skeledirge), Girafarig (Farigiraf, Girafarig), Helioptile (Heliolisk), Hippopotas (Hippopotas, Hippowdon), Kangaskhan, Klawf, Larvesta, Litleo (Litleo, Pyroar), Maractus, Nacli (Garganacl, Naclstack), Numel (Camerupt, Numel), Pawniard, Phanpy (Donphan, Phanpy), Poltchageist (Poltchageist, Sinistcha), Rellor (Rabsca), Sandile (Krokorok, Krookodile), Sandshrew (Sandshrew, Sandslash), Scraggy (Scrafty, Scraggy), Shinx (Luxio, Luxray), Silicobra (Sandaconda, Silicobra), Skarmory, Skorupi (Drapion, Skorupi), Spearow (Fearow), Totodile (Croconaw, Feraligatr, Totodile), Trapinch (Flygon, Vibrava), Tympole (Palpitoad, Seismitoad) -## Mangrove Mire (Lv 25–38, 18 lines) +## Mangrove Mire (Lv 25–38, 20 lines) -Arrokuda (Arrokuda, Barraskewda), Croagunk (Croagunk, Toxicroak), Dondozo, Ducklett (Ducklett, Swanna), Flamigo, Froakie (Froakie, Frogadier, Greninja), Illumise, Karrablast (Escavalier, Karrablast), Misdreavus, Mudkip (Marshtomp, Mudkip, Swampert), Shelmet (Accelgor, Shelmet), Slowpoke, Sobble (Drizzile, Inteleon, Sobble), Surskit (Masquerain, Surskit), Tadbulb (Bellibolt, Tadbulb), Tatsugiri, Volbeat, Yanma (Yanma, Yanmega) +Arrokuda (Arrokuda, Barraskewda), Croagunk (Croagunk, Toxicroak), Dondozo, Ducklett (Ducklett, Swanna), Flamigo, Froakie (Froakie, Frogadier, Greninja), Hatenna (Hatenna, Hattrem), Illumise, Karrablast (Escavalier, Karrablast), Misdreavus, Mudkip (Marshtomp, Mudkip, Swampert), Shelmet (Accelgor, Shelmet), Slowpoke, Sobble (Drizzile, Inteleon, Sobble), Surskit (Masquerain, Surskit), Tadbulb (Bellibolt, Tadbulb), Tatsugiri, Toedscool (Toedscool, Toedscruel), Volbeat, Yanma (Yanma, Yanmega) -## Verdant Jungle (Lv 18–30, 26 lines) +## Verdant Jungle (Lv 18–30, 29 lines) -Aipom, Bellsprout (Bellsprout, Weepinbell), Bounsweet (Bounsweet, Steenee, Tsareena), Bulbasaur (Bulbasaur, Ivysaur), Chatot, Darumaka, Exeggcute (Exeggcute, Exeggutor), Fomantis, Grookey (Grookey, Thwackey), Jangmo-o, Kecleon, Litten (Litten, Torracat), Natu (Natu, Xatu), Panpour (Panpour, Simipour), Pansage (Pansage, Simisage), Pansear (Pansear, Simisear), Pikipek (Pikipek, Toucannon, Trumbeak), Shroodle (Grafaiai, Shroodle), Slakoth (Slakoth, Vigoroth), Snivy (Servine, Snivy), Stunfisk, Tangela (Tangela, Tangrowth), Treecko (Grovyle, Treecko), Tropius, Unown, Woobat (Swoobat, Woobat) +Aipom, Bellsprout (Bellsprout, Weepinbell), Bounsweet (Bounsweet, Steenee, Tsareena), Bulbasaur (Bulbasaur, Ivysaur), Chatot, Darumaka, Exeggcute (Exeggcute, Exeggutor), Fomantis, Grookey (Grookey, Thwackey), Jangmo-o, Kecleon, Komala, Litten (Litten, Torracat), Natu (Natu, Xatu), Pancham, Panpour (Panpour, Simipour), Pansage (Pansage, Simisage), Pansear (Pansear, Simisear), Pikipek (Pikipek, Toucannon, Trumbeak), Shroodle (Grafaiai, Shroodle), Slakoth (Slakoth, Vigoroth), Snivy (Servine, Snivy), Stufful (Bewear, Stufful), Stunfisk, Tangela (Tangela, Tangrowth), Treecko (Grovyle, Treecko), Tropius, Unown, Woobat (Swoobat, Woobat) -## Highland Meadows (Lv 25–35, 39 lines) +## Highland Meadows (Lv 25–35, 41 lines) -Abra (Abra, Alakazam, Kadabra), Bouffalant, Buizel (Buizel, Floatzel), Chewtle (Chewtle, Drednaw), Cottonee (Cottonee, Whimsicott), Cyclizar, Cyndaquil (Cyndaquil, Quilava), Electrike (Electrike, Manectric), Fletchling (Fletchinder, Fletchling, Talonflame), Golett, Hoppip (Hoppip, Jumpluff, Skiploom), Igglybuff (Jigglypuff, Wigglytuff), Lechonk (Lechonk, Oinkologne), Lickitung (Lickilicky, Lickitung), Mareep (Ampharos, Flaaffy, Mareep), Miltank, Mudbray (Mudbray, Mudsdale), Nymble (Lokix), Oddish (Bellossom, Gloom, Oddish, Vileplume), Pidgey (Pidgeotto, Pidgey), Poliwag (Politoed, Poliwag, Poliwhirl, Poliwrath), Ponyta, Poochyena (Mightyena), Psyduck (Golduck, Psyduck), Quaxly (Quaxly, Quaxwell), Scorbunny (Cinderace, Raboot, Scorbunny), Seviper, Sinistea (Polteageist, Sinistea), Spiritomb, Squirtle (Squirtle, Wartortle), Stonjourner, Tauros, Tepig (Pignite, Tepig), Tinkatink (Tinkatink, Tinkatuff), Torchic (Combusken, Torchic), Turtwig (Grotle, Torterra, Turtwig), Vulpix (Ninetales, Vulpix), Zangoose, Zorua (Zoroark, Zorua) +Abra (Abra, Alakazam, Kadabra), Blitzle (Blitzle, Zebstrika), Bouffalant, Buizel (Buizel, Floatzel), Chewtle (Chewtle, Drednaw), Cottonee (Cottonee, Whimsicott), Cyclizar, Cyndaquil (Cyndaquil, Quilava), Doduo (Dodrio, Doduo), Electrike (Electrike, Manectric), Fletchling (Fletchinder, Fletchling, Talonflame), Golett, Hoppip (Hoppip, Jumpluff, Skiploom), Igglybuff (Jigglypuff, Wigglytuff), Lechonk (Lechonk, Oinkologne), Lickitung (Lickilicky, Lickitung), Mareep (Ampharos, Flaaffy, Mareep), Miltank, Mudbray (Mudbray, Mudsdale), Nymble (Lokix), Oddish (Bellossom, Gloom, Oddish, Vileplume), Pidgey (Pidgeotto, Pidgey), Poliwag (Politoed, Poliwag, Poliwhirl, Poliwrath), Ponyta, Poochyena (Mightyena), Psyduck (Golduck, Psyduck), Quaxly (Quaxly, Quaxwell), Scorbunny (Cinderace, Raboot, Scorbunny), Seviper, Sinistea (Polteageist, Sinistea), Spiritomb, Squirtle (Squirtle, Wartortle), Stonjourner, Tauros, Tepig (Pignite, Tepig), Tinkatink (Tinkatink, Tinkatuff), Torchic (Combusken, Torchic), Turtwig (Grotle, Torterra, Turtwig), Vulpix (Ninetales, Vulpix), Zangoose, Zorua (Zoroark, Zorua) -## Westmarch (Lv 15–25, 23 lines) +## Westmarch (Lv 15–25, 27 lines) -Applin (Appletun, Applin, Dipplin, Flapple), Buneary, Corphish, Deerling, Dewpider (Araquanid, Dewpider), Dratini, Flabébé (Flabébé, Floette), Gible (Gabite, Gible), Goomy, Magikarp (Gyarados, Magikarp), Munchlax, Nickit (Nickit, Thievul), Petilil (Lilligant, Petilil), Phantump, Pichu (Pichu, Pikachu), Scyther, Seedot (Nuzleaf, Seedot), Sewaddle (Sewaddle, Swadloon), Shroomish (Breloom, Shroomish), Skwovet (Greedent, Skwovet), Stunky, Tandemaus (Maushold, Tandemaus), Teddiursa +Applin (Appletun, Applin, Dipplin, Flapple), Buneary, Corphish, Dedenne, Deerling, Dewpider (Araquanid, Dewpider), Dratini, Emolga, Flabébé (Flabébé, Floette), Gible (Gabite, Gible), Goomy, Magikarp (Gyarados, Magikarp), Munchlax, Nickit (Nickit, Thievul), Petilil (Lilligant, Petilil), Phantump, Pichu (Pichu, Pikachu), Pineco, Rotom, Scyther, Seedot (Nuzleaf, Seedot), Sewaddle (Sewaddle, Swadloon), Shroomish (Breloom, Shroomish), Skwovet (Greedent, Skwovet), Stunky, Tandemaus (Maushold, Tandemaus), Teddiursa -## Southwold (Lv 8–18, 50 lines) +## Southwold (Lv 8–18, 53 lines) -Audino, Azurill (Azumarill, Azurill, Marill), Bunnelby, Burmy, Chingling, Corsola, Drifloon, Dunsparce, Eevee, Farfetch'd, Furfrou, Gastly, Glameow, Goldeen, Grimer, Grubbin, Happiny (Chansey, Happiny), Hawlucha, Heracross, Koffing, Lillipup (Herdier, Lillipup), Lotad (Lombre, Lotad), Magnemite, Minccino, Minun, Noibat, Patrat, Pidove, Pinsir, Plusle, Porygon, Pumpkaboo, Relicanth, Sentret (Furret, Sentret), Shuppet, Squawkabilly, Swablu, Taillow, Tentacool, Timburr, Toxel, Tynamo, Venonat, Voltorb, Whismur, Wimpod, Yamask, Yamper, Yungoos, Zigzagoon +Audino, Azurill (Azumarill, Azurill, Marill), Bunnelby, Burmy, Chingling, Corsola, Drifloon, Dunsparce, Eevee, Farfetch'd, Furfrou, Gastly, Glameow, Goldeen, Grimer, Grubbin, Happiny (Chansey, Happiny), Hawlucha, Heracross, Koffing, Lillipup (Herdier, Lillipup), Lotad (Lombre, Lotad), Magnemite, Minccino, Minun, Nidoran♀ (Nidoran♀, Nidorina), Nidoran♂ (Nidoran♂, Nidorino), Noibat, Patrat, Pidove, Pinsir, Plusle, Porygon, Pumpkaboo, Relicanth, Sentret (Furret, Sentret), Shuppet, Smoliv, Squawkabilly, Swablu, Taillow, Tentacool, Timburr, Toxel, Tynamo, Venonat, Voltorb, Whismur, Wimpod, Yamask, Yamper, Yungoos, Zigzagoon ## Shallows (Lv 5–20, 21 lines) Alomomola, Bruxish, Carvanha, Chinchou, Clobbopus, Crabrawler, Cramorant, Finizen, Finneon, Inkay, Krabby, Luvdisc, Mareanie, Pincurchin, Pyukumuku, Qwilfish, Sandygast, Shellos, Wiglett, Wingull, Wishiwashi -## Deep Sea (Lv 30–50, 18 lines) +## Deep Sea (Lv 30–50, 21 lines) -Binacle (Barbaracle, Binacle), Clamperl (Clamperl, Gorebyss, Huntail), Clauncher (Clauncher, Clawitzer), Dhelmise, Dreepy (Drakloak), Frillish (Frillish, Jellicent), Horsea (Horsea, Kingdra, Seadra), Lapras, Mantyke (Mantine, Mantyke), Oshawott (Dewott, Oshawott, Samurott), Popplio (Brionne, Popplio, Primarina), Remoraid (Octillery, Remoraid), Shellder (Cloyster, Shellder), Skrelp (Dragalge, Skrelp), Staryu (Starmie, Staryu), Veluza, Wailmer (Wailmer, Wailord), Wattrel (Kilowattrel) +Binacle (Barbaracle, Binacle), Clamperl (Clamperl, Gorebyss, Huntail), Clauncher (Clauncher, Clawitzer), Dhelmise, Dreepy (Drakloak), Frillish (Frillish, Jellicent), Horsea (Horsea, Kingdra, Seadra), Lapras, Mantyke (Mantine, Mantyke), Oshawott (Dewott, Oshawott, Samurott), Piplup (Empoleon, Piplup, Prinplup), Popplio (Brionne, Popplio, Primarina), Remoraid (Octillery, Remoraid), Seel (Dewgong, Seel), Shellder (Cloyster, Shellder), Skrelp (Dragalge, Skrelp), Spheal (Sealeo, Walrein), Staryu (Starmie, Staryu), Veluza, Wailmer (Wailmer, Wailord), Wattrel (Kilowattrel) -## Lush Caves (Lv 12–28, 21 lines) +## Lush Caves (Lv 12–28, 22 lines) -Amaura, Anorith, Archen, Barboach, Carnivine, Cranidos, Cutiefly (Cutiefly, Ribombee), Ferroseed, Joltik, Kabuto, Lileep, Morelull (Morelull, Shiinotic), Omanyte, Paras (Paras, Parasect), Shieldon, Shuckle, Snubbull (Granbull, Snubbull), Tirtouga, Trubbish, Tyrunt, Venipede (Venipede, Whirlipede) +Amaura, Anorith, Archen, Barboach, Carnivine, Cranidos, Cutiefly (Cutiefly, Ribombee), Ferroseed, Foongus, Joltik, Kabuto, Lileep, Morelull (Morelull, Shiinotic), Omanyte, Paras (Paras, Parasect), Shieldon, Shuckle, Snubbull (Granbull, Snubbull), Tirtouga, Trubbish, Tyrunt, Venipede (Venipede, Whirlipede) -## Dripstone Depths (Lv 22–38, 21 lines) +## Dripstone Depths (Lv 22–38, 22 lines) -Bagon (Bagon, Shelgon), Baltoy (Baltoy, Claydol), Beldum (Beldum, Metang), Cleffa (Clefable, Clefairy, Cleffa), Comfey, Drowzee (Drowzee, Hypno), Druddigon, Elgyem, Espurr (Espurr, Meowstic), Fidough (Dachsbun, Fidough), Geodude (Geodude, Golem, Graveler), Indeedee, Klefki, Lunatone, Milcery (Alcremie, Milcery), Munna (Munna, Musharna), Orthworm, Sigilyph, Solosis (Duosion, Solosis), Solrock, Swirlix (Slurpuff, Swirlix) +Aron (Aron, Lairon), Bagon (Bagon, Shelgon), Baltoy (Baltoy, Claydol), Beldum (Beldum, Metang), Cleffa (Clefable, Clefairy, Cleffa), Comfey, Drowzee (Drowzee, Hypno), Druddigon, Elgyem, Espurr (Espurr, Meowstic), Fidough (Dachsbun, Fidough), Geodude (Geodude, Golem, Graveler), Indeedee, Klefki, Lunatone, Milcery (Alcremie, Milcery), Munna (Munna, Musharna), Orthworm, Sigilyph, Solosis (Duosion, Solosis), Solrock, Swirlix (Slurpuff, Swirlix) -## Deep Dark (Lv 45–60, 22 lines) +## Deep Dark (Lv 45–60, 24 lines) -Bronzor (Bronzong), Carbink, Deino (Zweilous), Ditto, Duskull (Dusclops, Dusknoir), Feebas (Milotic), Glimmet (Glimmora), Greavard (Houndstone), Honedge (Aegislash, Doublade), Klink (Klinklang), Maschiff (Mabosstiff), Mime Jr. (Mr. Mime, Mr. Rime), Mimikyu, Murkrow (Honchkrow), Nosepass (Probopass), Onix (Steelix), Ralts (Gallade, Gardevoir), Roggenrola (Gigalith), Rolycoly (Coalossal), Rookidee (Corviknight), Varoom (Revavroom), Zubat (Crobat, Golbat) +Bronzor (Bronzong), Carbink, Deino (Zweilous), Ditto, Duskull (Dusclops, Dusknoir), Feebas (Milotic), Glimmet (Glimmora), Greavard (Houndstone), Honedge (Aegislash, Doublade), Impidimp (Grimmsnarl), Klink (Klinklang), Litwick (Chandelure, Lampent), Maschiff (Mabosstiff), Mime Jr. (Mr. Mime, Mr. Rime), Mimikyu, Murkrow (Honchkrow), Nosepass (Probopass), Onix (Steelix), Ralts (Gallade, Gardevoir), Roggenrola (Gigalith), Rolycoly (Coalossal), Rookidee (Corviknight), Varoom (Revavroom), Zubat (Crobat, Golbat) -## Basalt Furnace (Lv 55–70, 16 lines) +## Basalt Furnace (Lv 55–70, 17 lines) -Absol, Charmander (Charizard), Diglett (Dugtrio), Drilbur (Excadrill), Durant, Gligar (Gliscor), Growlithe (Arcanine), Heatmor, Houndour (Houndoom), Magby (Magmortar), Mawile, Purrloin (Liepard), Sizzlipede (Centiskorch), Slugma (Magcargo), Torkoal, Turtonator +Absol, Charcadet (Armarouge), Charmander (Charizard), Diglett (Dugtrio), Drilbur (Excadrill), Durant, Gligar (Gliscor), Growlithe (Arcanine), Heatmor, Houndour (Houndoom), Magby (Magmortar), Mawile, Purrloin (Liepard), Sizzlipede (Centiskorch), Slugma (Magcargo), Torkoal, Turtonator ## The End (Lv 50–70, 7 lines) diff --git a/mod/src/main/java/dev/cobblesurvival/mixin/RegeneratorBlockMixin.java b/mod/src/main/java/dev/cobblesurvival/mixin/RegeneratorBlockMixin.java new file mode 100644 index 0000000..9b3f956 --- /dev/null +++ b/mod/src/main/java/dev/cobblesurvival/mixin/RegeneratorBlockMixin.java @@ -0,0 +1,25 @@ +package dev.cobblesurvival.mixin; + +import net.minecraft.core.BlockPos; +import net.minecraft.world.level.BlockGetter; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.phys.shapes.CollisionContext; +import net.minecraft.world.phys.shapes.Shapes; +import net.minecraft.world.phys.shapes.VoxelShape; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; + +/** + * A mined vein block waiting to grow back (Regenerating Ore Veins' regenerator) no longer stops the player's aim, so the + * ore behind it can be mined (Adrian, 2026-11-09). It keeps its outline while sneaking: that's how its info is opened. + * Named by string, so the companion mod needs the vein mod only at run time. + */ +@Mixin(targets = "net.stargazer.regenerating_ore_veins.RegeneratorBlock", remap = false) +abstract class RegeneratorBlockMixin { + @Inject(method = "getShape", at = @At("HEAD"), cancellable = true) + private void cobblesurvival$aimThrough(BlockState state, BlockGetter level, BlockPos pos, CollisionContext context, CallbackInfoReturnable result) { + if (!context.isDescending()) result.setReturnValue(Shapes.empty()); + } +} diff --git a/mod/src/main/kotlin/dev/cobblesurvival/selftest/OreNodeTests.kt b/mod/src/main/kotlin/dev/cobblesurvival/selftest/OreNodeTests.kt index 04a4fb1..361180a 100644 --- a/mod/src/main/kotlin/dev/cobblesurvival/selftest/OreNodeTests.kt +++ b/mod/src/main/kotlin/dev/cobblesurvival/selftest/OreNodeTests.kt @@ -7,6 +7,7 @@ import net.minecraft.core.BlockPos import net.minecraft.core.Direction import net.minecraft.gametest.framework.GameTestAssertException import net.minecraft.world.level.ChunkPos +import net.minecraft.world.level.levelgen.Heightmap /** * Ore nodes on the island (Adrian, 2026-10-30): a surface node is a small lump of ore in the ground of its zone with @@ -44,8 +45,9 @@ object OreNodeTests { if (cave) { s.check(level.getBiome(ground.above()).`is`(node.biome!!)) { "the ${node.vein} at ${ground.toShortString()} isn't in ${node.biome}" } } else { - val top = blocks.maxBy { it.y } - s.check(level.canSeeSky(top.above())) { "the ${node.vein} at ${ground.toShortString()} is under cover" } + // Open ground over the node's centre (leaves don't count): a wide node's edge may lie under a tree or a slope. + val surface = level.getHeight(Heightmap.Types.MOTION_BLOCKING_NO_LEAVES, ground.x, ground.z) + s.check(surface <= ground.y + 2) { "the ${node.vein} at ${ground.toShortString()} is under cover (ground at $surface)" } s.check(blocks.all { Zones.at(level, it)?.id == zone }) { "the ${node.vein} at ${ground.toShortString()} reaches out of $zone" } } } diff --git a/mod/src/main/kotlin/dev/cobblesurvival/selftest/VeinTests.kt b/mod/src/main/kotlin/dev/cobblesurvival/selftest/VeinTests.kt index fe70e38..6daf7c7 100644 --- a/mod/src/main/kotlin/dev/cobblesurvival/selftest/VeinTests.kt +++ b/mod/src/main/kotlin/dev/cobblesurvival/selftest/VeinTests.kt @@ -7,6 +7,7 @@ import net.minecraft.resources.ResourceLocation import net.minecraft.server.level.ServerLevel import net.minecraft.server.level.ServerPlayer import net.minecraft.world.level.ChunkPos +import net.minecraft.world.level.ClipContext import net.minecraft.world.level.GameType import net.minecraft.world.level.block.Blocks import net.minecraft.world.phys.Vec3 @@ -26,11 +27,35 @@ object VeinTests { private val REGENERATOR = ResourceLocation.fromNamespaceAndPath("regenerating_ore_veins", "regenerator_block") fun all() = listOf( + SelfTestCase("regenerator_lets_the_aim_through", 20, ::aimThrough), SelfTestCase("vein_regrows_after_unload", 1200, ::afterUnload), SelfTestCase("vein_mined_before_restart", 400, ::beforeRestart), SelfTestCase("vein_regrows_after_restart", 400, ::afterRestart, afterRestart = true), ) + /** + * A mined vein block waiting to grow back doesn't stop the player's aim, so the ore behind it can be mined (Adrian, + * 2026-11-09; mixin/RegeneratorBlockMixin.java); while sneaking the player can target it, which opens its info. + */ + private fun aimThrough(s: Scenario) { + val regenerator = BuiltInRegistries.BLOCK.get(ResourceLocation.parse("regenerating_ore_veins:regenerator_block")) + s.check(regenerator != Blocks.AIR) { "Regenerating Ore Veins' regenerator isn't installed" } + val player = s.player() + val pos = s.helper.absolutePos(BlockPos(7, 2, 7)) + val behind = pos.east() + s.level.setBlockAndUpdate(pos, regenerator.defaultBlockState()) + s.level.setBlockAndUpdate(behind, Blocks.STONE.defaultBlockState()) + fun aimedAt(): BlockPos { + val from = Vec3(pos.x - 2.5, pos.y + 0.5, pos.z + 0.5) + return s.level.clip(ClipContext(from, from.add(6.0, 0.0, 0.0), ClipContext.Block.OUTLINE, ClipContext.Fluid.NONE, player)).blockPos + } + s.check(aimedAt() == behind) { "the aim stops at ${aimedAt().toShortString()}, not at the block behind the regenerator" } + player.isShiftKeyDown = true + s.check(aimedAt() == pos) { "sneaking, the aim doesn't find the regenerator (it stops at ${aimedAt().toShortString()})" } + player.isShiftKeyDown = false + s.helper.succeed() + } + private fun afterUnload(s: Scenario) { val level = s.level val pos = spot(level, UNLOAD_OFFSET) diff --git a/mod/src/main/resources/META-INF/neoforge.mods.toml b/mod/src/main/resources/META-INF/neoforge.mods.toml index 2c53b92..2837153 100644 --- a/mod/src/main/resources/META-INF/neoforge.mods.toml +++ b/mod/src/main/resources/META-INF/neoforge.mods.toml @@ -12,6 +12,9 @@ Mechanics for the Cobblemon Survival Pack that no existing addon covers. Not affiliated with Cobblemon, The Pokémon Company, Nintendo, Game Freak or Creatures Inc. ''' +[[mixins]] +config = "cobblesurvival.mixins.json" + [[dependencies.${mod_id}]] modId = "minecraft" type = "required" diff --git a/mod/src/main/resources/assets/cobblesurvival/jei/drop_sources.json b/mod/src/main/resources/assets/cobblesurvival/jei/drop_sources.json index eb9f885..c79fcae 100644 --- a/mod/src/main/resources/assets/cobblesurvival/jei/drop_sources.json +++ b/mod/src/main/resources/assets/cobblesurvival/jei/drop_sources.json @@ -234,6 +234,32 @@ } ] }, + { + "species": "cobblemon:aggron", + "drops": [ + { + "item": "minecraft:raw_iron", + "count": "0-3" + }, + { + "item": "cobblemon:hard_stone", + "count": "1", + "chance": 10.0 + }, + { + "item": "cobblemon:chople_berry", + "count": "1", + "chance": 10.0 + } + ], + "zones": [], + "line": [ + { + "zone": "dripstone", + "species": "cobblemon:aron" + } + ] + }, { "species": "cobblemon:aipom", "drops": [ @@ -378,6 +404,27 @@ } ] }, + { + "species": "cobblemon:amoonguss", + "drops": [ + { + "item": "minecraft:red_mushroom", + "count": "0-2" + }, + { + "item": "cobblemon:cheri_berry", + "count": "1", + "chance": 5.0 + } + ], + "zones": [], + "line": [ + { + "zone": "lush_caves", + "species": "cobblemon:foongus" + } + ] + }, { "species": "cobblemon:ampharos", "drops": [ @@ -512,6 +559,28 @@ } ] }, + { + "species": "cobblemon:arboliva", + "drops": [ + { + "item": "cobblemon:big_root", + "count": "1", + "chance": 10.0 + }, + { + "item": "cobblemon:kebia_berry", + "count": "1", + "chance": 10.0 + } + ], + "zones": [], + "line": [ + { + "zone": "southwold", + "species": "cobblemon:smoliv" + } + ] + }, { "species": "cobblemon:arcanine", "drops": [ @@ -609,6 +678,36 @@ } ] }, + { + "species": "cobblemon:armarouge", + "drops": [ + { + "item": "minecraft:charcoal", + "count": "0-2" + }, + { + "item": "cobblemon:charcoal_stick", + "count": "1", + "chance": 5.0 + }, + { + "item": "cobblemon:auspicious_armor", + "count": "1", + "chance": 5.0 + }, + { + "item": "cobblemon:rawst_berry", + "count": "1", + "chance": 5.0 + } + ], + "zones": [ + { + "zone": "basalt", + "levels": "55-70" + } + ] + }, { "species": "cobblemon:aromatisse", "drops": [ @@ -630,6 +729,31 @@ } ] }, + { + "species": "cobblemon:aron", + "drops": [ + { + "item": "minecraft:raw_iron", + "count": "0-1" + }, + { + "item": "cobblemon:hard_stone", + "count": "1", + "chance": 2.5 + }, + { + "item": "cobblemon:chople_berry", + "count": "1", + "chance": 2.5 + } + ], + "zones": [ + { + "zone": "dripstone", + "levels": "22-38" + } + ] + }, { "species": "cobblemon:arrokuda", "drops": [ @@ -688,6 +812,27 @@ } ] }, + { + "species": "cobblemon:avalugg", + "drops": [ + { + "item": "cobblemon:never_melt_ice", + "count": "1", + "chance": 5.0 + }, + { + "item": "cobblemon:aspear_berry", + "count": "1", + "chance": 5.0 + } + ], + "zones": [ + { + "zone": "frostpeak", + "levels": "40-55" + } + ] + }, { "species": "cobblemon:axew", "drops": [ @@ -948,6 +1093,30 @@ } ] }, + { + "species": "cobblemon:beartic", + "drops": [ + { + "item": "minecraft:snowball", + "count": "0-2" + }, + { + "item": "minecraft:cod", + "count": "0-2" + }, + { + "item": "cobblemon:aspear_berry", + "count": "1", + "chance": 5.0 + } + ], + "zones": [ + { + "zone": "frostpeak", + "levels": "40-55" + } + ] + }, { "species": "cobblemon:beautifly", "drops": [ @@ -1108,6 +1277,44 @@ } ] }, + { + "species": "cobblemon:bergmite", + "drops": [ + { + "item": "cobblemon:never_melt_ice", + "count": "1", + "chance": 2.5 + }, + { + "item": "cobblemon:aspear_berry", + "count": "1", + "chance": 2.5 + } + ], + "zones": [], + "line": [ + { + "zone": "frostpeak", + "species": "cobblemon:avalugg" + } + ] + }, + { + "species": "cobblemon:bewear", + "drops": [ + { + "item": "cobblemon:chople_berry", + "count": "1", + "chance": 5.0 + } + ], + "zones": [ + { + "zone": "jungle", + "levels": "27-30" + } + ] + }, { "species": "cobblemon:bibarel", "drops": [ @@ -1260,6 +1467,26 @@ } ] }, + { + "species": "cobblemon:blitzle", + "drops": [ + { + "item": "minecraft:leather", + "count": "0-1" + }, + { + "item": "cobblemon:cheri_berry", + "count": "1", + "chance": 2.5 + } + ], + "zones": [ + { + "zone": "highlands", + "levels": "25-35" + } + ] + }, { "species": "cobblemon:boldore", "drops": [ @@ -2074,6 +2301,103 @@ } ] }, + { + "species": "cobblemon:ceruledge", + "drops": [ + { + "item": "minecraft:charcoal", + "count": "0-2" + }, + { + "item": "cobblemon:charcoal_stick", + "count": "1", + "chance": 5.0 + }, + { + "item": "cobblemon:malicious_armor", + "count": "1", + "chance": 5.0 + }, + { + "item": "cobblemon:rawst_berry", + "count": "1", + "chance": 5.0 + } + ], + "zones": [], + "line": [ + { + "zone": "basalt", + "species": "cobblemon:armarouge" + } + ] + }, + { + "species": "cobblemon:cetitan", + "drops": [ + { + "item": "minecraft:bone_block", + "count": "0-2" + }, + { + "item": "cobblemon:aspear_berry", + "count": "1", + "chance": 5.0 + } + ], + "zones": [ + { + "zone": "frostpeak", + "levels": "40-55" + } + ] + }, + { + "species": "cobblemon:cetoddle", + "drops": [ + { + "item": "minecraft:bone_block", + "count": "0-1" + }, + { + "item": "cobblemon:aspear_berry", + "count": "1", + "chance": 2.5 + } + ], + "zones": [], + "line": [ + { + "zone": "frostpeak", + "species": "cobblemon:cetitan" + } + ] + }, + { + "species": "cobblemon:chandelure", + "drops": [ + { + "item": "minecraft:candle", + "count": "1-3" + }, + { + "item": "cobblemon:dusk_stone", + "count": "1", + "chance": 10.0 + }, + { + "item": "cobblemon:rawst_berry", + "count": "1", + "chance": 10.0 + } + ], + "zones": [ + { + "zone": "deep_dark", + "levels": "45-60" + } + ] + }, { "species": "cobblemon:chansey", "drops": [ @@ -2100,6 +2424,32 @@ } ] }, + { + "species": "cobblemon:charcadet", + "drops": [ + { + "item": "minecraft:charcoal", + "count": "0-2" + }, + { + "item": "cobblemon:charcoal_stick", + "count": "1", + "chance": 2.5 + }, + { + "item": "cobblemon:rawst_berry", + "count": "1", + "chance": 2.5 + } + ], + "zones": [], + "line": [ + { + "zone": "basalt", + "species": "cobblemon:armarouge" + } + ] + }, { "species": "cobblemon:charizard", "drops": [ @@ -3156,6 +3506,31 @@ } ] }, + { + "species": "cobblemon:cubchoo", + "drops": [ + { + "item": "minecraft:snowball", + "count": "0-1" + }, + { + "item": "minecraft:cod", + "count": "0-1" + }, + { + "item": "cobblemon:aspear_berry", + "count": "1", + "chance": 2.5 + } + ], + "zones": [], + "line": [ + { + "zone": "frostpeak", + "species": "cobblemon:beartic" + } + ] + }, { "species": "cobblemon:cubone", "drops": [ @@ -3372,6 +3747,22 @@ } ] }, + { + "species": "cobblemon:dedenne", + "drops": [ + { + "item": "cobblemon:cheri_berry", + "count": "1", + "chance": 5.0 + } + ], + "zones": [ + { + "zone": "westmarch", + "levels": "18-25" + } + ] + }, { "species": "cobblemon:deerling", "drops": [ @@ -3483,6 +3874,31 @@ } ] }, + { + "species": "cobblemon:dewgong", + "drops": [ + { + "item": "minecraft:cod", + "count": "0-2" + }, + { + "item": "cobblemon:never_melt_ice", + "count": "1", + "chance": 5.0 + }, + { + "item": "cobblemon:aspear_berry", + "count": "1", + "chance": 5.0 + } + ], + "zones": [ + { + "zone": "deep_sea", + "levels": "34-50" + } + ] + }, { "species": "cobblemon:dewott", "drops": [ @@ -3630,6 +4046,86 @@ } ] }, + { + "species": "cobblemon:dodrio", + "drops": [ + { + "item": "minecraft:feather", + "count": "0-2" + }, + { + "item": "minecraft:chicken", + "count": "1" + }, + { + "item": "cobblemon:sharp_beak", + "count": "1", + "chance": 5.0 + }, + { + "item": "cobblemon:wacan_berry", + "count": "1", + "chance": 5.0 + } + ], + "zones": [ + { + "zone": "highlands", + "levels": "31-35" + } + ] + }, + { + "species": "cobblemon:doduo", + "drops": [ + { + "item": "minecraft:feather", + "count": "0-1" + }, + { + "item": "minecraft:chicken", + "count": "1" + }, + { + "item": "cobblemon:sharp_beak", + "count": "1", + "chance": 2.5 + }, + { + "item": "cobblemon:wacan_berry", + "count": "1", + "chance": 2.5 + } + ], + "zones": [ + { + "zone": "highlands", + "levels": "25-35" + } + ] + }, + { + "species": "cobblemon:dolliv", + "drops": [ + { + "item": "cobblemon:big_root", + "count": "1", + "chance": 5.0 + }, + { + "item": "cobblemon:kebia_berry", + "count": "1", + "chance": 5.0 + } + ], + "zones": [], + "line": [ + { + "zone": "southwold", + "species": "cobblemon:smoliv" + } + ] + }, { "species": "cobblemon:dondozo", "drops": [ @@ -4430,6 +4926,38 @@ } ] }, + { + "species": "cobblemon:eiscue", + "drops": [ + { + "item": "minecraft:feather", + "count": "0-1" + }, + { + "item": "minecraft:chicken", + "count": "1" + }, + { + "item": "minecraft:cod", + "count": "0-1" + }, + { + "item": "minecraft:blue_ice", + "count": "1" + }, + { + "item": "cobblemon:aspear_berry", + "count": "1", + "chance": 5.0 + } + ], + "zones": [ + { + "zone": "frostpeak", + "levels": "40-55" + } + ] + }, { "species": "cobblemon:ekans", "drops": [ @@ -4629,6 +5157,46 @@ } ] }, + { + "species": "cobblemon:emolga", + "drops": [ + { + "item": "cobblemon:yache_berry", + "count": "1", + "chance": 5.0 + } + ], + "zones": [ + { + "zone": "westmarch", + "levels": "18-25" + } + ] + }, + { + "species": "cobblemon:empoleon", + "drops": [ + { + "item": "minecraft:feather", + "count": "0-3" + }, + { + "item": "minecraft:chicken", + "count": "1" + }, + { + "item": "cobblemon:mystic_water", + "count": "1", + "chance": 25.0 + } + ], + "zones": [ + { + "zone": "deep_sea", + "levels": "36-50" + } + ] + }, { "species": "cobblemon:escavalier", "drops": [ @@ -4864,6 +5432,31 @@ } ] }, + { + "species": "cobblemon:farigiraf", + "drops": [ + { + "item": "minecraft:leather", + "count": "0-2" + }, + { + "item": "cobblemon:razor_fang", + "count": "1", + "chance": 5.0 + }, + { + "item": "cobblemon:persim_berry", + "count": "1", + "chance": 5.0 + } + ], + "zones": [ + { + "zone": "sunscorch", + "levels": "32-45" + } + ] + }, { "species": "cobblemon:fearow", "drops": [ @@ -5379,6 +5972,52 @@ } ] }, + { + "species": "cobblemon:foongus", + "drops": [ + { + "item": "minecraft:red_mushroom", + "count": "0-1" + }, + { + "item": "cobblemon:cheri_berry", + "count": "1", + "chance": 2.5 + } + ], + "zones": [ + { + "zone": "lush_caves", + "levels": "12-28" + } + ] + }, + { + "species": "cobblemon:forretress", + "drops": [ + { + "item": "minecraft:string", + "count": "0-2" + }, + { + "item": "cobblemon:occa_berry", + "count": "1", + "chance": 5.0 + }, + { + "item": "cobblemon:iron_ball", + "count": "1", + "chance": 5.0 + } + ], + "zones": [], + "line": [ + { + "zone": "westmarch", + "species": "cobblemon:pineco" + } + ] + }, { "species": "cobblemon:fraxure", "drops": [ @@ -5936,6 +6575,31 @@ } ] }, + { + "species": "cobblemon:girafarig", + "drops": [ + { + "item": "minecraft:leather", + "count": "0-1" + }, + { + "item": "cobblemon:razor_fang", + "count": "1", + "chance": 2.5 + }, + { + "item": "cobblemon:persim_berry", + "count": "1", + "chance": 2.5 + } + ], + "zones": [ + { + "zone": "sunscorch", + "levels": "30-45" + } + ] + }, { "species": "cobblemon:glaceon", "drops": [ @@ -6705,6 +7369,22 @@ } ] }, + { + "species": "cobblemon:grimmsnarl", + "drops": [ + { + "item": "cobblemon:roseli_berry", + "count": "1", + "chance": 10.0 + } + ], + "zones": [ + { + "zone": "deep_dark", + "levels": "45-60" + } + ] + }, { "species": "cobblemon:grookey", "drops": [ @@ -6967,6 +7647,55 @@ } ] }, + { + "species": "cobblemon:hatenna", + "drops": [ + { + "item": "cobblemon:babiri_berry", + "count": "1", + "chance": 2.5 + } + ], + "zones": [ + { + "zone": "mire", + "levels": "25-38" + } + ] + }, + { + "species": "cobblemon:hatterene", + "drops": [ + { + "item": "cobblemon:babiri_berry", + "count": "1", + "chance": 10.0 + } + ], + "zones": [], + "line": [ + { + "zone": "mire", + "species": "cobblemon:hatenna" + } + ] + }, + { + "species": "cobblemon:hattrem", + "drops": [ + { + "item": "cobblemon:babiri_berry", + "count": "1", + "chance": 5.0 + } + ], + "zones": [ + { + "zone": "mire", + "levels": "32-38" + } + ] + }, { "species": "cobblemon:haunter", "drops": [ @@ -7518,6 +8247,23 @@ } ] }, + { + "species": "cobblemon:impidimp", + "drops": [ + { + "item": "cobblemon:roseli_berry", + "count": "1", + "chance": 2.5 + } + ], + "zones": [], + "line": [ + { + "zone": "deep_dark", + "species": "cobblemon:grimmsnarl" + } + ] + }, { "species": "cobblemon:incineroar", "drops": [ @@ -7878,6 +8624,22 @@ } ] }, + { + "species": "cobblemon:kangaskhan", + "drops": [ + { + "item": "cobblemon:chilan_berry", + "count": "1", + "chance": 5.0 + } + ], + "zones": [ + { + "zone": "sunscorch", + "levels": "30-45" + } + ] + }, { "species": "cobblemon:karrablast", "drops": [ @@ -8159,6 +8921,26 @@ } ] }, + { + "species": "cobblemon:komala", + "drops": [ + { + "item": "minecraft:acacia_log", + "count": "1" + }, + { + "item": "cobblemon:chesto_berry", + "count": "1", + "chance": 5.0 + } + ], + "zones": [ + { + "zone": "jungle", + "levels": "23-30" + } + ] + }, { "species": "cobblemon:kommoo", "drops": [ @@ -8290,6 +9072,56 @@ } ] }, + { + "species": "cobblemon:lairon", + "drops": [ + { + "item": "minecraft:raw_iron", + "count": "0-2" + }, + { + "item": "cobblemon:hard_stone", + "count": "1", + "chance": 5.0 + }, + { + "item": "cobblemon:chople_berry", + "count": "1", + "chance": 5.0 + } + ], + "zones": [ + { + "zone": "dripstone", + "levels": "32-38" + } + ] + }, + { + "species": "cobblemon:lampent", + "drops": [ + { + "item": "minecraft:candle", + "count": "1" + }, + { + "item": "cobblemon:dusk_stone", + "count": "1", + "chance": 5.0 + }, + { + "item": "cobblemon:rawst_berry", + "count": "1", + "chance": 5.0 + } + ], + "zones": [ + { + "zone": "deep_dark", + "levels": "45-60" + } + ] + }, { "species": "cobblemon:lanturn", "drops": [ @@ -8658,6 +9490,31 @@ } ] }, + { + "species": "cobblemon:litleo", + "drops": [ + { + "item": "minecraft:rotten_flesh", + "count": "0-1" + }, + { + "item": "minecraft:blaze_powder", + "count": "1", + "chance": 2.5 + }, + { + "item": "cobblemon:rawst_berry", + "count": "1", + "chance": 2.5 + } + ], + "zones": [ + { + "zone": "sunscorch", + "levels": "30-45" + } + ] + }, { "species": "cobblemon:litten", "drops": [ @@ -8679,6 +9536,32 @@ } ] }, + { + "species": "cobblemon:litwick", + "drops": [ + { + "item": "minecraft:candle", + "count": "0-1" + }, + { + "item": "cobblemon:dusk_stone", + "count": "1", + "chance": 2.5 + }, + { + "item": "cobblemon:rawst_berry", + "count": "1", + "chance": 2.5 + } + ], + "zones": [], + "line": [ + { + "zone": "deep_dark", + "species": "cobblemon:chandelure" + } + ] + }, { "species": "cobblemon:lokix", "drops": [ @@ -9381,6 +10264,35 @@ } ] }, + { + "species": "cobblemon:mamoswine", + "drops": [ + { + "item": "minecraft:porkchop", + "count": "2-3" + }, + { + "item": "minecraft:brown_wool", + "count": "2-3" + }, + { + "item": "cobblemon:never_melt_ice", + "count": "1", + "chance": 10.0 + }, + { + "item": "cobblemon:aspear_berry", + "count": "1", + "chance": 10.0 + } + ], + "zones": [ + { + "zone": "frostpeak", + "levels": "40-55" + } + ] + }, { "species": "cobblemon:manectric", "drops": [ @@ -10212,6 +11124,23 @@ } ] }, + { + "species": "cobblemon:morgrem", + "drops": [ + { + "item": "cobblemon:roseli_berry", + "count": "1", + "chance": 5.0 + } + ], + "zones": [], + "line": [ + { + "zone": "deep_dark", + "species": "cobblemon:grimmsnarl" + } + ] + }, { "species": "cobblemon:morpeko", "drops": [ @@ -10568,6 +11497,134 @@ } ] }, + { + "species": "cobblemon:nidoking", + "drops": [ + { + "item": "cobblemon:poison_barb", + "count": "1", + "chance": 10.0 + }, + { + "item": "cobblemon:pecha_berry", + "count": "1", + "chance": 10.0 + } + ], + "zones": [], + "line": [ + { + "zone": "southwold", + "species": "cobblemon:nidoranm" + } + ] + }, + { + "species": "cobblemon:nidoqueen", + "drops": [ + { + "item": "cobblemon:poison_barb", + "count": "1", + "chance": 10.0 + }, + { + "item": "cobblemon:pecha_berry", + "count": "1", + "chance": 10.0 + } + ], + "zones": [], + "line": [ + { + "zone": "southwold", + "species": "cobblemon:nidoranf" + } + ] + }, + { + "species": "cobblemon:nidoranf", + "drops": [ + { + "item": "cobblemon:poison_barb", + "count": "1", + "chance": 2.5 + }, + { + "item": "cobblemon:pecha_berry", + "count": "1", + "chance": 2.5 + } + ], + "zones": [ + { + "zone": "southwold", + "levels": "8-18" + } + ] + }, + { + "species": "cobblemon:nidoranm", + "drops": [ + { + "item": "cobblemon:poison_barb", + "count": "1", + "chance": 2.5 + }, + { + "item": "cobblemon:pecha_berry", + "count": "1", + "chance": 2.5 + } + ], + "zones": [ + { + "zone": "southwold", + "levels": "8-18" + } + ] + }, + { + "species": "cobblemon:nidorina", + "drops": [ + { + "item": "cobblemon:poison_barb", + "count": "1", + "chance": 5.0 + }, + { + "item": "cobblemon:pecha_berry", + "count": "1", + "chance": 5.0 + } + ], + "zones": [ + { + "zone": "southwold", + "levels": "16-18" + } + ] + }, + { + "species": "cobblemon:nidorino", + "drops": [ + { + "item": "cobblemon:poison_barb", + "count": "1", + "chance": 5.0 + }, + { + "item": "cobblemon:pecha_berry", + "count": "1", + "chance": 5.0 + } + ], + "zones": [ + { + "zone": "southwold", + "levels": "16-18" + } + ] + }, { "species": "cobblemon:nincada", "drops": [ @@ -11082,6 +12139,57 @@ } ] }, + { + "species": "cobblemon:pancham", + "drops": [ + { + "item": "minecraft:bamboo", + "count": "0-1" + }, + { + "item": "cobblemon:mental_herb", + "count": "1", + "chance": 2.5 + }, + { + "item": "cobblemon:roseli_berry", + "count": "1", + "chance": 2.5 + } + ], + "zones": [ + { + "zone": "jungle", + "levels": "18-30" + } + ] + }, + { + "species": "cobblemon:pangoro", + "drops": [ + { + "item": "minecraft:bamboo", + "count": "0-2" + }, + { + "item": "cobblemon:mental_herb", + "count": "1", + "chance": 5.0 + }, + { + "item": "cobblemon:roseli_berry", + "count": "1", + "chance": 5.0 + } + ], + "zones": [], + "line": [ + { + "zone": "jungle", + "species": "cobblemon:pancham" + } + ] + }, { "species": "cobblemon:panpour", "drops": [ @@ -11579,6 +12687,60 @@ } ] }, + { + "species": "cobblemon:piloswine", + "drops": [ + { + "item": "minecraft:porkchop", + "count": "1-2" + }, + { + "item": "minecraft:brown_wool", + "count": "1-2" + }, + { + "item": "cobblemon:never_melt_ice", + "count": "1", + "chance": 5.0 + }, + { + "item": "cobblemon:aspear_berry", + "count": "1", + "chance": 5.0 + } + ], + "zones": [ + { + "zone": "frostpeak", + "levels": "40-55" + } + ] + }, + { + "species": "cobblemon:pineco", + "drops": [ + { + "item": "minecraft:string", + "count": "0-1" + }, + { + "item": "cobblemon:occa_berry", + "count": "1", + "chance": 2.5 + }, + { + "item": "cobblemon:iron_ball", + "count": "1", + "chance": 2.5 + } + ], + "zones": [ + { + "zone": "westmarch", + "levels": "15-25" + } + ] + }, { "species": "cobblemon:pinsir", "drops": [ @@ -11595,6 +12757,30 @@ } ] }, + { + "species": "cobblemon:piplup", + "drops": [ + { + "item": "minecraft:feather", + "count": "0-1" + }, + { + "item": "minecraft:chicken", + "count": "1" + }, + { + "item": "cobblemon:mystic_water", + "count": "1", + "chance": 5.0 + } + ], + "zones": [ + { + "zone": "deep_sea", + "levels": "30-50" + } + ] + }, { "species": "cobblemon:plusle", "drops": [ @@ -11888,6 +13074,30 @@ } ] }, + { + "species": "cobblemon:prinplup", + "drops": [ + { + "item": "minecraft:feather", + "count": "0-2" + }, + { + "item": "minecraft:chicken", + "count": "1" + }, + { + "item": "cobblemon:mystic_water", + "count": "1", + "chance": 10.0 + } + ], + "zones": [ + { + "zone": "deep_sea", + "levels": "30-50" + } + ] + }, { "species": "cobblemon:probopass", "drops": [ @@ -12026,6 +13236,31 @@ } ] }, + { + "species": "cobblemon:pyroar", + "drops": [ + { + "item": "minecraft:rotten_flesh", + "count": "0-2" + }, + { + "item": "minecraft:blaze_powder", + "count": "1", + "chance": 5.0 + }, + { + "item": "cobblemon:rawst_berry", + "count": "1", + "chance": 5.0 + } + ], + "zones": [ + { + "zone": "sunscorch", + "levels": "35-45" + } + ] + }, { "species": "cobblemon:pyukumuku", "drops": [ @@ -13386,6 +14621,26 @@ } ] }, + { + "species": "cobblemon:sealeo", + "drops": [ + { + "item": "minecraft:cod", + "count": "0-2" + }, + { + "item": "cobblemon:chesto_berry", + "count": "1", + "chance": 5.0 + } + ], + "zones": [ + { + "zone": "deep_sea", + "levels": "32-50" + } + ] + }, { "species": "cobblemon:seedot", "drops": [ @@ -13406,6 +14661,31 @@ } ] }, + { + "species": "cobblemon:seel", + "drops": [ + { + "item": "minecraft:cod", + "count": "0-1" + }, + { + "item": "cobblemon:never_melt_ice", + "count": "1", + "chance": 2.5 + }, + { + "item": "cobblemon:aspear_berry", + "count": "1", + "chance": 2.5 + } + ], + "zones": [ + { + "zone": "deep_sea", + "levels": "30-50" + } + ] + }, { "species": "cobblemon:seismitoad", "drops": [ @@ -14421,6 +15701,27 @@ } ] }, + { + "species": "cobblemon:smoliv", + "drops": [ + { + "item": "cobblemon:big_root", + "count": "1", + "chance": 2.5 + }, + { + "item": "cobblemon:kebia_berry", + "count": "1", + "chance": 2.5 + } + ], + "zones": [ + { + "zone": "southwold", + "levels": "8-18" + } + ] + }, { "species": "cobblemon:smoochum", "drops": [ @@ -14760,6 +16061,27 @@ } ] }, + { + "species": "cobblemon:spheal", + "drops": [ + { + "item": "minecraft:cod", + "count": "0-1" + }, + { + "item": "cobblemon:chesto_berry", + "count": "1", + "chance": 2.5 + } + ], + "zones": [], + "line": [ + { + "zone": "deep_sea", + "species": "cobblemon:sealeo" + } + ] + }, { "species": "cobblemon:spidops", "drops": [ @@ -14957,6 +16279,26 @@ } ] }, + { + "species": "cobblemon:stantler", + "drops": [ + { + "item": "minecraft:leather", + "count": "0-1" + }, + { + "item": "cobblemon:persim_berry", + "count": "1", + "chance": 2.5 + } + ], + "zones": [ + { + "zone": "frostpeak", + "levels": "40-55" + } + ] + }, { "species": "cobblemon:staraptor", "drops": [ @@ -15137,6 +16479,22 @@ } ] }, + { + "species": "cobblemon:stufful", + "drops": [ + { + "item": "cobblemon:chople_berry", + "count": "1", + "chance": 2.5 + } + ], + "zones": [ + { + "zone": "jungle", + "levels": "18-30" + } + ] + }, { "species": "cobblemon:stunfisk", "drops": [ @@ -15389,6 +16747,36 @@ } ] }, + { + "species": "cobblemon:swinub", + "drops": [ + { + "item": "minecraft:porkchop", + "count": "1" + }, + { + "item": "minecraft:brown_wool", + "count": "1" + }, + { + "item": "cobblemon:never_melt_ice", + "count": "1", + "chance": 2.5 + }, + { + "item": "cobblemon:aspear_berry", + "count": "1", + "chance": 2.5 + } + ], + "zones": [], + "line": [ + { + "zone": "frostpeak", + "species": "cobblemon:mamoswine" + } + ] + }, { "species": "cobblemon:swirlix", "drops": [ @@ -15922,6 +17310,46 @@ } ] }, + { + "species": "cobblemon:toedscool", + "drops": [ + { + "item": "minecraft:brown_mushroom", + "count": "0-1" + }, + { + "item": "cobblemon:yache_berry", + "count": "1", + "chance": 2.5 + } + ], + "zones": [ + { + "zone": "mire", + "levels": "25-38" + } + ] + }, + { + "species": "cobblemon:toedscruel", + "drops": [ + { + "item": "minecraft:brown_mushroom", + "count": "0-2" + }, + { + "item": "cobblemon:yache_berry", + "count": "1", + "chance": 5.0 + } + ], + "zones": [ + { + "zone": "mire", + "levels": "30-38" + } + ] + }, { "species": "cobblemon:togedemaru", "drops": [ @@ -17262,6 +18690,26 @@ } ] }, + { + "species": "cobblemon:walrein", + "drops": [ + { + "item": "minecraft:cod", + "count": "0-3" + }, + { + "item": "cobblemon:chesto_berry", + "count": "1", + "chance": 10.0 + } + ], + "zones": [ + { + "zone": "deep_sea", + "levels": "44-50" + } + ] + }, { "species": "cobblemon:wartortle", "drops": [ @@ -17732,6 +19180,26 @@ } ] }, + { + "species": "cobblemon:wyrdeer", + "drops": [ + { + "item": "minecraft:leather", + "count": "0-2" + }, + { + "item": "cobblemon:persim_berry", + "count": "1", + "chance": 5.0 + } + ], + "zones": [ + { + "zone": "frostpeak", + "levels": "42-55" + } + ] + }, { "species": "cobblemon:xatu", "drops": [ @@ -17881,6 +19349,26 @@ } ] }, + { + "species": "cobblemon:zebstrika", + "drops": [ + { + "item": "minecraft:leather", + "count": "0-2" + }, + { + "item": "cobblemon:cheri_berry", + "count": "1", + "chance": 5.0 + } + ], + "zones": [ + { + "zone": "highlands", + "levels": "27-35" + } + ] + }, { "species": "cobblemon:zigzagoon", "drops": [ diff --git a/mod/src/main/resources/cobblesurvival.mixins.json b/mod/src/main/resources/cobblesurvival.mixins.json new file mode 100644 index 0000000..ed14262 --- /dev/null +++ b/mod/src/main/resources/cobblesurvival.mixins.json @@ -0,0 +1,8 @@ +{ + "required": true, + "minVersion": "0.8", + "package": "dev.cobblesurvival.mixin", + "compatibilityLevel": "JAVA_21", + "mixins": ["RegeneratorBlockMixin"], + "injectors": {"defaultRequire": 1} +} diff --git a/pack/config/ftbquests/quests/chapters/basalt.snbt b/pack/config/ftbquests/quests/chapters/basalt.snbt index 5dbb825..ee5e7be 100644 --- a/pack/config/ftbquests/quests/chapters/basalt.snbt +++ b/pack/config/ftbquests/quests/chapters/basalt.snbt @@ -46,7 +46,7 @@ min_level: 0 natures: "" poke_ball_used: "" - pokemon: "cobblemon:absol,cobblemon:arcanine,cobblemon:centiskorch,cobblemon:charizard,cobblemon:dugtrio,cobblemon:durant,cobblemon:excadrill,cobblemon:gliscor,cobblemon:heatmor,cobblemon:houndoom,cobblemon:liepard,cobblemon:magcargo,cobblemon:magmortar,cobblemon:mawile,cobblemon:torkoal,cobblemon:turtonator" + pokemon: "cobblemon:absol,cobblemon:arcanine,cobblemon:armarouge,cobblemon:centiskorch,cobblemon:charizard,cobblemon:dugtrio,cobblemon:durant,cobblemon:excadrill,cobblemon:gliscor,cobblemon:heatmor,cobblemon:houndoom,cobblemon:liepard,cobblemon:magcargo,cobblemon:magmortar,cobblemon:mawile,cobblemon:torkoal,cobblemon:turtonator" pokemon_type: "" region: "" shiny: false diff --git a/pack/config/ftbquests/quests/chapters/deep_dark.snbt b/pack/config/ftbquests/quests/chapters/deep_dark.snbt index 9c2d40a..c96f971 100644 --- a/pack/config/ftbquests/quests/chapters/deep_dark.snbt +++ b/pack/config/ftbquests/quests/chapters/deep_dark.snbt @@ -46,7 +46,7 @@ min_level: 0 natures: "" poke_ball_used: "" - pokemon: "cobblemon:aegislash,cobblemon:bronzong,cobblemon:carbink,cobblemon:coalossal,cobblemon:corviknight,cobblemon:crobat,cobblemon:ditto,cobblemon:doublade,cobblemon:dusclops,cobblemon:dusknoir,cobblemon:gallade,cobblemon:gardevoir,cobblemon:gigalith,cobblemon:glimmora,cobblemon:golbat,cobblemon:honchkrow,cobblemon:houndstone,cobblemon:klinklang,cobblemon:mabosstiff,cobblemon:milotic,cobblemon:mimikyu,cobblemon:mrmime,cobblemon:mrrime,cobblemon:probopass,cobblemon:revavroom,cobblemon:steelix,cobblemon:zweilous" + pokemon: "cobblemon:aegislash,cobblemon:bronzong,cobblemon:carbink,cobblemon:chandelure,cobblemon:coalossal,cobblemon:corviknight,cobblemon:crobat,cobblemon:ditto,cobblemon:doublade,cobblemon:dusclops,cobblemon:dusknoir,cobblemon:gallade,cobblemon:gardevoir,cobblemon:gigalith,cobblemon:glimmora,cobblemon:golbat,cobblemon:grimmsnarl,cobblemon:honchkrow,cobblemon:houndstone,cobblemon:klinklang,cobblemon:lampent,cobblemon:mabosstiff,cobblemon:milotic,cobblemon:mimikyu,cobblemon:mrmime,cobblemon:mrrime,cobblemon:probopass,cobblemon:revavroom,cobblemon:steelix,cobblemon:zweilous" pokemon_type: "" region: "" shiny: false diff --git a/pack/config/ftbquests/quests/chapters/deep_sea.snbt b/pack/config/ftbquests/quests/chapters/deep_sea.snbt index 149ab8f..df972e8 100644 --- a/pack/config/ftbquests/quests/chapters/deep_sea.snbt +++ b/pack/config/ftbquests/quests/chapters/deep_sea.snbt @@ -46,7 +46,7 @@ min_level: 0 natures: "" poke_ball_used: "" - pokemon: "cobblemon:barbaracle,cobblemon:binacle,cobblemon:brionne,cobblemon:clamperl,cobblemon:clauncher,cobblemon:clawitzer,cobblemon:cloyster,cobblemon:dewott,cobblemon:dhelmise,cobblemon:dragalge,cobblemon:drakloak,cobblemon:frillish,cobblemon:gorebyss,cobblemon:horsea,cobblemon:huntail,cobblemon:jellicent,cobblemon:kilowattrel,cobblemon:kingdra,cobblemon:lapras,cobblemon:mantine,cobblemon:mantyke,cobblemon:octillery,cobblemon:oshawott,cobblemon:popplio,cobblemon:primarina,cobblemon:remoraid,cobblemon:samurott,cobblemon:seadra,cobblemon:shellder,cobblemon:skrelp,cobblemon:starmie,cobblemon:staryu,cobblemon:veluza,cobblemon:wailmer,cobblemon:wailord" + pokemon: "cobblemon:barbaracle,cobblemon:binacle,cobblemon:brionne,cobblemon:clamperl,cobblemon:clauncher,cobblemon:clawitzer,cobblemon:cloyster,cobblemon:dewgong,cobblemon:dewott,cobblemon:dhelmise,cobblemon:dragalge,cobblemon:drakloak,cobblemon:empoleon,cobblemon:frillish,cobblemon:gorebyss,cobblemon:horsea,cobblemon:huntail,cobblemon:jellicent,cobblemon:kilowattrel,cobblemon:kingdra,cobblemon:lapras,cobblemon:mantine,cobblemon:mantyke,cobblemon:octillery,cobblemon:oshawott,cobblemon:piplup,cobblemon:popplio,cobblemon:primarina,cobblemon:prinplup,cobblemon:remoraid,cobblemon:samurott,cobblemon:seadra,cobblemon:sealeo,cobblemon:seel,cobblemon:shellder,cobblemon:skrelp,cobblemon:starmie,cobblemon:staryu,cobblemon:veluza,cobblemon:wailmer,cobblemon:wailord,cobblemon:walrein" pokemon_type: "" region: "" shiny: false diff --git a/pack/config/ftbquests/quests/chapters/dripstone.snbt b/pack/config/ftbquests/quests/chapters/dripstone.snbt index b4dd0a8..974261b 100644 --- a/pack/config/ftbquests/quests/chapters/dripstone.snbt +++ b/pack/config/ftbquests/quests/chapters/dripstone.snbt @@ -46,7 +46,7 @@ min_level: 0 natures: "" poke_ball_used: "" - pokemon: "cobblemon:alcremie,cobblemon:bagon,cobblemon:baltoy,cobblemon:beldum,cobblemon:claydol,cobblemon:clefable,cobblemon:clefairy,cobblemon:cleffa,cobblemon:comfey,cobblemon:dachsbun,cobblemon:drowzee,cobblemon:druddigon,cobblemon:duosion,cobblemon:elgyem,cobblemon:espurr,cobblemon:fidough,cobblemon:geodude,cobblemon:golem,cobblemon:graveler,cobblemon:hypno,cobblemon:indeedee,cobblemon:klefki,cobblemon:lunatone,cobblemon:meowstic,cobblemon:metang,cobblemon:milcery,cobblemon:munna,cobblemon:musharna,cobblemon:orthworm,cobblemon:shelgon,cobblemon:sigilyph,cobblemon:slurpuff,cobblemon:solosis,cobblemon:solrock,cobblemon:swirlix" + pokemon: "cobblemon:alcremie,cobblemon:aron,cobblemon:bagon,cobblemon:baltoy,cobblemon:beldum,cobblemon:claydol,cobblemon:clefable,cobblemon:clefairy,cobblemon:cleffa,cobblemon:comfey,cobblemon:dachsbun,cobblemon:drowzee,cobblemon:druddigon,cobblemon:duosion,cobblemon:elgyem,cobblemon:espurr,cobblemon:fidough,cobblemon:geodude,cobblemon:golem,cobblemon:graveler,cobblemon:hypno,cobblemon:indeedee,cobblemon:klefki,cobblemon:lairon,cobblemon:lunatone,cobblemon:meowstic,cobblemon:metang,cobblemon:milcery,cobblemon:munna,cobblemon:musharna,cobblemon:orthworm,cobblemon:shelgon,cobblemon:sigilyph,cobblemon:slurpuff,cobblemon:solosis,cobblemon:solrock,cobblemon:swirlix" pokemon_type: "" region: "" shiny: false diff --git a/pack/config/ftbquests/quests/chapters/frostpeak.snbt b/pack/config/ftbquests/quests/chapters/frostpeak.snbt index 8609d18..53de8e4 100644 --- a/pack/config/ftbquests/quests/chapters/frostpeak.snbt +++ b/pack/config/ftbquests/quests/chapters/frostpeak.snbt @@ -46,7 +46,7 @@ min_level: 0 natures: "" poke_ball_used: "" - pokemon: "cobblemon:abomasnow,cobblemon:annihilape,cobblemon:archaludon,cobblemon:aromatisse,cobblemon:basculegion,cobblemon:basculin,cobblemon:bayleef,cobblemon:braviary,cobblemon:cherrim,cobblemon:chesnaught,cobblemon:copperajah,cobblemon:cryogonal,cobblemon:dartrix,cobblemon:decidueye,cobblemon:delibird,cobblemon:dubwool,cobblemon:duraludon,cobblemon:eldegoss,cobblemon:electabuzz,cobblemon:electivire,cobblemon:floragato,cobblemon:fraxure,cobblemon:froslass,cobblemon:frosmoth,cobblemon:glalie,cobblemon:gogoat,cobblemon:grumpig,cobblemon:hariyama,cobblemon:haxorus,cobblemon:hitmonchan,cobblemon:hitmonlee,cobblemon:hitmontop,cobblemon:infernape,cobblemon:jynx,cobblemon:lucario,cobblemon:lycanroc,cobblemon:machamp,cobblemon:machoke,cobblemon:meganium,cobblemon:meowscarada,cobblemon:mienshao,cobblemon:minior,cobblemon:monferno,cobblemon:primeape,cobblemon:pupitar,cobblemon:quilladin,cobblemon:rhydon,cobblemon:rhyperior,cobblemon:roselia,cobblemon:roserade,cobblemon:salandit,cobblemon:sawk,cobblemon:sneasel,cobblemon:sneasler,cobblemon:spinda,cobblemon:staraptor,cobblemon:throh,cobblemon:togedemaru,cobblemon:togekiss,cobblemon:togetic,cobblemon:tyranitar,cobblemon:vanillish,cobblemon:vanilluxe" + pokemon: "cobblemon:abomasnow,cobblemon:annihilape,cobblemon:archaludon,cobblemon:aromatisse,cobblemon:avalugg,cobblemon:basculegion,cobblemon:basculin,cobblemon:bayleef,cobblemon:beartic,cobblemon:braviary,cobblemon:cetitan,cobblemon:cherrim,cobblemon:chesnaught,cobblemon:copperajah,cobblemon:cryogonal,cobblemon:dartrix,cobblemon:decidueye,cobblemon:delibird,cobblemon:dubwool,cobblemon:duraludon,cobblemon:eiscue,cobblemon:eldegoss,cobblemon:electabuzz,cobblemon:electivire,cobblemon:floragato,cobblemon:fraxure,cobblemon:froslass,cobblemon:frosmoth,cobblemon:glalie,cobblemon:gogoat,cobblemon:grumpig,cobblemon:hariyama,cobblemon:haxorus,cobblemon:hitmonchan,cobblemon:hitmonlee,cobblemon:hitmontop,cobblemon:infernape,cobblemon:jynx,cobblemon:lucario,cobblemon:lycanroc,cobblemon:machamp,cobblemon:machoke,cobblemon:mamoswine,cobblemon:meganium,cobblemon:meowscarada,cobblemon:mienshao,cobblemon:minior,cobblemon:monferno,cobblemon:piloswine,cobblemon:primeape,cobblemon:pupitar,cobblemon:quilladin,cobblemon:rhydon,cobblemon:rhyperior,cobblemon:roselia,cobblemon:roserade,cobblemon:salandit,cobblemon:sawk,cobblemon:sneasel,cobblemon:sneasler,cobblemon:spinda,cobblemon:stantler,cobblemon:staraptor,cobblemon:throh,cobblemon:togedemaru,cobblemon:togekiss,cobblemon:togetic,cobblemon:tyranitar,cobblemon:vanillish,cobblemon:vanilluxe,cobblemon:wyrdeer" pokemon_type: "" region: "" shiny: false diff --git a/pack/config/ftbquests/quests/chapters/highlands.snbt b/pack/config/ftbquests/quests/chapters/highlands.snbt index 0ce01de..7350326 100644 --- a/pack/config/ftbquests/quests/chapters/highlands.snbt +++ b/pack/config/ftbquests/quests/chapters/highlands.snbt @@ -46,7 +46,7 @@ min_level: 0 natures: "" poke_ball_used: "" - pokemon: "cobblemon:abra,cobblemon:alakazam,cobblemon:ampharos,cobblemon:bellossom,cobblemon:bouffalant,cobblemon:buizel,cobblemon:chewtle,cobblemon:cinderace,cobblemon:combusken,cobblemon:cottonee,cobblemon:cyclizar,cobblemon:cyndaquil,cobblemon:drednaw,cobblemon:electrike,cobblemon:flaaffy,cobblemon:fletchinder,cobblemon:fletchling,cobblemon:floatzel,cobblemon:gloom,cobblemon:golduck,cobblemon:golett,cobblemon:grotle,cobblemon:hoppip,cobblemon:jigglypuff,cobblemon:jumpluff,cobblemon:kadabra,cobblemon:lechonk,cobblemon:lickilicky,cobblemon:lickitung,cobblemon:lokix,cobblemon:manectric,cobblemon:mareep,cobblemon:mightyena,cobblemon:miltank,cobblemon:mudbray,cobblemon:mudsdale,cobblemon:ninetales,cobblemon:oddish,cobblemon:oinkologne,cobblemon:pidgeotto,cobblemon:pidgey,cobblemon:pignite,cobblemon:politoed,cobblemon:poliwag,cobblemon:poliwhirl,cobblemon:poliwrath,cobblemon:polteageist,cobblemon:ponyta,cobblemon:psyduck,cobblemon:quaxly,cobblemon:quaxwell,cobblemon:quilava,cobblemon:raboot,cobblemon:scorbunny,cobblemon:seviper,cobblemon:sinistea,cobblemon:skiploom,cobblemon:spiritomb,cobblemon:squirtle,cobblemon:stonjourner,cobblemon:talonflame,cobblemon:tauros,cobblemon:tepig,cobblemon:tinkatink,cobblemon:tinkatuff,cobblemon:torchic,cobblemon:torterra,cobblemon:turtwig,cobblemon:vileplume,cobblemon:vulpix,cobblemon:wartortle,cobblemon:whimsicott,cobblemon:wigglytuff,cobblemon:zangoose,cobblemon:zoroark,cobblemon:zorua" + pokemon: "cobblemon:abra,cobblemon:alakazam,cobblemon:ampharos,cobblemon:bellossom,cobblemon:blitzle,cobblemon:bouffalant,cobblemon:buizel,cobblemon:chewtle,cobblemon:cinderace,cobblemon:combusken,cobblemon:cottonee,cobblemon:cyclizar,cobblemon:cyndaquil,cobblemon:dodrio,cobblemon:doduo,cobblemon:drednaw,cobblemon:electrike,cobblemon:flaaffy,cobblemon:fletchinder,cobblemon:fletchling,cobblemon:floatzel,cobblemon:gloom,cobblemon:golduck,cobblemon:golett,cobblemon:grotle,cobblemon:hoppip,cobblemon:jigglypuff,cobblemon:jumpluff,cobblemon:kadabra,cobblemon:lechonk,cobblemon:lickilicky,cobblemon:lickitung,cobblemon:lokix,cobblemon:manectric,cobblemon:mareep,cobblemon:mightyena,cobblemon:miltank,cobblemon:mudbray,cobblemon:mudsdale,cobblemon:ninetales,cobblemon:oddish,cobblemon:oinkologne,cobblemon:pidgeotto,cobblemon:pidgey,cobblemon:pignite,cobblemon:politoed,cobblemon:poliwag,cobblemon:poliwhirl,cobblemon:poliwrath,cobblemon:polteageist,cobblemon:ponyta,cobblemon:psyduck,cobblemon:quaxly,cobblemon:quaxwell,cobblemon:quilava,cobblemon:raboot,cobblemon:scorbunny,cobblemon:seviper,cobblemon:sinistea,cobblemon:skiploom,cobblemon:spiritomb,cobblemon:squirtle,cobblemon:stonjourner,cobblemon:talonflame,cobblemon:tauros,cobblemon:tepig,cobblemon:tinkatink,cobblemon:tinkatuff,cobblemon:torchic,cobblemon:torterra,cobblemon:turtwig,cobblemon:vileplume,cobblemon:vulpix,cobblemon:wartortle,cobblemon:whimsicott,cobblemon:wigglytuff,cobblemon:zangoose,cobblemon:zebstrika,cobblemon:zoroark,cobblemon:zorua" pokemon_type: "" region: "" shiny: false diff --git a/pack/config/ftbquests/quests/chapters/jungle.snbt b/pack/config/ftbquests/quests/chapters/jungle.snbt index 0fc73fd..fadf5c6 100644 --- a/pack/config/ftbquests/quests/chapters/jungle.snbt +++ b/pack/config/ftbquests/quests/chapters/jungle.snbt @@ -46,7 +46,7 @@ min_level: 0 natures: "" poke_ball_used: "" - pokemon: "cobblemon:aipom,cobblemon:bellsprout,cobblemon:bounsweet,cobblemon:bulbasaur,cobblemon:chatot,cobblemon:darumaka,cobblemon:exeggcute,cobblemon:exeggutor,cobblemon:fomantis,cobblemon:grafaiai,cobblemon:grookey,cobblemon:grovyle,cobblemon:ivysaur,cobblemon:jangmoo,cobblemon:kecleon,cobblemon:litten,cobblemon:natu,cobblemon:panpour,cobblemon:pansage,cobblemon:pansear,cobblemon:pikipek,cobblemon:servine,cobblemon:shroodle,cobblemon:simipour,cobblemon:simisage,cobblemon:simisear,cobblemon:slakoth,cobblemon:snivy,cobblemon:steenee,cobblemon:stunfisk,cobblemon:swoobat,cobblemon:tangela,cobblemon:tangrowth,cobblemon:thwackey,cobblemon:torracat,cobblemon:toucannon,cobblemon:treecko,cobblemon:tropius,cobblemon:trumbeak,cobblemon:tsareena,cobblemon:unown,cobblemon:vigoroth,cobblemon:weepinbell,cobblemon:woobat,cobblemon:xatu" + pokemon: "cobblemon:aipom,cobblemon:bellsprout,cobblemon:bewear,cobblemon:bounsweet,cobblemon:bulbasaur,cobblemon:chatot,cobblemon:darumaka,cobblemon:exeggcute,cobblemon:exeggutor,cobblemon:fomantis,cobblemon:grafaiai,cobblemon:grookey,cobblemon:grovyle,cobblemon:ivysaur,cobblemon:jangmoo,cobblemon:kecleon,cobblemon:komala,cobblemon:litten,cobblemon:natu,cobblemon:pancham,cobblemon:panpour,cobblemon:pansage,cobblemon:pansear,cobblemon:pikipek,cobblemon:servine,cobblemon:shroodle,cobblemon:simipour,cobblemon:simisage,cobblemon:simisear,cobblemon:slakoth,cobblemon:snivy,cobblemon:steenee,cobblemon:stufful,cobblemon:stunfisk,cobblemon:swoobat,cobblemon:tangela,cobblemon:tangrowth,cobblemon:thwackey,cobblemon:torracat,cobblemon:toucannon,cobblemon:treecko,cobblemon:tropius,cobblemon:trumbeak,cobblemon:tsareena,cobblemon:unown,cobblemon:vigoroth,cobblemon:weepinbell,cobblemon:woobat,cobblemon:xatu" pokemon_type: "" region: "" shiny: false diff --git a/pack/config/ftbquests/quests/chapters/lush_caves.snbt b/pack/config/ftbquests/quests/chapters/lush_caves.snbt index 9899d52..3ef615b 100644 --- a/pack/config/ftbquests/quests/chapters/lush_caves.snbt +++ b/pack/config/ftbquests/quests/chapters/lush_caves.snbt @@ -46,7 +46,7 @@ min_level: 0 natures: "" poke_ball_used: "" - pokemon: "cobblemon:amaura,cobblemon:anorith,cobblemon:archen,cobblemon:barboach,cobblemon:carnivine,cobblemon:cranidos,cobblemon:cutiefly,cobblemon:ferroseed,cobblemon:granbull,cobblemon:joltik,cobblemon:kabuto,cobblemon:lileep,cobblemon:morelull,cobblemon:omanyte,cobblemon:paras,cobblemon:parasect,cobblemon:ribombee,cobblemon:shieldon,cobblemon:shiinotic,cobblemon:shuckle,cobblemon:snubbull,cobblemon:tirtouga,cobblemon:trubbish,cobblemon:tyrunt,cobblemon:venipede,cobblemon:whirlipede" + pokemon: "cobblemon:amaura,cobblemon:anorith,cobblemon:archen,cobblemon:barboach,cobblemon:carnivine,cobblemon:cranidos,cobblemon:cutiefly,cobblemon:ferroseed,cobblemon:foongus,cobblemon:granbull,cobblemon:joltik,cobblemon:kabuto,cobblemon:lileep,cobblemon:morelull,cobblemon:omanyte,cobblemon:paras,cobblemon:parasect,cobblemon:ribombee,cobblemon:shieldon,cobblemon:shiinotic,cobblemon:shuckle,cobblemon:snubbull,cobblemon:tirtouga,cobblemon:trubbish,cobblemon:tyrunt,cobblemon:venipede,cobblemon:whirlipede" pokemon_type: "" region: "" shiny: false diff --git a/pack/config/ftbquests/quests/chapters/mire.snbt b/pack/config/ftbquests/quests/chapters/mire.snbt index 95a4342..3374f14 100644 --- a/pack/config/ftbquests/quests/chapters/mire.snbt +++ b/pack/config/ftbquests/quests/chapters/mire.snbt @@ -46,7 +46,7 @@ min_level: 0 natures: "" poke_ball_used: "" - pokemon: "cobblemon:accelgor,cobblemon:arrokuda,cobblemon:barraskewda,cobblemon:bellibolt,cobblemon:croagunk,cobblemon:dondozo,cobblemon:drizzile,cobblemon:ducklett,cobblemon:escavalier,cobblemon:flamigo,cobblemon:froakie,cobblemon:frogadier,cobblemon:greninja,cobblemon:illumise,cobblemon:inteleon,cobblemon:karrablast,cobblemon:marshtomp,cobblemon:masquerain,cobblemon:misdreavus,cobblemon:mudkip,cobblemon:shelmet,cobblemon:slowpoke,cobblemon:sobble,cobblemon:surskit,cobblemon:swampert,cobblemon:swanna,cobblemon:tadbulb,cobblemon:tatsugiri,cobblemon:toxicroak,cobblemon:volbeat,cobblemon:yanma,cobblemon:yanmega" + pokemon: "cobblemon:accelgor,cobblemon:arrokuda,cobblemon:barraskewda,cobblemon:bellibolt,cobblemon:croagunk,cobblemon:dondozo,cobblemon:drizzile,cobblemon:ducklett,cobblemon:escavalier,cobblemon:flamigo,cobblemon:froakie,cobblemon:frogadier,cobblemon:greninja,cobblemon:hatenna,cobblemon:hattrem,cobblemon:illumise,cobblemon:inteleon,cobblemon:karrablast,cobblemon:marshtomp,cobblemon:masquerain,cobblemon:misdreavus,cobblemon:mudkip,cobblemon:shelmet,cobblemon:slowpoke,cobblemon:sobble,cobblemon:surskit,cobblemon:swampert,cobblemon:swanna,cobblemon:tadbulb,cobblemon:tatsugiri,cobblemon:toedscool,cobblemon:toedscruel,cobblemon:toxicroak,cobblemon:volbeat,cobblemon:yanma,cobblemon:yanmega" pokemon_type: "" region: "" shiny: false diff --git a/pack/config/ftbquests/quests/chapters/southwold.snbt b/pack/config/ftbquests/quests/chapters/southwold.snbt index 003e8d0..f0dec9f 100644 --- a/pack/config/ftbquests/quests/chapters/southwold.snbt +++ b/pack/config/ftbquests/quests/chapters/southwold.snbt @@ -46,7 +46,7 @@ min_level: 0 natures: "" poke_ball_used: "" - pokemon: "cobblemon:audino,cobblemon:azumarill,cobblemon:azurill,cobblemon:bunnelby,cobblemon:burmy,cobblemon:chansey,cobblemon:chingling,cobblemon:corsola,cobblemon:drifloon,cobblemon:dunsparce,cobblemon:eevee,cobblemon:farfetchd,cobblemon:furfrou,cobblemon:furret,cobblemon:gastly,cobblemon:glameow,cobblemon:goldeen,cobblemon:grimer,cobblemon:grubbin,cobblemon:happiny,cobblemon:hawlucha,cobblemon:heracross,cobblemon:herdier,cobblemon:koffing,cobblemon:lillipup,cobblemon:lombre,cobblemon:lotad,cobblemon:magnemite,cobblemon:marill,cobblemon:minccino,cobblemon:minun,cobblemon:noibat,cobblemon:patrat,cobblemon:pidove,cobblemon:pinsir,cobblemon:plusle,cobblemon:porygon,cobblemon:pumpkaboo,cobblemon:relicanth,cobblemon:sentret,cobblemon:shuppet,cobblemon:squawkabilly,cobblemon:swablu,cobblemon:taillow,cobblemon:tentacool,cobblemon:timburr,cobblemon:toxel,cobblemon:tynamo,cobblemon:venonat,cobblemon:voltorb,cobblemon:whismur,cobblemon:wimpod,cobblemon:yamask,cobblemon:yamper,cobblemon:yungoos,cobblemon:zigzagoon" + pokemon: "cobblemon:audino,cobblemon:azumarill,cobblemon:azurill,cobblemon:bunnelby,cobblemon:burmy,cobblemon:chansey,cobblemon:chingling,cobblemon:corsola,cobblemon:drifloon,cobblemon:dunsparce,cobblemon:eevee,cobblemon:farfetchd,cobblemon:furfrou,cobblemon:furret,cobblemon:gastly,cobblemon:glameow,cobblemon:goldeen,cobblemon:grimer,cobblemon:grubbin,cobblemon:happiny,cobblemon:hawlucha,cobblemon:heracross,cobblemon:herdier,cobblemon:koffing,cobblemon:lillipup,cobblemon:lombre,cobblemon:lotad,cobblemon:magnemite,cobblemon:marill,cobblemon:minccino,cobblemon:minun,cobblemon:nidoranf,cobblemon:nidoranm,cobblemon:nidorina,cobblemon:nidorino,cobblemon:noibat,cobblemon:patrat,cobblemon:pidove,cobblemon:pinsir,cobblemon:plusle,cobblemon:porygon,cobblemon:pumpkaboo,cobblemon:relicanth,cobblemon:sentret,cobblemon:shuppet,cobblemon:smoliv,cobblemon:squawkabilly,cobblemon:swablu,cobblemon:taillow,cobblemon:tentacool,cobblemon:timburr,cobblemon:toxel,cobblemon:tynamo,cobblemon:venonat,cobblemon:voltorb,cobblemon:whismur,cobblemon:wimpod,cobblemon:yamask,cobblemon:yamper,cobblemon:yungoos,cobblemon:zigzagoon" pokemon_type: "" region: "" shiny: false diff --git a/pack/config/ftbquests/quests/chapters/sunscorch.snbt b/pack/config/ftbquests/quests/chapters/sunscorch.snbt index 2f61e1d..d41a5e6 100644 --- a/pack/config/ftbquests/quests/chapters/sunscorch.snbt +++ b/pack/config/ftbquests/quests/chapters/sunscorch.snbt @@ -46,7 +46,7 @@ min_level: 0 natures: "" poke_ball_used: "" - pokemon: "cobblemon:arbok,cobblemon:braixen,cobblemon:brambleghast,cobblemon:cacnea,cobblemon:cacturne,cobblemon:camerupt,cobblemon:capsakid,cobblemon:crocalor,cobblemon:croconaw,cobblemon:crustle,cobblemon:cubone,cobblemon:delphox,cobblemon:donphan,cobblemon:drampa,cobblemon:drapion,cobblemon:dwebble,cobblemon:espathra,cobblemon:falinks,cobblemon:fearow,cobblemon:fennekin,cobblemon:feraligatr,cobblemon:flygon,cobblemon:fuecoco,cobblemon:garganacl,cobblemon:heliolisk,cobblemon:hippopotas,cobblemon:hippowdon,cobblemon:klawf,cobblemon:krokorok,cobblemon:krookodile,cobblemon:larvesta,cobblemon:luxio,cobblemon:luxray,cobblemon:maractus,cobblemon:marowak,cobblemon:naclstack,cobblemon:numel,cobblemon:palpitoad,cobblemon:pawniard,cobblemon:phanpy,cobblemon:poltchageist,cobblemon:rabsca,cobblemon:sandaconda,cobblemon:sandshrew,cobblemon:sandslash,cobblemon:scovillain,cobblemon:scrafty,cobblemon:scraggy,cobblemon:seismitoad,cobblemon:silicobra,cobblemon:sinistcha,cobblemon:skarmory,cobblemon:skeledirge,cobblemon:skorupi,cobblemon:totodile,cobblemon:vibrava" + pokemon: "cobblemon:arbok,cobblemon:braixen,cobblemon:brambleghast,cobblemon:cacnea,cobblemon:cacturne,cobblemon:camerupt,cobblemon:capsakid,cobblemon:crocalor,cobblemon:croconaw,cobblemon:crustle,cobblemon:cubone,cobblemon:delphox,cobblemon:donphan,cobblemon:drampa,cobblemon:drapion,cobblemon:dwebble,cobblemon:espathra,cobblemon:falinks,cobblemon:farigiraf,cobblemon:fearow,cobblemon:fennekin,cobblemon:feraligatr,cobblemon:flygon,cobblemon:fuecoco,cobblemon:garganacl,cobblemon:girafarig,cobblemon:heliolisk,cobblemon:hippopotas,cobblemon:hippowdon,cobblemon:kangaskhan,cobblemon:klawf,cobblemon:krokorok,cobblemon:krookodile,cobblemon:larvesta,cobblemon:litleo,cobblemon:luxio,cobblemon:luxray,cobblemon:maractus,cobblemon:marowak,cobblemon:naclstack,cobblemon:numel,cobblemon:palpitoad,cobblemon:pawniard,cobblemon:phanpy,cobblemon:poltchageist,cobblemon:pyroar,cobblemon:rabsca,cobblemon:sandaconda,cobblemon:sandshrew,cobblemon:sandslash,cobblemon:scovillain,cobblemon:scrafty,cobblemon:scraggy,cobblemon:seismitoad,cobblemon:silicobra,cobblemon:sinistcha,cobblemon:skarmory,cobblemon:skeledirge,cobblemon:skorupi,cobblemon:totodile,cobblemon:vibrava" pokemon_type: "" region: "" shiny: false diff --git a/pack/config/ftbquests/quests/chapters/westmarch.snbt b/pack/config/ftbquests/quests/chapters/westmarch.snbt index e14274f..8da5492 100644 --- a/pack/config/ftbquests/quests/chapters/westmarch.snbt +++ b/pack/config/ftbquests/quests/chapters/westmarch.snbt @@ -46,7 +46,7 @@ min_level: 0 natures: "" poke_ball_used: "" - pokemon: "cobblemon:appletun,cobblemon:applin,cobblemon:araquanid,cobblemon:breloom,cobblemon:buneary,cobblemon:corphish,cobblemon:deerling,cobblemon:dewpider,cobblemon:dipplin,cobblemon:dratini,cobblemon:flabebe,cobblemon:flapple,cobblemon:floette,cobblemon:gabite,cobblemon:gible,cobblemon:goomy,cobblemon:greedent,cobblemon:gyarados,cobblemon:lilligant,cobblemon:magikarp,cobblemon:maushold,cobblemon:munchlax,cobblemon:nickit,cobblemon:nuzleaf,cobblemon:petilil,cobblemon:phantump,cobblemon:pichu,cobblemon:pikachu,cobblemon:scyther,cobblemon:seedot,cobblemon:sewaddle,cobblemon:shroomish,cobblemon:skwovet,cobblemon:stunky,cobblemon:swadloon,cobblemon:tandemaus,cobblemon:teddiursa,cobblemon:thievul" + pokemon: "cobblemon:appletun,cobblemon:applin,cobblemon:araquanid,cobblemon:breloom,cobblemon:buneary,cobblemon:corphish,cobblemon:dedenne,cobblemon:deerling,cobblemon:dewpider,cobblemon:dipplin,cobblemon:dratini,cobblemon:emolga,cobblemon:flabebe,cobblemon:flapple,cobblemon:floette,cobblemon:gabite,cobblemon:gible,cobblemon:goomy,cobblemon:greedent,cobblemon:gyarados,cobblemon:lilligant,cobblemon:magikarp,cobblemon:maushold,cobblemon:munchlax,cobblemon:nickit,cobblemon:nuzleaf,cobblemon:petilil,cobblemon:phantump,cobblemon:pichu,cobblemon:pikachu,cobblemon:pineco,cobblemon:rotom,cobblemon:scyther,cobblemon:seedot,cobblemon:sewaddle,cobblemon:shroomish,cobblemon:skwovet,cobblemon:stunky,cobblemon:swadloon,cobblemon:tandemaus,cobblemon:teddiursa,cobblemon:thievul" pokemon_type: "" region: "" shiny: false diff --git a/pack/config/regenerating_ore_veins/veins.json b/pack/config/regenerating_ore_veins/veins.json index e1d3aec..07d87d5 100644 --- a/pack/config/regenerating_ore_veins/veins.json +++ b/pack/config/regenerating_ore_veins/veins.json @@ -14,8 +14,8 @@ "selftest_nowhere" ], "shape": "sphere", - "min_radius": 0, - "max_radius": 1, + "min_radius": 1, + "max_radius": 2, "attempts": 1, "min_y": 0, "max_y": 0, @@ -66,12 +66,12 @@ "minecraft:lush_caves" ], "shape": "sphere", - "min_radius": 2, - "max_radius": 4, + "min_radius": 3, + "max_radius": 5, "attempts": 2, "min_y": 0, "max_y": 100, - "chunk_minimum_generation_separation": 6, + "chunk_minimum_generation_separation": 8, "fill_factor": 0.7, "regeneration_interval_seconds": 1200, "regeneration_interval_jitter": { @@ -118,12 +118,12 @@ "minecraft:lush_caves" ], "shape": "sphere", - "min_radius": 2, - "max_radius": 4, + "min_radius": 3, + "max_radius": 5, "attempts": 2, "min_y": -32, "max_y": -1, - "chunk_minimum_generation_separation": 6, + "chunk_minimum_generation_separation": 8, "fill_factor": 0.7, "regeneration_interval_seconds": 1200, "regeneration_interval_jitter": { @@ -146,8 +146,8 @@ "selftest_nowhere" ], "shape": "sphere", - "min_radius": 0, - "max_radius": 1, + "min_radius": 1, + "max_radius": 2, "attempts": 1, "min_y": 0, "max_y": 0, @@ -292,12 +292,12 @@ "minecraft:lush_caves" ], "shape": "sphere", - "min_radius": 2, - "max_radius": 4, + "min_radius": 3, + "max_radius": 5, "attempts": 2, "min_y": 0, "max_y": 100, - "chunk_minimum_generation_separation": 8, + "chunk_minimum_generation_separation": 10, "fill_factor": 0.7, "regeneration_interval_seconds": 1800, "regeneration_interval_jitter": { @@ -438,12 +438,12 @@ "minecraft:lush_caves" ], "shape": "sphere", - "min_radius": 2, - "max_radius": 4, + "min_radius": 3, + "max_radius": 5, "attempts": 2, "min_y": -32, "max_y": -1, - "chunk_minimum_generation_separation": 8, + "chunk_minimum_generation_separation": 10, "fill_factor": 0.7, "regeneration_interval_seconds": 1800, "regeneration_interval_jitter": { @@ -466,8 +466,8 @@ "selftest_nowhere" ], "shape": "sphere", - "min_radius": 0, - "max_radius": 1, + "min_radius": 1, + "max_radius": 2, "attempts": 1, "min_y": 0, "max_y": 0, @@ -560,12 +560,12 @@ "minecraft:lush_caves" ], "shape": "sphere", - "min_radius": 2, - "max_radius": 4, + "min_radius": 3, + "max_radius": 5, "attempts": 2, "min_y": 0, "max_y": 90, - "chunk_minimum_generation_separation": 8, + "chunk_minimum_generation_separation": 10, "fill_factor": 0.7, "regeneration_interval_seconds": 2400, "regeneration_interval_jitter": { @@ -654,12 +654,12 @@ "minecraft:lush_caves" ], "shape": "sphere", - "min_radius": 2, - "max_radius": 4, + "min_radius": 3, + "max_radius": 5, "attempts": 2, "min_y": -48, "max_y": -1, - "chunk_minimum_generation_separation": 8, + "chunk_minimum_generation_separation": 10, "fill_factor": 0.7, "regeneration_interval_seconds": 2400, "regeneration_interval_jitter": { @@ -682,8 +682,8 @@ "selftest_nowhere" ], "shape": "sphere", - "min_radius": 0, - "max_radius": 1, + "min_radius": 1, + "max_radius": 2, "attempts": 1, "min_y": 0, "max_y": 0, @@ -782,12 +782,12 @@ "minecraft:lush_caves" ], "shape": "sphere", - "min_radius": 2, - "max_radius": 3, + "min_radius": 3, + "max_radius": 4, "attempts": 1, "min_y": 0, "max_y": 60, - "chunk_minimum_generation_separation": 9, + "chunk_minimum_generation_separation": 12, "fill_factor": 0.7, "regeneration_interval_seconds": 2700, "regeneration_interval_jitter": { @@ -882,12 +882,12 @@ "minecraft:lush_caves" ], "shape": "sphere", - "min_radius": 2, - "max_radius": 3, + "min_radius": 3, + "max_radius": 4, "attempts": 1, "min_y": -56, "max_y": -1, - "chunk_minimum_generation_separation": 9, + "chunk_minimum_generation_separation": 12, "fill_factor": 0.7, "regeneration_interval_seconds": 2700, "regeneration_interval_jitter": { @@ -910,8 +910,8 @@ "selftest_nowhere" ], "shape": "sphere", - "min_radius": 0, - "max_radius": 1, + "min_radius": 1, + "max_radius": 2, "attempts": 1, "min_y": 0, "max_y": 0, @@ -1093,12 +1093,12 @@ "minecraft:lush_caves" ], "shape": "sphere", - "min_radius": 2, - "max_radius": 3, + "min_radius": 3, + "max_radius": 4, "attempts": 1, "min_y": 0, "max_y": 80, - "chunk_minimum_generation_separation": 9, + "chunk_minimum_generation_separation": 12, "fill_factor": 0.7, "regeneration_interval_seconds": 2700, "regeneration_interval_jitter": { @@ -1276,12 +1276,12 @@ "minecraft:lush_caves" ], "shape": "sphere", - "min_radius": 2, - "max_radius": 3, + "min_radius": 3, + "max_radius": 4, "attempts": 1, "min_y": -56, "max_y": -1, - "chunk_minimum_generation_separation": 9, + "chunk_minimum_generation_separation": 12, "fill_factor": 0.7, "regeneration_interval_seconds": 2700, "regeneration_interval_jitter": { @@ -1304,8 +1304,8 @@ "selftest_nowhere" ], "shape": "sphere", - "min_radius": 0, - "max_radius": 1, + "min_radius": 1, + "max_radius": 2, "attempts": 1, "min_y": 0, "max_y": 0, @@ -1390,12 +1390,12 @@ "minecraft:lush_caves" ], "shape": "sphere", - "min_radius": 2, - "max_radius": 3, + "min_radius": 3, + "max_radius": 4, "attempts": 2, "min_y": 0, "max_y": 120, - "chunk_minimum_generation_separation": 7, + "chunk_minimum_generation_separation": 9, "fill_factor": 0.7, "regeneration_interval_seconds": 3600, "regeneration_interval_jitter": { @@ -1476,12 +1476,12 @@ "minecraft:lush_caves" ], "shape": "sphere", - "min_radius": 2, - "max_radius": 3, + "min_radius": 3, + "max_radius": 4, "attempts": 2, "min_y": -48, "max_y": -1, - "chunk_minimum_generation_separation": 7, + "chunk_minimum_generation_separation": 9, "fill_factor": 0.7, "regeneration_interval_seconds": 3600, "regeneration_interval_jitter": { @@ -1504,8 +1504,8 @@ "selftest_nowhere" ], "shape": "sphere", - "min_radius": 0, - "max_radius": 1, + "min_radius": 1, + "max_radius": 2, "attempts": 1, "min_y": 0, "max_y": 0, @@ -1631,12 +1631,12 @@ "minecraft:lush_caves" ], "shape": "sphere", - "min_radius": 1, - "max_radius": 2, + "min_radius": 2, + "max_radius": 3, "attempts": 2, "min_y": 0, "max_y": 320, - "chunk_minimum_generation_separation": 8, + "chunk_minimum_generation_separation": 10, "fill_factor": 0.7, "regeneration_interval_seconds": 4500, "regeneration_interval_jitter": { @@ -1758,12 +1758,12 @@ "minecraft:lush_caves" ], "shape": "sphere", - "min_radius": 1, - "max_radius": 2, + "min_radius": 2, + "max_radius": 3, "attempts": 2, "min_y": -16, "max_y": -1, - "chunk_minimum_generation_separation": 8, + "chunk_minimum_generation_separation": 10, "fill_factor": 0.7, "regeneration_interval_seconds": 4500, "regeneration_interval_jitter": { @@ -1789,7 +1789,7 @@ ], "shape": "sphere", "min_radius": 1, - "max_radius": 1, + "max_radius": 2, "attempts": 1, "min_y": 0, "max_y": 0, @@ -1817,7 +1817,7 @@ ], "shape": "sphere", "min_radius": 1, - "max_radius": 1, + "max_radius": 2, "attempts": 1, "min_y": 0, "max_y": 0, @@ -1845,7 +1845,7 @@ ], "shape": "sphere", "min_radius": 1, - "max_radius": 1, + "max_radius": 2, "attempts": 1, "min_y": 0, "max_y": 0, @@ -1873,12 +1873,12 @@ ], "shape": "sphere", "min_radius": 0, - "max_radius": 0, + "max_radius": 1, "attempts": 1, "min_y": 0, "max_y": 0, "chunk_minimum_generation_separation": 64, - "fill_factor": 1.0, + "fill_factor": 0.8, "regeneration_interval_seconds": 10800, "regeneration_interval_jitter": { "range_min": -1080, @@ -1901,12 +1901,12 @@ ], "shape": "sphere", "min_radius": 0, - "max_radius": 0, + "max_radius": 1, "attempts": 1, "min_y": 0, "max_y": 0, "chunk_minimum_generation_separation": 64, - "fill_factor": 1.0, + "fill_factor": 0.8, "regeneration_interval_seconds": 3600, "regeneration_interval_jitter": { "range_min": -360, @@ -1994,12 +1994,12 @@ "minecraft:lush_caves" ], "shape": "sphere", - "min_radius": 1, - "max_radius": 2, + "min_radius": 2, + "max_radius": 3, "attempts": 1, "min_y": 0, "max_y": 100, - "chunk_minimum_generation_separation": 11, + "chunk_minimum_generation_separation": 14, "fill_factor": 0.7, "regeneration_interval_seconds": 3600, "regeneration_interval_jitter": { @@ -2088,12 +2088,12 @@ "minecraft:lush_caves" ], "shape": "sphere", - "min_radius": 1, - "max_radius": 2, + "min_radius": 2, + "max_radius": 3, "attempts": 1, "min_y": -48, "max_y": -1, - "chunk_minimum_generation_separation": 11, + "chunk_minimum_generation_separation": 14, "fill_factor": 0.7, "regeneration_interval_seconds": 3600, "regeneration_interval_jitter": { @@ -2116,8 +2116,8 @@ "selftest_nowhere" ], "shape": "sphere", - "min_radius": 0, - "max_radius": 1, + "min_radius": 1, + "max_radius": 2, "attempts": 1, "min_y": 0, "max_y": 0, @@ -2145,12 +2145,12 @@ ], "shape": "sphere", "min_radius": 0, - "max_radius": 0, + "max_radius": 1, "attempts": 1, "min_y": 0, "max_y": 0, "chunk_minimum_generation_separation": 64, - "fill_factor": 1.0, + "fill_factor": 0.8, "regeneration_interval_seconds": 3600, "regeneration_interval_jitter": { "range_min": -360, @@ -2244,12 +2244,12 @@ "minecraft:lush_caves" ], "shape": "sphere", - "min_radius": 1, - "max_radius": 2, + "min_radius": 2, + "max_radius": 3, "attempts": 1, "min_y": 0, "max_y": 100, - "chunk_minimum_generation_separation": 11, + "chunk_minimum_generation_separation": 14, "fill_factor": 0.7, "regeneration_interval_seconds": 3600, "regeneration_interval_jitter": { @@ -2344,12 +2344,12 @@ "minecraft:lush_caves" ], "shape": "sphere", - "min_radius": 1, - "max_radius": 2, + "min_radius": 2, + "max_radius": 3, "attempts": 1, "min_y": -48, "max_y": -1, - "chunk_minimum_generation_separation": 11, + "chunk_minimum_generation_separation": 14, "fill_factor": 0.7, "regeneration_interval_seconds": 3600, "regeneration_interval_jitter": { @@ -2373,12 +2373,12 @@ ], "shape": "sphere", "min_radius": 0, - "max_radius": 0, + "max_radius": 1, "attempts": 1, "min_y": 0, "max_y": 0, "chunk_minimum_generation_separation": 64, - "fill_factor": 1.0, + "fill_factor": 0.8, "regeneration_interval_seconds": 3600, "regeneration_interval_jitter": { "range_min": -360, @@ -2460,12 +2460,12 @@ "minecraft:lush_caves" ], "shape": "sphere", - "min_radius": 1, - "max_radius": 2, + "min_radius": 2, + "max_radius": 3, "attempts": 1, "min_y": 0, "max_y": 100, - "chunk_minimum_generation_separation": 11, + "chunk_minimum_generation_separation": 14, "fill_factor": 0.7, "regeneration_interval_seconds": 3600, "regeneration_interval_jitter": { @@ -2548,12 +2548,12 @@ "minecraft:lush_caves" ], "shape": "sphere", - "min_radius": 1, - "max_radius": 2, + "min_radius": 2, + "max_radius": 3, "attempts": 1, "min_y": -48, "max_y": -1, - "chunk_minimum_generation_separation": 11, + "chunk_minimum_generation_separation": 14, "fill_factor": 0.7, "regeneration_interval_seconds": 3600, "regeneration_interval_jitter": { @@ -2580,8 +2580,8 @@ "selftest_nowhere" ], "shape": "sphere", - "min_radius": 0, - "max_radius": 1, + "min_radius": 1, + "max_radius": 2, "attempts": 1, "min_y": 0, "max_y": 0, @@ -2609,12 +2609,12 @@ ], "shape": "sphere", "min_radius": 0, - "max_radius": 0, + "max_radius": 1, "attempts": 1, "min_y": 0, "max_y": 0, "chunk_minimum_generation_separation": 64, - "fill_factor": 1.0, + "fill_factor": 0.8, "regeneration_interval_seconds": 3600, "regeneration_interval_jitter": { "range_min": -360, @@ -2791,12 +2791,12 @@ "minecraft:lush_caves" ], "shape": "sphere", - "min_radius": 1, - "max_radius": 2, + "min_radius": 2, + "max_radius": 3, "attempts": 1, "min_y": 0, "max_y": 100, - "chunk_minimum_generation_separation": 11, + "chunk_minimum_generation_separation": 14, "fill_factor": 0.7, "regeneration_interval_seconds": 3600, "regeneration_interval_jitter": { @@ -2974,12 +2974,12 @@ "minecraft:lush_caves" ], "shape": "sphere", - "min_radius": 1, - "max_radius": 2, + "min_radius": 2, + "max_radius": 3, "attempts": 1, "min_y": -48, "max_y": -1, - "chunk_minimum_generation_separation": 11, + "chunk_minimum_generation_separation": 14, "fill_factor": 0.7, "regeneration_interval_seconds": 3600, "regeneration_interval_jitter": { @@ -3003,12 +3003,12 @@ ], "shape": "sphere", "min_radius": 0, - "max_radius": 0, + "max_radius": 1, "attempts": 1, "min_y": 0, "max_y": 0, "chunk_minimum_generation_separation": 64, - "fill_factor": 1.0, + "fill_factor": 0.8, "regeneration_interval_seconds": 3600, "regeneration_interval_jitter": { "range_min": -360, @@ -3088,12 +3088,12 @@ "minecraft:lush_caves" ], "shape": "sphere", - "min_radius": 1, - "max_radius": 2, + "min_radius": 2, + "max_radius": 3, "attempts": 2, "min_y": 0, "max_y": 120, - "chunk_minimum_generation_separation": 9, + "chunk_minimum_generation_separation": 12, "fill_factor": 0.7, "regeneration_interval_seconds": 3600, "regeneration_interval_jitter": { @@ -3174,12 +3174,12 @@ "minecraft:lush_caves" ], "shape": "sphere", - "min_radius": 1, - "max_radius": 2, + "min_radius": 2, + "max_radius": 3, "attempts": 2, "min_y": -48, "max_y": -1, - "chunk_minimum_generation_separation": 9, + "chunk_minimum_generation_separation": 12, "fill_factor": 0.7, "regeneration_interval_seconds": 3600, "regeneration_interval_jitter": { @@ -3203,12 +3203,12 @@ ], "shape": "sphere", "min_radius": 0, - "max_radius": 0, + "max_radius": 1, "attempts": 1, "min_y": 0, "max_y": 0, "chunk_minimum_generation_separation": 64, - "fill_factor": 1.0, + "fill_factor": 0.8, "regeneration_interval_seconds": 3600, "regeneration_interval_jitter": { "range_min": -360, @@ -3329,12 +3329,12 @@ "minecraft:lush_caves" ], "shape": "sphere", - "min_radius": 1, - "max_radius": 2, + "min_radius": 2, + "max_radius": 3, "attempts": 2, "min_y": 0, "max_y": 320, - "chunk_minimum_generation_separation": 9, + "chunk_minimum_generation_separation": 12, "fill_factor": 0.7, "regeneration_interval_seconds": 3600, "regeneration_interval_jitter": { @@ -3456,12 +3456,12 @@ "minecraft:lush_caves" ], "shape": "sphere", - "min_radius": 1, - "max_radius": 2, + "min_radius": 2, + "max_radius": 3, "attempts": 2, "min_y": -16, "max_y": -1, - "chunk_minimum_generation_separation": 9, + "chunk_minimum_generation_separation": 12, "fill_factor": 0.7, "regeneration_interval_seconds": 3600, "regeneration_interval_jitter": { @@ -3485,12 +3485,12 @@ ], "shape": "sphere", "min_radius": 0, - "max_radius": 0, + "max_radius": 1, "attempts": 1, "min_y": 0, "max_y": 0, "chunk_minimum_generation_separation": 64, - "fill_factor": 1.0, + "fill_factor": 0.8, "regeneration_interval_seconds": 4500, "regeneration_interval_jitter": { "range_min": -450, @@ -3611,12 +3611,12 @@ "minecraft:lush_caves" ], "shape": "sphere", - "min_radius": 1, - "max_radius": 2, + "min_radius": 2, + "max_radius": 3, "attempts": 2, "min_y": 0, "max_y": 320, - "chunk_minimum_generation_separation": 10, + "chunk_minimum_generation_separation": 13, "fill_factor": 0.7, "regeneration_interval_seconds": 4500, "regeneration_interval_jitter": { @@ -3738,12 +3738,12 @@ "minecraft:lush_caves" ], "shape": "sphere", - "min_radius": 1, - "max_radius": 2, + "min_radius": 2, + "max_radius": 3, "attempts": 2, "min_y": -16, "max_y": -1, - "chunk_minimum_generation_separation": 10, + "chunk_minimum_generation_separation": 13, "fill_factor": 0.7, "regeneration_interval_seconds": 4500, "regeneration_interval_jitter": { @@ -3766,8 +3766,8 @@ "selftest_nowhere" ], "shape": "sphere", - "min_radius": 0, - "max_radius": 1, + "min_radius": 1, + "max_radius": 2, "attempts": 1, "min_y": 0, "max_y": 0, diff --git a/pack/index.toml b/pack/index.toml index ad34a76..89cc939 100644 --- a/pack/index.toml +++ b/pack/index.toml @@ -34,7 +34,7 @@ hash = "e57d8311aec9f524911ed1313cabf138bb7fa5a2d3ba985a00a2a267ff35ef78" [[files]] file = "config/ftbquests/quests/chapters/basalt.snbt" -hash = "7e1b74aebae51bf0433bdd422b3ad9097e58abaf25cabaa5fcf03ca78d417bfd" +hash = "8a7eab2ca30f47109add6cfbf4eeb4717e3704bc85902ee8f4c5307b2b2eeb3c" [[files]] file = "config/ftbquests/quests/chapters/base.snbt" @@ -46,19 +46,19 @@ hash = "ce24fccd748e805ec617f7b571263c1af91377644a3fc17146bf38963e8b54ab" [[files]] file = "config/ftbquests/quests/chapters/deep_dark.snbt" -hash = "45a3992afb773ea5442dc536d18a6c7b2ed20befe1daf31f170e27d2b1c67324" +hash = "7208cd9166e11beed91086cd0a897f49cf31ecadd65acaa3b798169c86b0ae34" [[files]] file = "config/ftbquests/quests/chapters/deep_sea.snbt" -hash = "6c01131b458060cf69e11dae1f08ac9944ac77e2d6abcfb58a630137579cf9c3" +hash = "bd87d38b3ec40b408e1710d641ac9ce57824e2ebfd7cf3674a166521482acb76" [[files]] file = "config/ftbquests/quests/chapters/dripstone.snbt" -hash = "6de9aff416df5c916f00065c90ce64c57422ae4de4c415522178e090e5a5f830" +hash = "56886a1f390e9379672bde9190a0823cffdb3bb42cde043b4c772a1d0fa54e47" [[files]] file = "config/ftbquests/quests/chapters/frostpeak.snbt" -hash = "e0f380185bc9cb53c993e86d6fcb9a82ea14723bf211c5ad7d046aaeadd7c468" +hash = "150e60db7c18fbdb3c882cadc894813e3bc951c8adbfe42a30c38fc657c79a70" [[files]] file = "config/ftbquests/quests/chapters/getting_started.snbt" @@ -66,15 +66,15 @@ hash = "829aa67db8a39f6f43aa6076090c0040e4324be70abe0b30e0edcce48d924ab9" [[files]] file = "config/ftbquests/quests/chapters/highlands.snbt" -hash = "ed7e66df09969ac69acc0f12648c7fb71589c37a14f4530714c1a97ffb5dab17" +hash = "3724fa8a038561cc8965e6dfe5bc62718872d04f385bb636e984988762046670" [[files]] file = "config/ftbquests/quests/chapters/jungle.snbt" -hash = "bdfd541303d72bcfa0b8a28cf1a9277701be2f7d75edd5a95175e6cf3915fc39" +hash = "5afa0885dbd853ea973fb61881a14b97a98af4d0dd26b66d837541ba1b09c8c8" [[files]] file = "config/ftbquests/quests/chapters/lush_caves.snbt" -hash = "cd7dd0f47b33063d867f9f55c8b4307935ceda64509701886da75dbfb2ab92be" +hash = "bd5734f9df4e1dc1caa989c32b5dac797f5104a4c6c0987801d3650e12d1e491" [[files]] file = "config/ftbquests/quests/chapters/machines.snbt" @@ -82,7 +82,7 @@ hash = "dbeb43e993d27656f75e7a64a118e3592c40b5cbfc089bdf6a02069edae57011" [[files]] file = "config/ftbquests/quests/chapters/mire.snbt" -hash = "95bc5a97874794dff8d19cff04bfebe984c1d2fcefabcba15fc3b36a14e0880a" +hash = "c540889e8fe5432723f16c8cd8dbe63117e2b3b5523793b9872902d1837b4459" [[files]] file = "config/ftbquests/quests/chapters/shallows.snbt" @@ -90,11 +90,11 @@ hash = "1f3829f5f40e853673645d7ea250e646f97bbd79b3235bc6f2b119defb573423" [[files]] file = "config/ftbquests/quests/chapters/southwold.snbt" -hash = "7bec07cf30f2b218e7d89b617fb61f7077f692fe570694bb70aef8067052511a" +hash = "b3efaa514904c55f711c6c2565825bdd4866ce291e4810d975d1afc31d167f97" [[files]] file = "config/ftbquests/quests/chapters/sunscorch.snbt" -hash = "a975e58e4576456b574da8b51e76dc9f7f2e2c148c2c98a1af35469c522528b2" +hash = "f936a44de913816a869f29797f82f43c65f57e3f8b78cbe1d69aa1e98b76d136" [[files]] file = "config/ftbquests/quests/chapters/the_end.snbt" @@ -102,7 +102,7 @@ hash = "4a3aa5f1e3bed52e6c844284dec549367af01d4341aeefa460cdc135e2fba660" [[files]] file = "config/ftbquests/quests/chapters/westmarch.snbt" -hash = "d37a2c7743a9f38993c8d0d38f2f9c056bc760b68d04ea8bd91cc122e52e5d99" +hash = "8d9922fce0f84d0a3192eefb6924a17849c875a52144f6f032951e2d1137b4b5" [[files]] file = "config/ftbquests/quests/data.snbt" @@ -138,7 +138,7 @@ hash = "a6e9d717e2f73e463b25b1eacfbff43304fd8993937d8c002f9629f24ebcc221" [[files]] file = "config/regenerating_ore_veins/veins.json" -hash = "64053793b807d0376d14d418c35aadad712fa19c0c7e626620006047149106dc" +hash = "0b8bbd74b43ecd85183481405cfa80ec20c421ae41166b237463149b1c77d94e" [[files]] file = "config/worldgen_editor/presets/cobblesurvival_island.json" @@ -160,6 +160,14 @@ hash = "37f7469789d281cbd2ab40f483914eec29f5c82e2c3575854cd276f3296ebb24" file = "kubejs/assets/cobblesurvival/textures/item/revival_charm.png" hash = "084c0a7b17bb429c317843a7c45096dc8cb1ab61c748293475c1f3d6a5984086" +[[files]] +file = "kubejs/assets/regenerating_ore_veins/models/block/regenerator_block.json" +hash = "1ae6a922c225ec2e41778055975fb1b2f2fe1d72e6fa150c07a282743dd7531d" + +[[files]] +file = "kubejs/assets/regenerating_ore_veins/textures/block/regenerator_glass.png" +hash = "a92836513b16f1d5b872c8a3f888c5f340762bb2a9a3d54b56d5ef2a3fe44426" + [[files]] file = "kubejs/server_scripts/healing_machine.js" hash = "6b1b127b16a87b846a5abdbdb442edb8cbd9386562081309a3808eed1325ed1e" diff --git a/pack/kubejs/assets/regenerating_ore_veins/models/block/regenerator_block.json b/pack/kubejs/assets/regenerating_ore_veins/models/block/regenerator_block.json new file mode 100644 index 0000000..c5bb670 --- /dev/null +++ b/pack/kubejs/assets/regenerating_ore_veins/models/block/regenerator_block.json @@ -0,0 +1,54 @@ +{ + "parent": "minecraft:block/block", + "render_type": "translucent", + "textures": { + "particle": "regenerating_ore_veins:block/regenerator_glass", + "glass": "regenerating_ore_veins:block/regenerator_glass" + }, + "elements": [ + { + "from": [ + 1, + 1, + 1 + ], + "to": [ + 15, + 15, + 15 + ], + "faces": { + "down": { + "texture": "#glass", + "cullface": "down", + "tintindex": 0 + }, + "up": { + "texture": "#glass", + "cullface": "up", + "tintindex": 0 + }, + "north": { + "texture": "#glass", + "cullface": "north", + "tintindex": 0 + }, + "south": { + "texture": "#glass", + "cullface": "south", + "tintindex": 0 + }, + "west": { + "texture": "#glass", + "cullface": "west", + "tintindex": 0 + }, + "east": { + "texture": "#glass", + "cullface": "east", + "tintindex": 0 + } + } + } + ] +} diff --git a/pack/kubejs/assets/regenerating_ore_veins/textures/block/regenerator_glass.png b/pack/kubejs/assets/regenerating_ore_veins/textures/block/regenerator_glass.png new file mode 100644 index 0000000..cecbb6b Binary files /dev/null and b/pack/kubejs/assets/regenerating_ore_veins/textures/block/regenerator_glass.png differ diff --git a/pack/pack.toml b/pack/pack.toml index 5914c27..32bc577 100644 --- a/pack/pack.toml +++ b/pack/pack.toml @@ -6,7 +6,7 @@ pack-format = "packwiz:1.1.0" [index] file = "index.toml" hash-format = "sha256" -hash = "8016bb0599908a11ee19680f1dccf1a7c13aa36d7012a0f1eb4cbad37e0756f8" +hash = "b5cad59e6cdca6b6c84dcdad5237f284d5a4626f63ffe20f64b814ac462f7ef5" [versions] minecraft = "1.21.1" diff --git a/tools/zone_spawns.py b/tools/zone_spawns.py index 0ff9d62..6d14298 100755 --- a/tools/zone_spawns.py +++ b/tools/zone_spawns.py @@ -37,6 +37,8 @@ datapacks/core/data/cobblesurvival/spawn_pool_world/.json: its stages fitted to the band as in 2. The entries go into "bucket" (Cobblemon rolls the bucket first, and its End entries are all uncommon or rare), the heaviest of each line weighing "line_weight", Cobblemon's rare ones "rare_factor" of that. + 8. world/zones.json → "homeless" gives the lines that have no matching biome on the island a zone: rare spawns + anywhere in it, at its levels (Adrian, 2026-11-09: every implemented Pokémon must be obtainable). Also writes docs/zone-species.md, the list per zone for review. @@ -370,6 +372,53 @@ def main(): report[did].append((species.get(root, {}).get("name", root), names)) dimension_roots.add(root) + # 5. Lines with no home on the island (Adrian, 2026-11-09: every implemented Pokémon must be obtainable). They only + # spawn in biomes the island lacks, or have no spawn data at all (Rotom), so the field guide can't place them: + # world/zones.json → "homeless" names a zone for each, and they spawn there, anywhere in the zone, in the + # "bucket" at the zone's levels. Everything tied to the missing biomes is left out of the condition. + homeless = plan.get("homeless", {}) + raw_lines = collections.defaultdict(list) + for entry in entries.values(): + if "pokemon" in entry: + member = f"cobblemon:{entry['pokemon'].split()[0].lower()}" + a, _, b = str(entry["level"]).partition("-") + raw_lines[line_root(member, species)].append((entry, member, (int(a), int(b or a)))) + homeless_roots = set() + for zid, roots in homeless.get("zones", {}).items(): + lo, hi = zones[zid]["levels"] + kinds = {"submerged", "surface"} if "water" in zones[zid].get("rule", {}) else {"grounded"} + for name in roots: + root = f"cobblemon:{name}" + items = [i for i in raw_lines[root] if i[0].get("spawnablePositionType") in kinds] + if not items: + # No usable spawn data at all: one plain entry across the band. + items = [({"type": "pokemon", "pokemon": name, "presets": ["natural"], "spawnablePositionType": "grounded"}, root, (lo, hi))] + fitting = [(e, m, max(lv[0], lo), hi) for e, m, lv in items if lv[0] <= hi and lv[1] >= lo] + if not fitting: + _, m, lv = min(items, key=lambda u: min(abs(u[2][0] - hi), abs(u[2][1] - lo))) + fitting = [(e, um, lo, hi) for e, um, ulv in items if um == m and ulv == lv] + seen = set() + for entry, member, a, b in fitting: + key = (member, entry.get("spawnablePositionType")) + if key in seen: + continue + seen.add(key) + condition = {"zone": zid} + if "fluid" in entry.get("condition", {}): + condition["fluid"] = entry["condition"]["fluid"] + presets = entry.get("presets", []) + if zid in cave_zones: + condition["biomes"] = [cave_biome[zid]] + presets = [x for x in presets if x != "natural"] + pools[zid].append({ + "id": f"{zid}-{member.split(':')[1]}-{len(pools[zid])}", "type": "pokemon", "pokemon": entry["pokemon"], + "presets": presets, "spawnablePositionType": entry["spawnablePositionType"], "bucket": homeless["bucket"], + "level": f"{a}-{b}", "weight": homeless["weight"], "condition": condition, + }) + names = sorted({species[m]["name"] for _, m, _, _ in fitting if m in species}) + report[zid].append((species.get(root, {}).get("name", root), names)) + homeless_roots.add(root) + low_flyers = [(zid, s["pokemon"]) for zid, spawns in pools.items() for s in spawns if zones[zid]["levels"][0] < HIGH_ZONE_LEVEL and f"cobblemon:{s['pokemon'].split()[0].lower()}" in strong_flyers] if low_flyers: @@ -430,7 +479,7 @@ def main(): f"| {zone['levels'][1] + GUARDIAN_LEVELS_ABOVE_BAND} | {drop_text} |") REPORT.write_text("\n".join(lines_out) + "\n") - unplaced = [r for r in lines if r not in home and r not in dimension_roots] + unplaced = [r for r in lines if r not in home and r not in dimension_roots and r not in homeless_roots] grounded = sorted(species.get(r, {}).get("name", r) for r in unplaced if r in flying_lines) if grounded: print(f"strong flyers kept out of the wild (no high zone fits their habitat): {', '.join(grounded)}") diff --git a/world/zones.json b/world/zones.json index 7604eaf..4475f33 100644 --- a/world/zones.json +++ b/world/zones.json @@ -7,27 +7,27 @@ "wanderers": {"grace_levels": 10}, "ore_defaults": {"fill": 0.7, "node_fill": 0.8, "attempts": 1, "jitter": 0.1}, "ores": { - "coal": {"zone": "button_isle", "item": "minecraft:coal", "stone": "minecraft:coal_ore", "deepslate": "minecraft:deepslate_coal_ore", "regen_minutes": 20, "nodes": {"chance": 0.5, "radius": [0, 1]}, "veins": {"radius": [2, 4], "y": [-32, 100], "spacing": 6, "attempts": 2}}, - "copper": {"zone": "southwold", "item": "minecraft:raw_copper", "stone": "minecraft:copper_ore", "deepslate": "minecraft:deepslate_copper_ore", "regen_minutes": 30, "nodes": {"chance": 0.2, "radius": [0, 1]}, "veins": {"radius": [2, 4], "y": [-32, 100], "spacing": 8, "attempts": 2}}, - "iron": {"zone": "westmarch", "item": "minecraft:raw_iron", "stone": "minecraft:iron_ore", "deepslate": "minecraft:deepslate_iron_ore", "regen_minutes": 40, "nodes": {"chance": 0.2, "radius": [0, 1]}, "veins": {"radius": [2, 4], "y": [-48, 90], "spacing": 8, "attempts": 2}}, - "redstone": {"zone": "jungle", "item": "minecraft:redstone", "stone": "minecraft:redstone_ore", "deepslate": "minecraft:deepslate_redstone_ore", "regen_minutes": 45, "nodes": {"chance": 0.2, "radius": [0, 1]}, "veins": {"radius": [2, 3], "y": [-56, 60], "spacing": 9, "attempts": 1}}, - "lapis": {"zone": "highlands", "item": "minecraft:lapis_lazuli", "stone": "minecraft:lapis_ore", "deepslate": "minecraft:deepslate_lapis_ore", "regen_minutes": 45, "nodes": {"chance": 0.15, "radius": [0, 1]}, "veins": {"radius": [2, 3], "y": [-56, 80], "spacing": 9, "attempts": 1}}, - "gold": {"zone": "sunscorch", "item": "minecraft:raw_gold", "stone": "minecraft:gold_ore", "deepslate": "minecraft:deepslate_gold_ore", "regen_minutes": 60, "nodes": {"chance": 0.3, "radius": [0, 1]}, "veins": {"radius": [2, 3], "y": [-48, 120], "spacing": 7, "attempts": 2}}, - "emerald": {"zone": "frostpeak", "item": "minecraft:emerald", "stone": "minecraft:emerald_ore", "deepslate": "minecraft:deepslate_emerald_ore", "regen_minutes": 75, "nodes": {"chance": 0.15, "radius": [0, 1]}, "veins": {"radius": [1, 2], "y": [-16, 320], "spacing": 8, "attempts": 2}}, - "amethyst": {"zone": "dripstone", "item": "minecraft:amethyst_shard", "blocks": [["minecraft:amethyst_block", 3], ["minecraft:budding_amethyst", 1]], "regen_minutes": 120, "nodes": {"chance": 0.5, "tries": 8, "radius": [1, 1], "y": [0, 40]}}, - "diamond": {"zone": "deep_dark", "item": "minecraft:diamond", "deepslate": "minecraft:deepslate_diamond_ore", "regen_minutes": 90, "nodes": {"chance": 0.15, "tries": 8, "radius": [1, 1], "y": [-64, -24]}}, - "quartz": {"zone": "basalt", "item": "minecraft:quartz", "blocks": [["minecraft:nether_quartz_ore", 1]], "regen_minutes": 60, "nodes": {"chance": 0.5, "tries": 8, "radius": [1, 1], "y": [-64, 40]}}, - "netherite": {"zone": "basalt", "item": "minecraft:ancient_debris", "blocks": [["minecraft:ancient_debris", 1]], "regen_minutes": 180, "nodes": {"chance": 0.06, "tries": 8, "radius": [0, 0], "y": [-64, 40]}}, - "thunder_stone": {"zone": "westmarch", "item": "cobblemon:thunder_stone", "stone": "cobblemon:thunder_stone_ore", "deepslate": "cobblemon:deepslate_thunder_stone_ore", "regen_minutes": 60, "nodes": {"chance": 0.03, "radius": [0, 0]}, "veins": {"radius": [1, 2], "y": [-48, 100], "spacing": 11, "attempts": 1}}, - "shiny_stone": {"zone": "lush_caves", "item": "cobblemon:shiny_stone", "stone": "cobblemon:shiny_stone_ore", "deepslate": "cobblemon:deepslate_shiny_stone_ore", "regen_minutes": 60, "nodes": {"chance": 0.15, "tries": 8, "radius": [0, 1], "y": [-16, 40]}}, - "leaf_stone": {"zone": "jungle", "item": "cobblemon:leaf_stone", "stone": "cobblemon:leaf_stone_ore", "deepslate": "cobblemon:deepslate_leaf_stone_ore", "regen_minutes": 60, "nodes": {"chance": 0.04, "radius": [0, 0]}, "veins": {"radius": [1, 2], "y": [-48, 100], "spacing": 11, "attempts": 1}}, - "water_stone": {"zone": "mire", "item": "cobblemon:water_stone", "stone": "cobblemon:water_stone_ore", "deepslate": "cobblemon:deepslate_water_stone_ore", "regen_minutes": 60, "nodes": {"chance": 0.04, "radius": [0, 0]}, "veins": {"radius": [1, 2], "y": [-48, 100], "spacing": 11, "attempts": 1}}, - "moon_stone": {"zone": "dripstone", "item": "cobblemon:moon_stone", "blocks": [["cobblemon:dripstone_moon_stone_ore", 1], ["cobblemon:moon_stone_ore", 1], ["cobblemon:deepslate_moon_stone_ore", 1]], "regen_minutes": 60, "nodes": {"chance": 0.25, "tries": 8, "radius": [0, 1], "y": [0, 40]}}, - "sun_stone": {"zone": "highlands", "item": "cobblemon:sun_stone", "stone": "cobblemon:sun_stone_ore", "deepslate": "cobblemon:deepslate_sun_stone_ore", "regen_minutes": 60, "nodes": {"chance": 0.02, "radius": [0, 0]}, "veins": {"radius": [1, 2], "y": [-48, 100], "spacing": 11, "attempts": 1}}, - "fire_stone": {"zone": "sunscorch", "item": "cobblemon:fire_stone", "stone": "cobblemon:fire_stone_ore", "deepslate": "cobblemon:deepslate_fire_stone_ore", "regen_minutes": 60, "nodes": {"chance": 0.08, "radius": [0, 0]}, "veins": {"radius": [1, 2], "y": [-48, 120], "spacing": 9, "attempts": 2}}, - "ice_stone": {"zone": "frostpeak", "item": "cobblemon:ice_stone", "stone": "cobblemon:ice_stone_ore", "deepslate": "cobblemon:deepslate_ice_stone_ore", "regen_minutes": 60, "nodes": {"chance": 0.06, "radius": [0, 0]}, "veins": {"radius": [1, 2], "y": [-16, 320], "spacing": 9, "attempts": 2}}, - "dawn_stone": {"zone": "frostpeak", "item": "cobblemon:dawn_stone", "stone": "cobblemon:dawn_stone_ore", "deepslate": "cobblemon:deepslate_dawn_stone_ore", "regen_minutes": 75, "nodes": {"chance": 0.04, "radius": [0, 0]}, "veins": {"radius": [1, 2], "y": [-16, 320], "spacing": 10, "attempts": 2}}, - "dusk_stone": {"zone": "deep_dark", "item": "cobblemon:dusk_stone", "deepslate": "cobblemon:deepslate_dusk_stone_ore", "regen_minutes": 75, "nodes": {"chance": 0.1, "tries": 8, "radius": [0, 1], "y": [-64, -24]}} + "coal": {"zone": "button_isle", "item": "minecraft:coal", "stone": "minecraft:coal_ore", "deepslate": "minecraft:deepslate_coal_ore", "regen_minutes": 20, "nodes": {"chance": 0.3, "radius": [1, 2]}, "veins": {"radius": [3, 5], "y": [-32, 100], "spacing": 8, "attempts": 2}}, + "copper": {"zone": "southwold", "item": "minecraft:raw_copper", "stone": "minecraft:copper_ore", "deepslate": "minecraft:deepslate_copper_ore", "regen_minutes": 30, "nodes": {"chance": 0.12, "radius": [1, 2]}, "veins": {"radius": [3, 5], "y": [-32, 100], "spacing": 10, "attempts": 2}}, + "iron": {"zone": "westmarch", "item": "minecraft:raw_iron", "stone": "minecraft:iron_ore", "deepslate": "minecraft:deepslate_iron_ore", "regen_minutes": 40, "nodes": {"chance": 0.12, "radius": [1, 2]}, "veins": {"radius": [3, 5], "y": [-48, 90], "spacing": 10, "attempts": 2}}, + "redstone": {"zone": "jungle", "item": "minecraft:redstone", "stone": "minecraft:redstone_ore", "deepslate": "minecraft:deepslate_redstone_ore", "regen_minutes": 45, "nodes": {"chance": 0.12, "radius": [1, 2]}, "veins": {"radius": [3, 4], "y": [-56, 60], "spacing": 12, "attempts": 1}}, + "lapis": {"zone": "highlands", "item": "minecraft:lapis_lazuli", "stone": "minecraft:lapis_ore", "deepslate": "minecraft:deepslate_lapis_ore", "regen_minutes": 45, "nodes": {"chance": 0.09, "radius": [1, 2]}, "veins": {"radius": [3, 4], "y": [-56, 80], "spacing": 12, "attempts": 1}}, + "gold": {"zone": "sunscorch", "item": "minecraft:raw_gold", "stone": "minecraft:gold_ore", "deepslate": "minecraft:deepslate_gold_ore", "regen_minutes": 60, "nodes": {"chance": 0.18, "radius": [1, 2]}, "veins": {"radius": [3, 4], "y": [-48, 120], "spacing": 9, "attempts": 2}}, + "emerald": {"zone": "frostpeak", "item": "minecraft:emerald", "stone": "minecraft:emerald_ore", "deepslate": "minecraft:deepslate_emerald_ore", "regen_minutes": 75, "nodes": {"chance": 0.09, "radius": [1, 2]}, "veins": {"radius": [2, 3], "y": [-16, 320], "spacing": 10, "attempts": 2}}, + "amethyst": {"zone": "dripstone", "item": "minecraft:amethyst_shard", "blocks": [["minecraft:amethyst_block", 3], ["minecraft:budding_amethyst", 1]], "regen_minutes": 120, "nodes": {"chance": 0.3, "tries": 8, "radius": [1, 2], "y": [0, 40]}}, + "diamond": {"zone": "deep_dark", "item": "minecraft:diamond", "deepslate": "minecraft:deepslate_diamond_ore", "regen_minutes": 90, "nodes": {"chance": 0.09, "tries": 8, "radius": [1, 2], "y": [-64, -24]}}, + "quartz": {"zone": "basalt", "item": "minecraft:quartz", "blocks": [["minecraft:nether_quartz_ore", 1]], "regen_minutes": 60, "nodes": {"chance": 0.3, "tries": 8, "radius": [1, 2], "y": [-64, 40]}}, + "netherite": {"zone": "basalt", "item": "minecraft:ancient_debris", "blocks": [["minecraft:ancient_debris", 1]], "regen_minutes": 180, "nodes": {"chance": 0.036, "tries": 8, "radius": [0, 1], "y": [-64, 40]}}, + "thunder_stone": {"zone": "westmarch", "item": "cobblemon:thunder_stone", "stone": "cobblemon:thunder_stone_ore", "deepslate": "cobblemon:deepslate_thunder_stone_ore", "regen_minutes": 60, "nodes": {"chance": 0.018, "radius": [0, 1]}, "veins": {"radius": [2, 3], "y": [-48, 100], "spacing": 14, "attempts": 1}}, + "shiny_stone": {"zone": "lush_caves", "item": "cobblemon:shiny_stone", "stone": "cobblemon:shiny_stone_ore", "deepslate": "cobblemon:deepslate_shiny_stone_ore", "regen_minutes": 60, "nodes": {"chance": 0.09, "tries": 8, "radius": [1, 2], "y": [-16, 40]}}, + "leaf_stone": {"zone": "jungle", "item": "cobblemon:leaf_stone", "stone": "cobblemon:leaf_stone_ore", "deepslate": "cobblemon:deepslate_leaf_stone_ore", "regen_minutes": 60, "nodes": {"chance": 0.024, "radius": [0, 1]}, "veins": {"radius": [2, 3], "y": [-48, 100], "spacing": 14, "attempts": 1}}, + "water_stone": {"zone": "mire", "item": "cobblemon:water_stone", "stone": "cobblemon:water_stone_ore", "deepslate": "cobblemon:deepslate_water_stone_ore", "regen_minutes": 60, "nodes": {"chance": 0.024, "radius": [0, 1]}, "veins": {"radius": [2, 3], "y": [-48, 100], "spacing": 14, "attempts": 1}}, + "moon_stone": {"zone": "dripstone", "item": "cobblemon:moon_stone", "blocks": [["cobblemon:dripstone_moon_stone_ore", 1], ["cobblemon:moon_stone_ore", 1], ["cobblemon:deepslate_moon_stone_ore", 1]], "regen_minutes": 60, "nodes": {"chance": 0.15, "tries": 8, "radius": [1, 2], "y": [0, 40]}}, + "sun_stone": {"zone": "highlands", "item": "cobblemon:sun_stone", "stone": "cobblemon:sun_stone_ore", "deepslate": "cobblemon:deepslate_sun_stone_ore", "regen_minutes": 60, "nodes": {"chance": 0.012, "radius": [0, 1]}, "veins": {"radius": [2, 3], "y": [-48, 100], "spacing": 14, "attempts": 1}}, + "fire_stone": {"zone": "sunscorch", "item": "cobblemon:fire_stone", "stone": "cobblemon:fire_stone_ore", "deepslate": "cobblemon:deepslate_fire_stone_ore", "regen_minutes": 60, "nodes": {"chance": 0.048, "radius": [0, 1]}, "veins": {"radius": [2, 3], "y": [-48, 120], "spacing": 12, "attempts": 2}}, + "ice_stone": {"zone": "frostpeak", "item": "cobblemon:ice_stone", "stone": "cobblemon:ice_stone_ore", "deepslate": "cobblemon:deepslate_ice_stone_ore", "regen_minutes": 60, "nodes": {"chance": 0.036, "radius": [0, 1]}, "veins": {"radius": [2, 3], "y": [-16, 320], "spacing": 12, "attempts": 2}}, + "dawn_stone": {"zone": "frostpeak", "item": "cobblemon:dawn_stone", "stone": "cobblemon:dawn_stone_ore", "deepslate": "cobblemon:deepslate_dawn_stone_ore", "regen_minutes": 75, "nodes": {"chance": 0.024, "radius": [0, 1]}, "veins": {"radius": [2, 3], "y": [-16, 320], "spacing": 13, "attempts": 2}}, + "dusk_stone": {"zone": "deep_dark", "item": "cobblemon:dusk_stone", "deepslate": "cobblemon:deepslate_dusk_stone_ore", "regen_minutes": 75, "nodes": {"chance": 0.06, "tries": 8, "radius": [1, 2], "y": [-64, -24]}} }, "species": {"durant": "basalt", "torkoal": "basalt", "heatmor": "basalt", "ditto": {"zone": "deep_dark", "all_entries": true}}, @@ -79,6 +79,24 @@ {"id": "deep_dark", "types": ["ghost", "dark", "steel", "poison", "psychic", "rock"], "guardian": {"species": "regigigas", "drops": [["cobblemon:icy_rock", 3], ["cobblemon:exp_candy_l", 2]]}, "lines": 21, "name": "Deep Dark", "biome": "minecraft:deep_dark", "levels": [45, 60], "hazard": "darkness (vanilla sculk; no Warden)"}, {"id": "basalt", "types": ["fire", "rock", "ground", "steel", "dark"], "guardian": {"species": "moltres", "drops": [["cobblemon:exp_candy_xl", 3], ["minecraft:netherite_scrap", 2]]}, "lines": 15, "name": "Basalt Furnace", "biome": "minecraft:basalt_deltas", "levels": [55, 70], "hazard": "heat (Cold Sweat)"} ], + "homeless": { + "_comment": "Adrian, 2026-11-09: every implemented Pokemon must be obtainable. These lines only spawn in biomes the island doesn't have (savanna, frozen ocean, mushroom fields, ...), or not at all (Rotom). Each gets a home in the zone closest to its habitat, as a rare spawn at the zone's levels, on top of the zone's own lines (tools/zone_spawns.py).", + "bucket": "rare", "weight": 10, + "zones": { + "southwold": ["nidoranf", "nidoranm", "smoliv"], + "lush_caves": ["foongus"], + "westmarch": ["dedenne", "emolga", "pineco", "rotom"], + "jungle": ["komala", "pancham", "stufful"], + "dripstone": ["aron"], + "highlands": ["blitzle", "doduo"], + "mire": ["hatenna", "toedscool"], + "sunscorch": ["girafarig", "kangaskhan", "litleo"], + "deep_sea": ["piplup", "seel", "spheal"], + "frostpeak": ["bergmite", "cetoddle", "cubchoo", "eiscue", "stantler", "swinub"], + "deep_dark": ["impidimp", "litwick"], + "basalt": ["charcadet"] + } + }, "dimensions": [ {"id": "the_end", "name": "The End", "dimension": "minecraft:the_end", "levels": [50, 70], "hazard": "none", "biome_tags": ["#cobblemon:is_end", "#minecraft:is_end"],