Phase 9 begins: bigger, sparser veins, a mine-through respawn block, left-out lines

Phase 8 approved (2026-11-09). Adrian's Phase 9 answers: left-out Pokemon rare
in fitting zones; legendaries from crafted summons; no public release.

- Ore veins more sporadic but bigger: nodes about 40 % rarer, veins about 30 %
  further apart, each one block larger in radius. 1.5-3x the ore overall; a
  new island is needed to see it. World check on the regenerated island passes.
- The respawn block (Regenerating Ore Veins' regenerator): the aim passes
  through it unless sneaking (mixin, the pack's first), so ore behind it can be
  mined; much fainter glass through KubeJS assets. Self-test
  regenerator_lets_the_aim_through casts a real ray.
- 31 lines (67 species) with no matching island biome, or no spawn data
  (Rotom), get rare homes in fitting zones (world/zones.json -> homeless).
  Existing spawns and guardians don't change. JEI data and quests regenerated.
- surface_nodes_lie_in_the_ground checks the node's centre column: a wider
  node's edge can lie under a tree or a slope.
- Roadmap: every implemented Pokemon obtainable; Iris and Complementary
  Reimagined as the default shader.

Self-tests and the island check pass.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
claudeandClaude Opus 5.5 committed 2026-11-09 12:45:44 +01:00
1 parent 0be2c2e5c6
commit e206664b3d
45 files changed
+2723 -242

No files matched your search

+1 -1
View File
@@ -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). 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 ## What's in the pack
@@ -5,57 +5,57 @@
"vein": "coal_node", "vein": "coal_node",
"zone": "button_isle", "zone": "button_isle",
"where": "surface", "where": "surface",
"chance": 0.5, "chance": 0.3,
"radius": 1 "radius": 2
}, },
{ {
"vein": "copper_node", "vein": "copper_node",
"zone": "southwold", "zone": "southwold",
"where": "surface", "where": "surface",
"chance": 0.2, "chance": 0.12,
"radius": 1 "radius": 2
}, },
{ {
"vein": "iron_node", "vein": "iron_node",
"zone": "westmarch", "zone": "westmarch",
"where": "surface", "where": "surface",
"chance": 0.2, "chance": 0.12,
"radius": 1 "radius": 2
}, },
{ {
"vein": "redstone_node", "vein": "redstone_node",
"zone": "jungle", "zone": "jungle",
"where": "surface", "where": "surface",
"chance": 0.2, "chance": 0.12,
"radius": 1 "radius": 2
}, },
{ {
"vein": "lapis_node", "vein": "lapis_node",
"zone": "highlands", "zone": "highlands",
"where": "surface", "where": "surface",
"chance": 0.15, "chance": 0.09,
"radius": 1 "radius": 2
}, },
{ {
"vein": "gold_node", "vein": "gold_node",
"zone": "sunscorch", "zone": "sunscorch",
"where": "surface", "where": "surface",
"chance": 0.3, "chance": 0.18,
"radius": 1 "radius": 2
}, },
{ {
"vein": "emerald_node", "vein": "emerald_node",
"zone": "frostpeak", "zone": "frostpeak",
"where": "surface", "where": "surface",
"chance": 0.15, "chance": 0.09,
"radius": 1 "radius": 2
}, },
{ {
"vein": "amethyst_node", "vein": "amethyst_node",
"zone": "dripstone", "zone": "dripstone",
"where": "cave", "where": "cave",
"chance": 0.5, "chance": 0.3,
"radius": 1, "radius": 2,
"biome": "minecraft:dripstone_caves", "biome": "minecraft:dripstone_caves",
"tries": 8, "tries": 8,
"y": [ "y": [
@@ -67,8 +67,8 @@
"vein": "diamond_node", "vein": "diamond_node",
"zone": "deep_dark", "zone": "deep_dark",
"where": "cave", "where": "cave",
"chance": 0.15, "chance": 0.09,
"radius": 1, "radius": 2,
"biome": "minecraft:deep_dark", "biome": "minecraft:deep_dark",
"tries": 8, "tries": 8,
"y": [ "y": [
@@ -80,8 +80,8 @@
"vein": "quartz_node", "vein": "quartz_node",
"zone": "basalt", "zone": "basalt",
"where": "cave", "where": "cave",
"chance": 0.5, "chance": 0.3,
"radius": 1, "radius": 2,
"biome": "minecraft:basalt_deltas", "biome": "minecraft:basalt_deltas",
"tries": 8, "tries": 8,
"y": [ "y": [
@@ -93,8 +93,8 @@
"vein": "netherite_node", "vein": "netherite_node",
"zone": "basalt", "zone": "basalt",
"where": "cave", "where": "cave",
"chance": 0.06, "chance": 0.036,
"radius": 0, "radius": 1,
"biome": "minecraft:basalt_deltas", "biome": "minecraft:basalt_deltas",
"tries": 8, "tries": 8,
"y": [ "y": [
@@ -106,15 +106,15 @@
"vein": "thunder_stone_node", "vein": "thunder_stone_node",
"zone": "westmarch", "zone": "westmarch",
"where": "surface", "where": "surface",
"chance": 0.03, "chance": 0.018,
"radius": 0 "radius": 1
}, },
{ {
"vein": "shiny_stone_node", "vein": "shiny_stone_node",
"zone": "lush_caves", "zone": "lush_caves",
"where": "cave", "where": "cave",
"chance": 0.15, "chance": 0.09,
"radius": 1, "radius": 2,
"biome": "minecraft:lush_caves", "biome": "minecraft:lush_caves",
"tries": 8, "tries": 8,
"y": [ "y": [
@@ -126,22 +126,22 @@
"vein": "leaf_stone_node", "vein": "leaf_stone_node",
"zone": "jungle", "zone": "jungle",
"where": "surface", "where": "surface",
"chance": 0.04, "chance": 0.024,
"radius": 0 "radius": 1
}, },
{ {
"vein": "water_stone_node", "vein": "water_stone_node",
"zone": "mire", "zone": "mire",
"where": "surface", "where": "surface",
"chance": 0.04, "chance": 0.024,
"radius": 0 "radius": 1
}, },
{ {
"vein": "moon_stone_node", "vein": "moon_stone_node",
"zone": "dripstone", "zone": "dripstone",
"where": "cave", "where": "cave",
"chance": 0.25, "chance": 0.15,
"radius": 1, "radius": 2,
"biome": "minecraft:dripstone_caves", "biome": "minecraft:dripstone_caves",
"tries": 8, "tries": 8,
"y": [ "y": [
@@ -153,36 +153,36 @@
"vein": "sun_stone_node", "vein": "sun_stone_node",
"zone": "highlands", "zone": "highlands",
"where": "surface", "where": "surface",
"chance": 0.02, "chance": 0.012,
"radius": 0 "radius": 1
}, },
{ {
"vein": "fire_stone_node", "vein": "fire_stone_node",
"zone": "sunscorch", "zone": "sunscorch",
"where": "surface", "where": "surface",
"chance": 0.08, "chance": 0.048,
"radius": 0 "radius": 1
}, },
{ {
"vein": "ice_stone_node", "vein": "ice_stone_node",
"zone": "frostpeak", "zone": "frostpeak",
"where": "surface", "where": "surface",
"chance": 0.06, "chance": 0.036,
"radius": 0 "radius": 1
}, },
{ {
"vein": "dawn_stone_node", "vein": "dawn_stone_node",
"zone": "frostpeak", "zone": "frostpeak",
"where": "surface", "where": "surface",
"chance": 0.04, "chance": 0.024,
"radius": 0 "radius": 1
}, },
{ {
"vein": "dusk_stone_node", "vein": "dusk_stone_node",
"zone": "deep_dark", "zone": "deep_dark",
"where": "cave", "where": "cave",
"chance": 0.1, "chance": 0.06,
"radius": 1, "radius": 2,
"biome": "minecraft:deep_dark", "biome": "minecraft:deep_dark",
"tries": 8, "tries": 8,
"y": [ "y": [
@@ -48,6 +48,22 @@
"multiplier": 1.25 "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", "bucket": "common",
"condition": { "condition": {
@@ -90,6 +90,22 @@
"multiplier": 1.25 "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", "bucket": "common",
"condition": { "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": { "anticondition": {
"structures": [ "structures": [
@@ -539,6 +573,22 @@
"multiplier": 2.0 "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", "bucket": "common",
"condition": { "condition": {
@@ -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": { "anticondition": {
"biomes": [ "biomes": [
@@ -974,6 +989,21 @@
"multiplier": 5.0 "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", "bucket": "common",
"condition": { "condition": {
@@ -2312,6 +2342,21 @@
"type": "pokemon", "type": "pokemon",
"weight": 60.0 "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": { "anticondition": {
"biomes": [ "biomes": [
@@ -2408,6 +2453,21 @@
"type": "pokemon", "type": "pokemon",
"weight": 4.0 "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", "bucket": "common",
"condition": { "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": { "anticondition": {
"biomes": [ "biomes": [
@@ -3598,6 +3688,21 @@
}, },
"multiplier": 3.0 "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"
}
} }
] ]
} }
@@ -64,6 +64,24 @@
"multiplier": 1.25 "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", "bucket": "ultra-rare",
"condition": { "condition": {
@@ -619,6 +637,24 @@
"type": "pokemon", "type": "pokemon",
"weight": 60.0 "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", "bucket": "uncommon",
"condition": { "condition": {
@@ -121,6 +121,21 @@
"type": "pokemon", "type": "pokemon",
"weight": 4.8 "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", "bucket": "common",
"condition": { "condition": {
@@ -455,6 +470,22 @@
"type": "pokemon", "type": "pokemon",
"weight": 21.6 "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", "bucket": "uncommon",
"condition": { "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": { "anticondition": {
"biomes": [ "biomes": [
@@ -869,6 +916,21 @@
"type": "pokemon", "type": "pokemon",
"weight": 87.5 "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", "bucket": "common",
"condition": { "condition": {
@@ -1532,6 +1594,22 @@
"multiplier": 0.25 "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", "bucket": "ultra-rare",
"condition": { "condition": {
@@ -1659,6 +1737,22 @@
"type": "pokemon", "type": "pokemon",
"weight": 21.6 "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", "bucket": "common",
"condition": { "condition": {
@@ -2033,6 +2127,22 @@
"type": "pokemon", "type": "pokemon",
"weight": 99.0 "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": { "anticondition": {
"biomes": [ "biomes": [
@@ -2383,6 +2493,22 @@
}, },
"multiplier": 1.25 "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"
}
} }
] ]
} }
@@ -121,6 +121,22 @@
"multiplier": 2.0 "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", "bucket": "common",
"condition": { "condition": {
@@ -525,6 +541,36 @@
"multiplier": 2.0 "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": { "anticondition": {
"biomes": [ "biomes": [
@@ -3926,6 +3972,22 @@
"multiplier": 1.5 "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": { "anticondition": {
"biomes": [ "biomes": [
@@ -58,6 +58,21 @@
"multiplier": 1.25 "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", "bucket": "common",
"condition": { "condition": {
@@ -499,6 +514,24 @@
"type": "pokemon", "type": "pokemon",
"weight": 100.0 "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": { "anticondition": {
"structures": [ "structures": [
@@ -552,6 +585,22 @@
"multiplier": 2.0 "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", "bucket": "uncommon",
"condition": { "condition": {
@@ -1003,6 +1052,21 @@
"multiplier": 2.0 "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", "bucket": "common",
"condition": { "condition": {
@@ -219,6 +219,22 @@
"multiplier": 2.0 "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", "bucket": "common",
"condition": { "condition": {
@@ -960,6 +960,38 @@
"type": "pokemon", "type": "pokemon",
"weight": 4.0 "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": { "anticondition": {
"biomes": [ "biomes": [
@@ -2115,6 +2147,38 @@
"multiplier": 3.0 "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", "bucket": "common",
"condition": { "condition": {
@@ -2202,6 +2202,70 @@
"multiplier": 5.0 "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": { "anticondition": {
"biomes": [ "biomes": [
@@ -2593,6 +2657,21 @@
"multiplier": 2.0 "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": { "anticondition": {
"biomes": [ "biomes": [
@@ -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", "bucket": "common",
"condition": { "condition": {
@@ -748,6 +764,22 @@
"type": "pokemon", "type": "pokemon",
"weight": 0.6 "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", "bucket": "common",
"condition": { "condition": {
@@ -827,6 +859,22 @@
"multiplier": 5.0 "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", "bucket": "uncommon",
"condition": { "condition": {
@@ -950,6 +998,22 @@
"multiplier": 2.0 "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", "bucket": "uncommon",
"condition": { "condition": {
@@ -1369,6 +1433,22 @@
"multiplier": 1.25 "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", "bucket": "common",
"condition": { "condition": {
@@ -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": { "anticondition": {
"biomes": [ "biomes": [
@@ -923,6 +938,22 @@
"type": "pokemon", "type": "pokemon",
"weight": 16.8 "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", "bucket": "common",
"condition": { "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": { "anticondition": {
"biomes": [ "biomes": [
+4 -2
View File
@@ -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`) | | | 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) | | 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 | | 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` | | | 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 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` | | 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 | | 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 | | 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`) | | 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") | | 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") |
+2
View File
@@ -25,4 +25,6 @@
## Ask Adrian ## 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. - (after the first chapters) Does the layout read well? Move nodes freely in the editor; the next generation keeps your positions.
+21
View File
@@ -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`).
+13
View File
@@ -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. 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) ## Open decisions for Adrian (proceeding with the default, flagged)
| Decision | Default used for now | | Decision | Default used for now |
+3
View File
@@ -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`. - **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. - **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. - **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. - **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. - **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) - [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 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) - [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)
+24 -24
View File
@@ -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 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) ## 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 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) ## The End (Lv 50–70, 7 lines)
@@ -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<VoxelShape> result) {
if (!context.isDescending()) result.setReturnValue(Shapes.empty());
}
}
@@ -7,6 +7,7 @@ import net.minecraft.core.BlockPos
import net.minecraft.core.Direction import net.minecraft.core.Direction
import net.minecraft.gametest.framework.GameTestAssertException import net.minecraft.gametest.framework.GameTestAssertException
import net.minecraft.world.level.ChunkPos 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 * 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) { if (cave) {
s.check(level.getBiome(ground.above()).`is`(node.biome!!)) { "the ${node.vein} at ${ground.toShortString()} isn't in ${node.biome}" } s.check(level.getBiome(ground.above()).`is`(node.biome!!)) { "the ${node.vein} at ${ground.toShortString()} isn't in ${node.biome}" }
} else { } else {
val top = blocks.maxBy { it.y } // Open ground over the node's centre (leaves don't count): a wide node's edge may lie under a tree or a slope.
s.check(level.canSeeSky(top.above())) { "the ${node.vein} at ${ground.toShortString()} is under cover" } 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" } s.check(blocks.all { Zones.at(level, it)?.id == zone }) { "the ${node.vein} at ${ground.toShortString()} reaches out of $zone" }
} }
} }
@@ -7,6 +7,7 @@ import net.minecraft.resources.ResourceLocation
import net.minecraft.server.level.ServerLevel import net.minecraft.server.level.ServerLevel
import net.minecraft.server.level.ServerPlayer import net.minecraft.server.level.ServerPlayer
import net.minecraft.world.level.ChunkPos import net.minecraft.world.level.ChunkPos
import net.minecraft.world.level.ClipContext
import net.minecraft.world.level.GameType import net.minecraft.world.level.GameType
import net.minecraft.world.level.block.Blocks import net.minecraft.world.level.block.Blocks
import net.minecraft.world.phys.Vec3 import net.minecraft.world.phys.Vec3
@@ -26,11 +27,35 @@ object VeinTests {
private val REGENERATOR = ResourceLocation.fromNamespaceAndPath("regenerating_ore_veins", "regenerator_block") private val REGENERATOR = ResourceLocation.fromNamespaceAndPath("regenerating_ore_veins", "regenerator_block")
fun all() = listOf( fun all() = listOf(
SelfTestCase("regenerator_lets_the_aim_through", 20, ::aimThrough),
SelfTestCase("vein_regrows_after_unload", 1200, ::afterUnload), SelfTestCase("vein_regrows_after_unload", 1200, ::afterUnload),
SelfTestCase("vein_mined_before_restart", 400, ::beforeRestart), SelfTestCase("vein_mined_before_restart", 400, ::beforeRestart),
SelfTestCase("vein_regrows_after_restart", 400, ::afterRestart, afterRestart = true), 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) { private fun afterUnload(s: Scenario) {
val level = s.level val level = s.level
val pos = spot(level, UNLOAD_OFFSET) val pos = spot(level, UNLOAD_OFFSET)
@@ -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. Not affiliated with Cobblemon, The Pokémon Company, Nintendo, Game Freak or Creatures Inc.
''' '''
[[mixins]]
config = "cobblesurvival.mixins.json"
[[dependencies.${mod_id}]] [[dependencies.${mod_id}]]
modId = "minecraft" modId = "minecraft"
type = "required" type = "required"
File diff suppressed because it is too large. Load diff
@@ -0,0 +1,8 @@
{
"required": true,
"minVersion": "0.8",
"package": "dev.cobblesurvival.mixin",
"compatibilityLevel": "JAVA_21",
"mixins": ["RegeneratorBlockMixin"],
"injectors": {"defaultRequire": 1}
}
@@ -46,7 +46,7 @@
min_level: 0 min_level: 0
natures: "" natures: ""
poke_ball_used: "" 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: "" pokemon_type: ""
region: "" region: ""
shiny: false shiny: false
@@ -46,7 +46,7 @@
min_level: 0 min_level: 0
natures: "" natures: ""
poke_ball_used: "" 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: "" pokemon_type: ""
region: "" region: ""
shiny: false shiny: false
@@ -46,7 +46,7 @@
min_level: 0 min_level: 0
natures: "" natures: ""
poke_ball_used: "" 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: "" pokemon_type: ""
region: "" region: ""
shiny: false shiny: false
@@ -46,7 +46,7 @@
min_level: 0 min_level: 0
natures: "" natures: ""
poke_ball_used: "" 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: "" pokemon_type: ""
region: "" region: ""
shiny: false shiny: false
@@ -46,7 +46,7 @@
min_level: 0 min_level: 0
natures: "" natures: ""
poke_ball_used: "" 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: "" pokemon_type: ""
region: "" region: ""
shiny: false shiny: false
@@ -46,7 +46,7 @@
min_level: 0 min_level: 0
natures: "" natures: ""
poke_ball_used: "" 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: "" pokemon_type: ""
region: "" region: ""
shiny: false shiny: false
@@ -46,7 +46,7 @@
min_level: 0 min_level: 0
natures: "" natures: ""
poke_ball_used: "" 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: "" pokemon_type: ""
region: "" region: ""
shiny: false shiny: false
@@ -46,7 +46,7 @@
min_level: 0 min_level: 0
natures: "" natures: ""
poke_ball_used: "" 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: "" pokemon_type: ""
region: "" region: ""
shiny: false shiny: false
@@ -46,7 +46,7 @@
min_level: 0 min_level: 0
natures: "" natures: ""
poke_ball_used: "" 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: "" pokemon_type: ""
region: "" region: ""
shiny: false shiny: false
@@ -46,7 +46,7 @@
min_level: 0 min_level: 0
natures: "" natures: ""
poke_ball_used: "" 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: "" pokemon_type: ""
region: "" region: ""
shiny: false shiny: false
@@ -46,7 +46,7 @@
min_level: 0 min_level: 0
natures: "" natures: ""
poke_ball_used: "" 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: "" pokemon_type: ""
region: "" region: ""
shiny: false shiny: false
@@ -46,7 +46,7 @@
min_level: 0 min_level: 0
natures: "" natures: ""
poke_ball_used: "" 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: "" pokemon_type: ""
region: "" region: ""
shiny: false shiny: false
+123 -123
View File
@@ -14,8 +14,8 @@
"selftest_nowhere" "selftest_nowhere"
], ],
"shape": "sphere", "shape": "sphere",
"min_radius": 0, "min_radius": 1,
"max_radius": 1, "max_radius": 2,
"attempts": 1, "attempts": 1,
"min_y": 0, "min_y": 0,
"max_y": 0, "max_y": 0,
@@ -66,12 +66,12 @@
"minecraft:lush_caves" "minecraft:lush_caves"
], ],
"shape": "sphere", "shape": "sphere",
"min_radius": 2, "min_radius": 3,
"max_radius": 4, "max_radius": 5,
"attempts": 2, "attempts": 2,
"min_y": 0, "min_y": 0,
"max_y": 100, "max_y": 100,
"chunk_minimum_generation_separation": 6, "chunk_minimum_generation_separation": 8,
"fill_factor": 0.7, "fill_factor": 0.7,
"regeneration_interval_seconds": 1200, "regeneration_interval_seconds": 1200,
"regeneration_interval_jitter": { "regeneration_interval_jitter": {
@@ -118,12 +118,12 @@
"minecraft:lush_caves" "minecraft:lush_caves"
], ],
"shape": "sphere", "shape": "sphere",
"min_radius": 2, "min_radius": 3,
"max_radius": 4, "max_radius": 5,
"attempts": 2, "attempts": 2,
"min_y": -32, "min_y": -32,
"max_y": -1, "max_y": -1,
"chunk_minimum_generation_separation": 6, "chunk_minimum_generation_separation": 8,
"fill_factor": 0.7, "fill_factor": 0.7,
"regeneration_interval_seconds": 1200, "regeneration_interval_seconds": 1200,
"regeneration_interval_jitter": { "regeneration_interval_jitter": {
@@ -146,8 +146,8 @@
"selftest_nowhere" "selftest_nowhere"
], ],
"shape": "sphere", "shape": "sphere",
"min_radius": 0, "min_radius": 1,
"max_radius": 1, "max_radius": 2,
"attempts": 1, "attempts": 1,
"min_y": 0, "min_y": 0,
"max_y": 0, "max_y": 0,
@@ -292,12 +292,12 @@
"minecraft:lush_caves" "minecraft:lush_caves"
], ],
"shape": "sphere", "shape": "sphere",
"min_radius": 2, "min_radius": 3,
"max_radius": 4, "max_radius": 5,
"attempts": 2, "attempts": 2,
"min_y": 0, "min_y": 0,
"max_y": 100, "max_y": 100,
"chunk_minimum_generation_separation": 8, "chunk_minimum_generation_separation": 10,
"fill_factor": 0.7, "fill_factor": 0.7,
"regeneration_interval_seconds": 1800, "regeneration_interval_seconds": 1800,
"regeneration_interval_jitter": { "regeneration_interval_jitter": {
@@ -438,12 +438,12 @@
"minecraft:lush_caves" "minecraft:lush_caves"
], ],
"shape": "sphere", "shape": "sphere",
"min_radius": 2, "min_radius": 3,
"max_radius": 4, "max_radius": 5,
"attempts": 2, "attempts": 2,
"min_y": -32, "min_y": -32,
"max_y": -1, "max_y": -1,
"chunk_minimum_generation_separation": 8, "chunk_minimum_generation_separation": 10,
"fill_factor": 0.7, "fill_factor": 0.7,
"regeneration_interval_seconds": 1800, "regeneration_interval_seconds": 1800,
"regeneration_interval_jitter": { "regeneration_interval_jitter": {
@@ -466,8 +466,8 @@
"selftest_nowhere" "selftest_nowhere"
], ],
"shape": "sphere", "shape": "sphere",
"min_radius": 0, "min_radius": 1,
"max_radius": 1, "max_radius": 2,
"attempts": 1, "attempts": 1,
"min_y": 0, "min_y": 0,
"max_y": 0, "max_y": 0,
@@ -560,12 +560,12 @@
"minecraft:lush_caves" "minecraft:lush_caves"
], ],
"shape": "sphere", "shape": "sphere",
"min_radius": 2, "min_radius": 3,
"max_radius": 4, "max_radius": 5,
"attempts": 2, "attempts": 2,
"min_y": 0, "min_y": 0,
"max_y": 90, "max_y": 90,
"chunk_minimum_generation_separation": 8, "chunk_minimum_generation_separation": 10,
"fill_factor": 0.7, "fill_factor": 0.7,
"regeneration_interval_seconds": 2400, "regeneration_interval_seconds": 2400,
"regeneration_interval_jitter": { "regeneration_interval_jitter": {
@@ -654,12 +654,12 @@
"minecraft:lush_caves" "minecraft:lush_caves"
], ],
"shape": "sphere", "shape": "sphere",
"min_radius": 2, "min_radius": 3,
"max_radius": 4, "max_radius": 5,
"attempts": 2, "attempts": 2,
"min_y": -48, "min_y": -48,
"max_y": -1, "max_y": -1,
"chunk_minimum_generation_separation": 8, "chunk_minimum_generation_separation": 10,
"fill_factor": 0.7, "fill_factor": 0.7,
"regeneration_interval_seconds": 2400, "regeneration_interval_seconds": 2400,
"regeneration_interval_jitter": { "regeneration_interval_jitter": {
@@ -682,8 +682,8 @@
"selftest_nowhere" "selftest_nowhere"
], ],
"shape": "sphere", "shape": "sphere",
"min_radius": 0, "min_radius": 1,
"max_radius": 1, "max_radius": 2,
"attempts": 1, "attempts": 1,
"min_y": 0, "min_y": 0,
"max_y": 0, "max_y": 0,
@@ -782,12 +782,12 @@
"minecraft:lush_caves" "minecraft:lush_caves"
], ],
"shape": "sphere", "shape": "sphere",
"min_radius": 2, "min_radius": 3,
"max_radius": 3, "max_radius": 4,
"attempts": 1, "attempts": 1,
"min_y": 0, "min_y": 0,
"max_y": 60, "max_y": 60,
"chunk_minimum_generation_separation": 9, "chunk_minimum_generation_separation": 12,
"fill_factor": 0.7, "fill_factor": 0.7,
"regeneration_interval_seconds": 2700, "regeneration_interval_seconds": 2700,
"regeneration_interval_jitter": { "regeneration_interval_jitter": {
@@ -882,12 +882,12 @@
"minecraft:lush_caves" "minecraft:lush_caves"
], ],
"shape": "sphere", "shape": "sphere",
"min_radius": 2, "min_radius": 3,
"max_radius": 3, "max_radius": 4,
"attempts": 1, "attempts": 1,
"min_y": -56, "min_y": -56,
"max_y": -1, "max_y": -1,
"chunk_minimum_generation_separation": 9, "chunk_minimum_generation_separation": 12,
"fill_factor": 0.7, "fill_factor": 0.7,
"regeneration_interval_seconds": 2700, "regeneration_interval_seconds": 2700,
"regeneration_interval_jitter": { "regeneration_interval_jitter": {
@@ -910,8 +910,8 @@
"selftest_nowhere" "selftest_nowhere"
], ],
"shape": "sphere", "shape": "sphere",
"min_radius": 0, "min_radius": 1,
"max_radius": 1, "max_radius": 2,
"attempts": 1, "attempts": 1,
"min_y": 0, "min_y": 0,
"max_y": 0, "max_y": 0,
@@ -1093,12 +1093,12 @@
"minecraft:lush_caves" "minecraft:lush_caves"
], ],
"shape": "sphere", "shape": "sphere",
"min_radius": 2, "min_radius": 3,
"max_radius": 3, "max_radius": 4,
"attempts": 1, "attempts": 1,
"min_y": 0, "min_y": 0,
"max_y": 80, "max_y": 80,
"chunk_minimum_generation_separation": 9, "chunk_minimum_generation_separation": 12,
"fill_factor": 0.7, "fill_factor": 0.7,
"regeneration_interval_seconds": 2700, "regeneration_interval_seconds": 2700,
"regeneration_interval_jitter": { "regeneration_interval_jitter": {
@@ -1276,12 +1276,12 @@
"minecraft:lush_caves" "minecraft:lush_caves"
], ],
"shape": "sphere", "shape": "sphere",
"min_radius": 2, "min_radius": 3,
"max_radius": 3, "max_radius": 4,
"attempts": 1, "attempts": 1,
"min_y": -56, "min_y": -56,
"max_y": -1, "max_y": -1,
"chunk_minimum_generation_separation": 9, "chunk_minimum_generation_separation": 12,
"fill_factor": 0.7, "fill_factor": 0.7,
"regeneration_interval_seconds": 2700, "regeneration_interval_seconds": 2700,
"regeneration_interval_jitter": { "regeneration_interval_jitter": {
@@ -1304,8 +1304,8 @@
"selftest_nowhere" "selftest_nowhere"
], ],
"shape": "sphere", "shape": "sphere",
"min_radius": 0, "min_radius": 1,
"max_radius": 1, "max_radius": 2,
"attempts": 1, "attempts": 1,
"min_y": 0, "min_y": 0,
"max_y": 0, "max_y": 0,
@@ -1390,12 +1390,12 @@
"minecraft:lush_caves" "minecraft:lush_caves"
], ],
"shape": "sphere", "shape": "sphere",
"min_radius": 2, "min_radius": 3,
"max_radius": 3, "max_radius": 4,
"attempts": 2, "attempts": 2,
"min_y": 0, "min_y": 0,
"max_y": 120, "max_y": 120,
"chunk_minimum_generation_separation": 7, "chunk_minimum_generation_separation": 9,
"fill_factor": 0.7, "fill_factor": 0.7,
"regeneration_interval_seconds": 3600, "regeneration_interval_seconds": 3600,
"regeneration_interval_jitter": { "regeneration_interval_jitter": {
@@ -1476,12 +1476,12 @@
"minecraft:lush_caves" "minecraft:lush_caves"
], ],
"shape": "sphere", "shape": "sphere",
"min_radius": 2, "min_radius": 3,
"max_radius": 3, "max_radius": 4,
"attempts": 2, "attempts": 2,
"min_y": -48, "min_y": -48,
"max_y": -1, "max_y": -1,
"chunk_minimum_generation_separation": 7, "chunk_minimum_generation_separation": 9,
"fill_factor": 0.7, "fill_factor": 0.7,
"regeneration_interval_seconds": 3600, "regeneration_interval_seconds": 3600,
"regeneration_interval_jitter": { "regeneration_interval_jitter": {
@@ -1504,8 +1504,8 @@
"selftest_nowhere" "selftest_nowhere"
], ],
"shape": "sphere", "shape": "sphere",
"min_radius": 0, "min_radius": 1,
"max_radius": 1, "max_radius": 2,
"attempts": 1, "attempts": 1,
"min_y": 0, "min_y": 0,
"max_y": 0, "max_y": 0,
@@ -1631,12 +1631,12 @@
"minecraft:lush_caves" "minecraft:lush_caves"
], ],
"shape": "sphere", "shape": "sphere",
"min_radius": 1, "min_radius": 2,
"max_radius": 2, "max_radius": 3,
"attempts": 2, "attempts": 2,
"min_y": 0, "min_y": 0,
"max_y": 320, "max_y": 320,
"chunk_minimum_generation_separation": 8, "chunk_minimum_generation_separation": 10,
"fill_factor": 0.7, "fill_factor": 0.7,
"regeneration_interval_seconds": 4500, "regeneration_interval_seconds": 4500,
"regeneration_interval_jitter": { "regeneration_interval_jitter": {
@@ -1758,12 +1758,12 @@
"minecraft:lush_caves" "minecraft:lush_caves"
], ],
"shape": "sphere", "shape": "sphere",
"min_radius": 1, "min_radius": 2,
"max_radius": 2, "max_radius": 3,
"attempts": 2, "attempts": 2,
"min_y": -16, "min_y": -16,
"max_y": -1, "max_y": -1,
"chunk_minimum_generation_separation": 8, "chunk_minimum_generation_separation": 10,
"fill_factor": 0.7, "fill_factor": 0.7,
"regeneration_interval_seconds": 4500, "regeneration_interval_seconds": 4500,
"regeneration_interval_jitter": { "regeneration_interval_jitter": {
@@ -1789,7 +1789,7 @@
], ],
"shape": "sphere", "shape": "sphere",
"min_radius": 1, "min_radius": 1,
"max_radius": 1, "max_radius": 2,
"attempts": 1, "attempts": 1,
"min_y": 0, "min_y": 0,
"max_y": 0, "max_y": 0,
@@ -1817,7 +1817,7 @@
], ],
"shape": "sphere", "shape": "sphere",
"min_radius": 1, "min_radius": 1,
"max_radius": 1, "max_radius": 2,
"attempts": 1, "attempts": 1,
"min_y": 0, "min_y": 0,
"max_y": 0, "max_y": 0,
@@ -1845,7 +1845,7 @@
], ],
"shape": "sphere", "shape": "sphere",
"min_radius": 1, "min_radius": 1,
"max_radius": 1, "max_radius": 2,
"attempts": 1, "attempts": 1,
"min_y": 0, "min_y": 0,
"max_y": 0, "max_y": 0,
@@ -1873,12 +1873,12 @@
], ],
"shape": "sphere", "shape": "sphere",
"min_radius": 0, "min_radius": 0,
"max_radius": 0, "max_radius": 1,
"attempts": 1, "attempts": 1,
"min_y": 0, "min_y": 0,
"max_y": 0, "max_y": 0,
"chunk_minimum_generation_separation": 64, "chunk_minimum_generation_separation": 64,
"fill_factor": 1.0, "fill_factor": 0.8,
"regeneration_interval_seconds": 10800, "regeneration_interval_seconds": 10800,
"regeneration_interval_jitter": { "regeneration_interval_jitter": {
"range_min": -1080, "range_min": -1080,
@@ -1901,12 +1901,12 @@
], ],
"shape": "sphere", "shape": "sphere",
"min_radius": 0, "min_radius": 0,
"max_radius": 0, "max_radius": 1,
"attempts": 1, "attempts": 1,
"min_y": 0, "min_y": 0,
"max_y": 0, "max_y": 0,
"chunk_minimum_generation_separation": 64, "chunk_minimum_generation_separation": 64,
"fill_factor": 1.0, "fill_factor": 0.8,
"regeneration_interval_seconds": 3600, "regeneration_interval_seconds": 3600,
"regeneration_interval_jitter": { "regeneration_interval_jitter": {
"range_min": -360, "range_min": -360,
@@ -1994,12 +1994,12 @@
"minecraft:lush_caves" "minecraft:lush_caves"
], ],
"shape": "sphere", "shape": "sphere",
"min_radius": 1, "min_radius": 2,
"max_radius": 2, "max_radius": 3,
"attempts": 1, "attempts": 1,
"min_y": 0, "min_y": 0,
"max_y": 100, "max_y": 100,
"chunk_minimum_generation_separation": 11, "chunk_minimum_generation_separation": 14,
"fill_factor": 0.7, "fill_factor": 0.7,
"regeneration_interval_seconds": 3600, "regeneration_interval_seconds": 3600,
"regeneration_interval_jitter": { "regeneration_interval_jitter": {
@@ -2088,12 +2088,12 @@
"minecraft:lush_caves" "minecraft:lush_caves"
], ],
"shape": "sphere", "shape": "sphere",
"min_radius": 1, "min_radius": 2,
"max_radius": 2, "max_radius": 3,
"attempts": 1, "attempts": 1,
"min_y": -48, "min_y": -48,
"max_y": -1, "max_y": -1,
"chunk_minimum_generation_separation": 11, "chunk_minimum_generation_separation": 14,
"fill_factor": 0.7, "fill_factor": 0.7,
"regeneration_interval_seconds": 3600, "regeneration_interval_seconds": 3600,
"regeneration_interval_jitter": { "regeneration_interval_jitter": {
@@ -2116,8 +2116,8 @@
"selftest_nowhere" "selftest_nowhere"
], ],
"shape": "sphere", "shape": "sphere",
"min_radius": 0, "min_radius": 1,
"max_radius": 1, "max_radius": 2,
"attempts": 1, "attempts": 1,
"min_y": 0, "min_y": 0,
"max_y": 0, "max_y": 0,
@@ -2145,12 +2145,12 @@
], ],
"shape": "sphere", "shape": "sphere",
"min_radius": 0, "min_radius": 0,
"max_radius": 0, "max_radius": 1,
"attempts": 1, "attempts": 1,
"min_y": 0, "min_y": 0,
"max_y": 0, "max_y": 0,
"chunk_minimum_generation_separation": 64, "chunk_minimum_generation_separation": 64,
"fill_factor": 1.0, "fill_factor": 0.8,
"regeneration_interval_seconds": 3600, "regeneration_interval_seconds": 3600,
"regeneration_interval_jitter": { "regeneration_interval_jitter": {
"range_min": -360, "range_min": -360,
@@ -2244,12 +2244,12 @@
"minecraft:lush_caves" "minecraft:lush_caves"
], ],
"shape": "sphere", "shape": "sphere",
"min_radius": 1, "min_radius": 2,
"max_radius": 2, "max_radius": 3,
"attempts": 1, "attempts": 1,
"min_y": 0, "min_y": 0,
"max_y": 100, "max_y": 100,
"chunk_minimum_generation_separation": 11, "chunk_minimum_generation_separation": 14,
"fill_factor": 0.7, "fill_factor": 0.7,
"regeneration_interval_seconds": 3600, "regeneration_interval_seconds": 3600,
"regeneration_interval_jitter": { "regeneration_interval_jitter": {
@@ -2344,12 +2344,12 @@
"minecraft:lush_caves" "minecraft:lush_caves"
], ],
"shape": "sphere", "shape": "sphere",
"min_radius": 1, "min_radius": 2,
"max_radius": 2, "max_radius": 3,
"attempts": 1, "attempts": 1,
"min_y": -48, "min_y": -48,
"max_y": -1, "max_y": -1,
"chunk_minimum_generation_separation": 11, "chunk_minimum_generation_separation": 14,
"fill_factor": 0.7, "fill_factor": 0.7,
"regeneration_interval_seconds": 3600, "regeneration_interval_seconds": 3600,
"regeneration_interval_jitter": { "regeneration_interval_jitter": {
@@ -2373,12 +2373,12 @@
], ],
"shape": "sphere", "shape": "sphere",
"min_radius": 0, "min_radius": 0,
"max_radius": 0, "max_radius": 1,
"attempts": 1, "attempts": 1,
"min_y": 0, "min_y": 0,
"max_y": 0, "max_y": 0,
"chunk_minimum_generation_separation": 64, "chunk_minimum_generation_separation": 64,
"fill_factor": 1.0, "fill_factor": 0.8,
"regeneration_interval_seconds": 3600, "regeneration_interval_seconds": 3600,
"regeneration_interval_jitter": { "regeneration_interval_jitter": {
"range_min": -360, "range_min": -360,
@@ -2460,12 +2460,12 @@
"minecraft:lush_caves" "minecraft:lush_caves"
], ],
"shape": "sphere", "shape": "sphere",
"min_radius": 1, "min_radius": 2,
"max_radius": 2, "max_radius": 3,
"attempts": 1, "attempts": 1,
"min_y": 0, "min_y": 0,
"max_y": 100, "max_y": 100,
"chunk_minimum_generation_separation": 11, "chunk_minimum_generation_separation": 14,
"fill_factor": 0.7, "fill_factor": 0.7,
"regeneration_interval_seconds": 3600, "regeneration_interval_seconds": 3600,
"regeneration_interval_jitter": { "regeneration_interval_jitter": {
@@ -2548,12 +2548,12 @@
"minecraft:lush_caves" "minecraft:lush_caves"
], ],
"shape": "sphere", "shape": "sphere",
"min_radius": 1, "min_radius": 2,
"max_radius": 2, "max_radius": 3,
"attempts": 1, "attempts": 1,
"min_y": -48, "min_y": -48,
"max_y": -1, "max_y": -1,
"chunk_minimum_generation_separation": 11, "chunk_minimum_generation_separation": 14,
"fill_factor": 0.7, "fill_factor": 0.7,
"regeneration_interval_seconds": 3600, "regeneration_interval_seconds": 3600,
"regeneration_interval_jitter": { "regeneration_interval_jitter": {
@@ -2580,8 +2580,8 @@
"selftest_nowhere" "selftest_nowhere"
], ],
"shape": "sphere", "shape": "sphere",
"min_radius": 0, "min_radius": 1,
"max_radius": 1, "max_radius": 2,
"attempts": 1, "attempts": 1,
"min_y": 0, "min_y": 0,
"max_y": 0, "max_y": 0,
@@ -2609,12 +2609,12 @@
], ],
"shape": "sphere", "shape": "sphere",
"min_radius": 0, "min_radius": 0,
"max_radius": 0, "max_radius": 1,
"attempts": 1, "attempts": 1,
"min_y": 0, "min_y": 0,
"max_y": 0, "max_y": 0,
"chunk_minimum_generation_separation": 64, "chunk_minimum_generation_separation": 64,
"fill_factor": 1.0, "fill_factor": 0.8,
"regeneration_interval_seconds": 3600, "regeneration_interval_seconds": 3600,
"regeneration_interval_jitter": { "regeneration_interval_jitter": {
"range_min": -360, "range_min": -360,
@@ -2791,12 +2791,12 @@
"minecraft:lush_caves" "minecraft:lush_caves"
], ],
"shape": "sphere", "shape": "sphere",
"min_radius": 1, "min_radius": 2,
"max_radius": 2, "max_radius": 3,
"attempts": 1, "attempts": 1,
"min_y": 0, "min_y": 0,
"max_y": 100, "max_y": 100,
"chunk_minimum_generation_separation": 11, "chunk_minimum_generation_separation": 14,
"fill_factor": 0.7, "fill_factor": 0.7,
"regeneration_interval_seconds": 3600, "regeneration_interval_seconds": 3600,
"regeneration_interval_jitter": { "regeneration_interval_jitter": {
@@ -2974,12 +2974,12 @@
"minecraft:lush_caves" "minecraft:lush_caves"
], ],
"shape": "sphere", "shape": "sphere",
"min_radius": 1, "min_radius": 2,
"max_radius": 2, "max_radius": 3,
"attempts": 1, "attempts": 1,
"min_y": -48, "min_y": -48,
"max_y": -1, "max_y": -1,
"chunk_minimum_generation_separation": 11, "chunk_minimum_generation_separation": 14,
"fill_factor": 0.7, "fill_factor": 0.7,
"regeneration_interval_seconds": 3600, "regeneration_interval_seconds": 3600,
"regeneration_interval_jitter": { "regeneration_interval_jitter": {
@@ -3003,12 +3003,12 @@
], ],
"shape": "sphere", "shape": "sphere",
"min_radius": 0, "min_radius": 0,
"max_radius": 0, "max_radius": 1,
"attempts": 1, "attempts": 1,
"min_y": 0, "min_y": 0,
"max_y": 0, "max_y": 0,
"chunk_minimum_generation_separation": 64, "chunk_minimum_generation_separation": 64,
"fill_factor": 1.0, "fill_factor": 0.8,
"regeneration_interval_seconds": 3600, "regeneration_interval_seconds": 3600,
"regeneration_interval_jitter": { "regeneration_interval_jitter": {
"range_min": -360, "range_min": -360,
@@ -3088,12 +3088,12 @@
"minecraft:lush_caves" "minecraft:lush_caves"
], ],
"shape": "sphere", "shape": "sphere",
"min_radius": 1, "min_radius": 2,
"max_radius": 2, "max_radius": 3,
"attempts": 2, "attempts": 2,
"min_y": 0, "min_y": 0,
"max_y": 120, "max_y": 120,
"chunk_minimum_generation_separation": 9, "chunk_minimum_generation_separation": 12,
"fill_factor": 0.7, "fill_factor": 0.7,
"regeneration_interval_seconds": 3600, "regeneration_interval_seconds": 3600,
"regeneration_interval_jitter": { "regeneration_interval_jitter": {
@@ -3174,12 +3174,12 @@
"minecraft:lush_caves" "minecraft:lush_caves"
], ],
"shape": "sphere", "shape": "sphere",
"min_radius": 1, "min_radius": 2,
"max_radius": 2, "max_radius": 3,
"attempts": 2, "attempts": 2,
"min_y": -48, "min_y": -48,
"max_y": -1, "max_y": -1,
"chunk_minimum_generation_separation": 9, "chunk_minimum_generation_separation": 12,
"fill_factor": 0.7, "fill_factor": 0.7,
"regeneration_interval_seconds": 3600, "regeneration_interval_seconds": 3600,
"regeneration_interval_jitter": { "regeneration_interval_jitter": {
@@ -3203,12 +3203,12 @@
], ],
"shape": "sphere", "shape": "sphere",
"min_radius": 0, "min_radius": 0,
"max_radius": 0, "max_radius": 1,
"attempts": 1, "attempts": 1,
"min_y": 0, "min_y": 0,
"max_y": 0, "max_y": 0,
"chunk_minimum_generation_separation": 64, "chunk_minimum_generation_separation": 64,
"fill_factor": 1.0, "fill_factor": 0.8,
"regeneration_interval_seconds": 3600, "regeneration_interval_seconds": 3600,
"regeneration_interval_jitter": { "regeneration_interval_jitter": {
"range_min": -360, "range_min": -360,
@@ -3329,12 +3329,12 @@
"minecraft:lush_caves" "minecraft:lush_caves"
], ],
"shape": "sphere", "shape": "sphere",
"min_radius": 1, "min_radius": 2,
"max_radius": 2, "max_radius": 3,
"attempts": 2, "attempts": 2,
"min_y": 0, "min_y": 0,
"max_y": 320, "max_y": 320,
"chunk_minimum_generation_separation": 9, "chunk_minimum_generation_separation": 12,
"fill_factor": 0.7, "fill_factor": 0.7,
"regeneration_interval_seconds": 3600, "regeneration_interval_seconds": 3600,
"regeneration_interval_jitter": { "regeneration_interval_jitter": {
@@ -3456,12 +3456,12 @@
"minecraft:lush_caves" "minecraft:lush_caves"
], ],
"shape": "sphere", "shape": "sphere",
"min_radius": 1, "min_radius": 2,
"max_radius": 2, "max_radius": 3,
"attempts": 2, "attempts": 2,
"min_y": -16, "min_y": -16,
"max_y": -1, "max_y": -1,
"chunk_minimum_generation_separation": 9, "chunk_minimum_generation_separation": 12,
"fill_factor": 0.7, "fill_factor": 0.7,
"regeneration_interval_seconds": 3600, "regeneration_interval_seconds": 3600,
"regeneration_interval_jitter": { "regeneration_interval_jitter": {
@@ -3485,12 +3485,12 @@
], ],
"shape": "sphere", "shape": "sphere",
"min_radius": 0, "min_radius": 0,
"max_radius": 0, "max_radius": 1,
"attempts": 1, "attempts": 1,
"min_y": 0, "min_y": 0,
"max_y": 0, "max_y": 0,
"chunk_minimum_generation_separation": 64, "chunk_minimum_generation_separation": 64,
"fill_factor": 1.0, "fill_factor": 0.8,
"regeneration_interval_seconds": 4500, "regeneration_interval_seconds": 4500,
"regeneration_interval_jitter": { "regeneration_interval_jitter": {
"range_min": -450, "range_min": -450,
@@ -3611,12 +3611,12 @@
"minecraft:lush_caves" "minecraft:lush_caves"
], ],
"shape": "sphere", "shape": "sphere",
"min_radius": 1, "min_radius": 2,
"max_radius": 2, "max_radius": 3,
"attempts": 2, "attempts": 2,
"min_y": 0, "min_y": 0,
"max_y": 320, "max_y": 320,
"chunk_minimum_generation_separation": 10, "chunk_minimum_generation_separation": 13,
"fill_factor": 0.7, "fill_factor": 0.7,
"regeneration_interval_seconds": 4500, "regeneration_interval_seconds": 4500,
"regeneration_interval_jitter": { "regeneration_interval_jitter": {
@@ -3738,12 +3738,12 @@
"minecraft:lush_caves" "minecraft:lush_caves"
], ],
"shape": "sphere", "shape": "sphere",
"min_radius": 1, "min_radius": 2,
"max_radius": 2, "max_radius": 3,
"attempts": 2, "attempts": 2,
"min_y": -16, "min_y": -16,
"max_y": -1, "max_y": -1,
"chunk_minimum_generation_separation": 10, "chunk_minimum_generation_separation": 13,
"fill_factor": 0.7, "fill_factor": 0.7,
"regeneration_interval_seconds": 4500, "regeneration_interval_seconds": 4500,
"regeneration_interval_jitter": { "regeneration_interval_jitter": {
@@ -3766,8 +3766,8 @@
"selftest_nowhere" "selftest_nowhere"
], ],
"shape": "sphere", "shape": "sphere",
"min_radius": 0, "min_radius": 1,
"max_radius": 1, "max_radius": 2,
"attempts": 1, "attempts": 1,
"min_y": 0, "min_y": 0,
"max_y": 0, "max_y": 0,
+21 -13
View File
@@ -34,7 +34,7 @@ hash = "e57d8311aec9f524911ed1313cabf138bb7fa5a2d3ba985a00a2a267ff35ef78"
[[files]] [[files]]
file = "config/ftbquests/quests/chapters/basalt.snbt" file = "config/ftbquests/quests/chapters/basalt.snbt"
hash = "7e1b74aebae51bf0433bdd422b3ad9097e58abaf25cabaa5fcf03ca78d417bfd" hash = "8a7eab2ca30f47109add6cfbf4eeb4717e3704bc85902ee8f4c5307b2b2eeb3c"
[[files]] [[files]]
file = "config/ftbquests/quests/chapters/base.snbt" file = "config/ftbquests/quests/chapters/base.snbt"
@@ -46,19 +46,19 @@ hash = "ce24fccd748e805ec617f7b571263c1af91377644a3fc17146bf38963e8b54ab"
[[files]] [[files]]
file = "config/ftbquests/quests/chapters/deep_dark.snbt" file = "config/ftbquests/quests/chapters/deep_dark.snbt"
hash = "45a3992afb773ea5442dc536d18a6c7b2ed20befe1daf31f170e27d2b1c67324" hash = "7208cd9166e11beed91086cd0a897f49cf31ecadd65acaa3b798169c86b0ae34"
[[files]] [[files]]
file = "config/ftbquests/quests/chapters/deep_sea.snbt" file = "config/ftbquests/quests/chapters/deep_sea.snbt"
hash = "6c01131b458060cf69e11dae1f08ac9944ac77e2d6abcfb58a630137579cf9c3" hash = "bd87d38b3ec40b408e1710d641ac9ce57824e2ebfd7cf3674a166521482acb76"
[[files]] [[files]]
file = "config/ftbquests/quests/chapters/dripstone.snbt" file = "config/ftbquests/quests/chapters/dripstone.snbt"
hash = "6de9aff416df5c916f00065c90ce64c57422ae4de4c415522178e090e5a5f830" hash = "56886a1f390e9379672bde9190a0823cffdb3bb42cde043b4c772a1d0fa54e47"
[[files]] [[files]]
file = "config/ftbquests/quests/chapters/frostpeak.snbt" file = "config/ftbquests/quests/chapters/frostpeak.snbt"
hash = "e0f380185bc9cb53c993e86d6fcb9a82ea14723bf211c5ad7d046aaeadd7c468" hash = "150e60db7c18fbdb3c882cadc894813e3bc951c8adbfe42a30c38fc657c79a70"
[[files]] [[files]]
file = "config/ftbquests/quests/chapters/getting_started.snbt" file = "config/ftbquests/quests/chapters/getting_started.snbt"
@@ -66,15 +66,15 @@ hash = "829aa67db8a39f6f43aa6076090c0040e4324be70abe0b30e0edcce48d924ab9"
[[files]] [[files]]
file = "config/ftbquests/quests/chapters/highlands.snbt" file = "config/ftbquests/quests/chapters/highlands.snbt"
hash = "ed7e66df09969ac69acc0f12648c7fb71589c37a14f4530714c1a97ffb5dab17" hash = "3724fa8a038561cc8965e6dfe5bc62718872d04f385bb636e984988762046670"
[[files]] [[files]]
file = "config/ftbquests/quests/chapters/jungle.snbt" file = "config/ftbquests/quests/chapters/jungle.snbt"
hash = "bdfd541303d72bcfa0b8a28cf1a9277701be2f7d75edd5a95175e6cf3915fc39" hash = "5afa0885dbd853ea973fb61881a14b97a98af4d0dd26b66d837541ba1b09c8c8"
[[files]] [[files]]
file = "config/ftbquests/quests/chapters/lush_caves.snbt" file = "config/ftbquests/quests/chapters/lush_caves.snbt"
hash = "cd7dd0f47b33063d867f9f55c8b4307935ceda64509701886da75dbfb2ab92be" hash = "bd5734f9df4e1dc1caa989c32b5dac797f5104a4c6c0987801d3650e12d1e491"
[[files]] [[files]]
file = "config/ftbquests/quests/chapters/machines.snbt" file = "config/ftbquests/quests/chapters/machines.snbt"
@@ -82,7 +82,7 @@ hash = "dbeb43e993d27656f75e7a64a118e3592c40b5cbfc089bdf6a02069edae57011"
[[files]] [[files]]
file = "config/ftbquests/quests/chapters/mire.snbt" file = "config/ftbquests/quests/chapters/mire.snbt"
hash = "95bc5a97874794dff8d19cff04bfebe984c1d2fcefabcba15fc3b36a14e0880a" hash = "c540889e8fe5432723f16c8cd8dbe63117e2b3b5523793b9872902d1837b4459"
[[files]] [[files]]
file = "config/ftbquests/quests/chapters/shallows.snbt" file = "config/ftbquests/quests/chapters/shallows.snbt"
@@ -90,11 +90,11 @@ hash = "1f3829f5f40e853673645d7ea250e646f97bbd79b3235bc6f2b119defb573423"
[[files]] [[files]]
file = "config/ftbquests/quests/chapters/southwold.snbt" file = "config/ftbquests/quests/chapters/southwold.snbt"
hash = "7bec07cf30f2b218e7d89b617fb61f7077f692fe570694bb70aef8067052511a" hash = "b3efaa514904c55f711c6c2565825bdd4866ce291e4810d975d1afc31d167f97"
[[files]] [[files]]
file = "config/ftbquests/quests/chapters/sunscorch.snbt" file = "config/ftbquests/quests/chapters/sunscorch.snbt"
hash = "a975e58e4576456b574da8b51e76dc9f7f2e2c148c2c98a1af35469c522528b2" hash = "f936a44de913816a869f29797f82f43c65f57e3f8b78cbe1d69aa1e98b76d136"
[[files]] [[files]]
file = "config/ftbquests/quests/chapters/the_end.snbt" file = "config/ftbquests/quests/chapters/the_end.snbt"
@@ -102,7 +102,7 @@ hash = "4a3aa5f1e3bed52e6c844284dec549367af01d4341aeefa460cdc135e2fba660"
[[files]] [[files]]
file = "config/ftbquests/quests/chapters/westmarch.snbt" file = "config/ftbquests/quests/chapters/westmarch.snbt"
hash = "d37a2c7743a9f38993c8d0d38f2f9c056bc760b68d04ea8bd91cc122e52e5d99" hash = "8d9922fce0f84d0a3192eefb6924a17849c875a52144f6f032951e2d1137b4b5"
[[files]] [[files]]
file = "config/ftbquests/quests/data.snbt" file = "config/ftbquests/quests/data.snbt"
@@ -138,7 +138,7 @@ hash = "a6e9d717e2f73e463b25b1eacfbff43304fd8993937d8c002f9629f24ebcc221"
[[files]] [[files]]
file = "config/regenerating_ore_veins/veins.json" file = "config/regenerating_ore_veins/veins.json"
hash = "64053793b807d0376d14d418c35aadad712fa19c0c7e626620006047149106dc" hash = "0b8bbd74b43ecd85183481405cfa80ec20c421ae41166b237463149b1c77d94e"
[[files]] [[files]]
file = "config/worldgen_editor/presets/cobblesurvival_island.json" file = "config/worldgen_editor/presets/cobblesurvival_island.json"
@@ -160,6 +160,14 @@ hash = "37f7469789d281cbd2ab40f483914eec29f5c82e2c3575854cd276f3296ebb24"
file = "kubejs/assets/cobblesurvival/textures/item/revival_charm.png" file = "kubejs/assets/cobblesurvival/textures/item/revival_charm.png"
hash = "084c0a7b17bb429c317843a7c45096dc8cb1ab61c748293475c1f3d6a5984086" 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]] [[files]]
file = "kubejs/server_scripts/healing_machine.js" file = "kubejs/server_scripts/healing_machine.js"
hash = "6b1b127b16a87b846a5abdbdb442edb8cbd9386562081309a3808eed1325ed1e" hash = "6b1b127b16a87b846a5abdbdb442edb8cbd9386562081309a3808eed1325ed1e"
@@ -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
}
}
}
]
}
Binary file not shown.

After

Width:  |  Height:  |  Size: 112 B

+1 -1
View File
@@ -6,7 +6,7 @@ pack-format = "packwiz:1.1.0"
[index] [index]
file = "index.toml" file = "index.toml"
hash-format = "sha256" hash-format = "sha256"
hash = "8016bb0599908a11ee19680f1dccf1a7c13aa36d7012a0f1eb4cbad37e0756f8" hash = "b5cad59e6cdca6b6c84dcdad5237f284d5a4626f63ffe20f64b814ac462f7ef5"
[versions] [versions]
minecraft = "1.21.1" minecraft = "1.21.1"
+50 -1
View File
@@ -37,6 +37,8 @@ datapacks/core/data/cobblesurvival/spawn_pool_world/<zone>.json:
its stages fitted to the band as in 2. The entries go into "bucket" (Cobblemon rolls the bucket first, and its 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 End entries are all uncommon or rare), the heaviest of each line weighing "line_weight", Cobblemon's rare ones
"rare_factor" of that. "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. 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)) report[did].append((species.get(root, {}).get("name", root), names))
dimension_roots.add(root) 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 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 zones[zid]["levels"][0] < HIGH_ZONE_LEVEL and f"cobblemon:{s['pokemon'].split()[0].lower()}" in strong_flyers]
if low_flyers: if low_flyers:
@@ -430,7 +479,7 @@ def main():
f"| {zone['levels'][1] + GUARDIAN_LEVELS_ABOVE_BAND} | {drop_text} |") f"| {zone['levels'][1] + GUARDIAN_LEVELS_ABOVE_BAND} | {drop_text} |")
REPORT.write_text("\n".join(lines_out) + "\n") 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) grounded = sorted(species.get(r, {}).get("name", r) for r in unplaced if r in flying_lines)
if grounded: if grounded:
print(f"strong flyers kept out of the wild (no high zone fits their habitat): {', '.join(grounded)}") print(f"strong flyers kept out of the wild (no high zone fits their habitat): {', '.join(grounded)}")
+39 -21
View File
@@ -7,27 +7,27 @@
"wanderers": {"grace_levels": 10}, "wanderers": {"grace_levels": 10},
"ore_defaults": {"fill": 0.7, "node_fill": 0.8, "attempts": 1, "jitter": 0.1}, "ore_defaults": {"fill": 0.7, "node_fill": 0.8, "attempts": 1, "jitter": 0.1},
"ores": { "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}}, "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.2, "radius": [0, 1]}, "veins": {"radius": [2, 4], "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.2, "radius": [0, 1]}, "veins": {"radius": [2, 4], "y": [-48, 90], "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.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.2, "radius": [0, 1]}, "veins": {"radius": [2, 3], "y": [-56, 60], "spacing": 9, "attempts": 1}}, "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.15, "radius": [0, 1]}, "veins": {"radius": [2, 3], "y": [-56, 80], "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.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.3, "radius": [0, 1]}, "veins": {"radius": [2, 3], "y": [-48, 120], "spacing": 7, "attempts": 2}}, "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.15, "radius": [0, 1]}, "veins": {"radius": [1, 2], "y": [-16, 320], "spacing": 8, "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.5, "tries": 8, "radius": [1, 1], "y": [0, 40]}}, "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.15, "tries": 8, "radius": [1, 1], "y": [-64, -24]}}, "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.5, "tries": 8, "radius": [1, 1], "y": [-64, 40]}}, "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.06, "tries": 8, "radius": [0, 0], "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.03, "radius": [0, 0]}, "veins": {"radius": [1, 2], "y": [-48, 100], "spacing": 11, "attempts": 1}}, "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.15, "tries": 8, "radius": [0, 1], "y": [-16, 40]}}, "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.04, "radius": [0, 0]}, "veins": {"radius": [1, 2], "y": [-48, 100], "spacing": 11, "attempts": 1}}, "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.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.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.25, "tries": 8, "radius": [0, 1], "y": [0, 40]}}, "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.02, "radius": [0, 0]}, "veins": {"radius": [1, 2], "y": [-48, 100], "spacing": 11, "attempts": 1}}, "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.08, "radius": [0, 0]}, "veins": {"radius": [1, 2], "y": [-48, 120], "spacing": 9, "attempts": 2}}, "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.06, "radius": [0, 0]}, "veins": {"radius": [1, 2], "y": [-16, 320], "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.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.04, "radius": [0, 0]}, "veins": {"radius": [1, 2], "y": [-16, 320], "spacing": 10, "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.1, "tries": 8, "radius": [0, 1], "y": [-64, -24]}} "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", "species": {"durant": "basalt", "torkoal": "basalt", "heatmor": "basalt",
"ditto": {"zone": "deep_dark", "all_entries": true}}, "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": "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)"} {"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": [ "dimensions": [
{"id": "the_end", "name": "The End", "dimension": "minecraft:the_end", "levels": [50, 70], "hazard": "none", {"id": "the_end", "name": "The End", "dimension": "minecraft:the_end", "levels": [50, 70], "hazard": "none",
"biome_tags": ["#cobblemon:is_end", "#minecraft:is_end"], "biome_tags": ["#cobblemon:is_end", "#minecraft:is_end"],