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>
Bosses (Adrian, 2026-11-02: Eternatus too small and too easy; guardians way
bigger and tougher; only defensive stats up; no attack takes more than 25 %):
- Guardians scale to about 8 blocks tall (1.5x-12x), Eternatus to 15 blocks
(2.5x, was 0.2x). Cave guardians look for a spot with room above them.
Bosses already in a world grow on the next check outside battle.
- Perfect IVs and 170 EVs each in HP, Defense and Sp. Def, nothing offensive.
- The Guardian's Ward, a Showdown-only held item (held_items/guardiansward.js)
handed to every boss by a HeldItemProvider: Defense and Sp. Def x2 while
defending, and one attack (all hits together) takes at most 25 % of max HP.
- Area attacks that start at the boss reach half its width further.
Machines (Adrian, 2026-11-02): a working core is active: it glows, its front
animates (flickering fire on the furnace core, pulsing emblems elsewhere), and
particles show in the chamber and at the core (client side). The Pokemon
inside flinches about every 15 s (red flash, Cobblemon's hit sound, no damage).
Roadmap Phase 8: every item that can drop gets a JEI page naming its sources.
Self-tests: practice_bosses_spawn checks size and training,
boss_takes_a_quarter_per_attack runs a real battle (each Lv 100 Bullet Seed
takes exactly a quarter), heat_core_cooks_with_hoppers checks the active state
and the flinch. Self-tests and the island check pass.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Adrian, 2026-11-02: the End looked barren. The End is now a zone of its own
(Lv 50-70, world/zones.json -> dimensions; Zones.at returns it anywhere in the
End). tools/zone_spawns.py copies every line Cobblemon spawns in End biomes
into spawn_pool_world/the_end.json, on top of its island home: Beheeyem,
Reuniclus, Metagross; Gothitelle and Sigilyph in End cities; Malamar and
Unown with a Poke Snack. Cobblemon rolls the bucket before the Pokemon and
has these all uncommon or rare, so they move to the common bucket with even
line weights (Metagross a fifth).
Self-test end_has_spawns: the main island is in the_end and offers only End
spawns, some in the common bucket. Self-tests and the island check pass.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Adrian (2026-11-02): every zone guardian gets area attacks (harder in
harder zones); a boss for the Basalt Furnace; a Pokémon replaces the
Ender Dragon; dying or leaving the arena loses; the Deep Dark gets a
legendary and every guardian should fit its zone. Groudon, Giratina and
Meloetta have no model in Cobblemon 1.8.4: Moltres, Eternatus and
Regigigas stand in.
- Guardians: Mudsdale, Flygon, Abomasnow, Regigigas (normal size), new
Moltres for the Basalt Furnace; zone_spawns.py takes a guardian
"scale".
- tools/zone_bosses.py writes bosses/<zone>.json and end.json from a
tier table (circle, line, cone, rings; telegraph, damage, triggers,
fire/ice/poison effects, arena).
- boss/: BossFights runs patterns during a guardian or End boss battle
(particle telegraphs, hits players inside, stops on battle end),
enforces the arena and death as a loss (battle ends, boss heals);
EndBoss keeps the dragon out (allowlist emptied), spawns Eternatus on
the main island with the dragon's boss bar, and on defeat opens the
exit portal, gateway and egg via the vanilla dragon fight, plus XP.
- Self-tests: coverage (incl. Cobblemon models), shapes, landing and
stopping, arena loss, End boss. Docs, balance, Phase 7 checklist.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Adrian (2026-10-31): add Cobbreeding without a gate; only Ditto should
be rare, in an endgame area or gated behind something else.
- Cobbreeding 2.4.1 (Modrinth only) and Cloth Config (client) in the
pack; Cobblebase's hatchery takes Cobbreeding's eggs.
- Ditto moved from Button Isle to the Deep Dark with both of Cobblemon's
entries (rare in slime chunks, ultra-rare elsewhere): zone_spawns.py
pins take {"zone", "all_entries"}; Deep Dark target +1, Button Isle -1
so no other line moved; Southwold and Frostpeak guardians pinned (they
tie on base stats and flipped between runs).
- HMs' Trainer Ditto is made uncatchable; it still trades.
- check_deps.py skips other-side dependencies; Cobbreeding's harmless
client-mixin log line allowlisted.
- Self-tests cobbreeding_eggs_fit_the_hatchery, trainer_ditto_cant_be_caught;
docs, balance table, Phase 5 checklist.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
From Adrian's play-test (2026-10-30):
- The Deep Dark no longer fills the deepslate layer: world/biomes.json
splits it by temperature (Deep Dark under cold and temperate land,
basalt deltas under the hottest, ordinary caves between); at y -52 it
drops from 30 % to 14 % of the land, basalt 7 %.
- Cave zones fill up to their targets with lines whose primary type fits
the cave; top stages spawn up to the band's top (Deep Dark Lv 60, Basalt
70); no time-of-day conditions underground.
- Wild Pokemon more than 10 levels above the band of the zone they
wander into despawn (zone/Wanderers.kt).
- Loot is shared: all players in one scoreboard team, Lootr team_loot.
- Basalt ore nodes reach the deep basalt.
Self-tests strays_despawn and loot_is_shared; the catching rules from the
previous commit are now tested too. Template rebuilt (world check passed),
island quick check passed (36 self-tests and the restart test).
Shoulder Pokemon noted for Phase 5.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- tools/zone_spawns.py: a species ridable through the air with top
speed >= 60 or top stamina >= 85 never spawns in a zone whose band
starts below Lv 30; lines that start as one are only placed in such
zones, and the tool refuses to write pools that break the rule.
Drampa moves to Sunscorch; Aerodactyl is fossil-only; Salamence never
spawns wild (Bagon and Shelgon stay in the Dripstone caves).
- Ride stats stay Cobblemon's until play-tested (species_additions can
override riding later).
- Phase 3 checklist: all steps in, approval checkpoint for Adrian.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- Companion mod zone hazards (zone/ZoneHazards.kt, data in
data/cobblesurvival/zone_hazards/): in the Mire a player without an
item from #cobblesurvival:mire_protection gets Poison every 5 seconds,
with a one-time warning. Potions, milk and golden apples still help.
- Mire Waders: KubeJS leather boots, dropped by the Westmarch and Verdant
Jungle guardians (the zones before the Mire), per Adrian's boss rule.
- Self-test mire_poisons_without_waders.
- Allow-list Cobblemon's misspelt jigsaw state in
habitats/parched_peat_bog7.nbt, which test players now reach.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- Companion mod (zone/Guardians.kt): each zone's guardian stands at the
zone's sample point, appears when a player is within 96 blocks, stays
within 24 blocks, is uncatchable and half again as big. Beating it in a
battle gives every player in the battle its drops; it returns after 5
hours of game time (Adrian: fixed spots, 5 hours). State lives in the
world save; /cobblesurvival guardians lists it.
- tools/zone_spawns.py writes data/cobblesurvival/guardians/<zone>.json:
the strongest walking (or swimming) Pokemon of the zone at band top + 5,
with the drops from world/zones.json. Boss drops follow Adrian's rule:
Icy Rocks before Sunscorch, Heat Rocks before Frostpeak.
- Goat Fur and Hoglin Hide recipes make 8 per rock, so one guardian's 3
rocks pay for one full insulating set.
- Self-test guardian_appears_and_returns; hazard tests cleaned up; the
zone generator reads Cobblemon's own entries from the field guide's
hidden_spawns.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Free NeoForge 1.21.1 modpack on Cobblemon 1.8.4 built with packwiz, plus
the Kotlin companion mod (cobblesurvival) and its built-in data pack.
- Phase 0: packwiz pack with Modrinth/CurseForge cross-links, build and
export tooling, Prism instance sync, test server with smoke checks.
- Phase 1: Poke Ball shaped island (WorldGen Editor preset, seed isle-26),
Adrian's biome list, no natural ore, structures without ore or vanilla
mobs, no Nether portals, world template builder and world report.
- Phase 2: permadeath (CobbleHardcoreMon plus the companion mod's gap
fixes), Revival Charm, expensive Healing Machine, Lootr refreshing
loot, in-game self-tests on Minecraft's GameTest framework.
- Phase 3 so far: 14 zones with their own spawn pools and level bands
(tools/zone_layout.py, tools/zone_spawns.py, "zone" spawn condition),
Cold Sweat heat and cold as gates with boss-drop insulation recipes,
spawn survey and hazard self-tests in tools/quick_check.py.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>