Cobblemon Survival Pack: phases 0-2 and Phase 3 zones and hazards
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>
This commit is contained in:
commit
398301f0be
232 files changed
+72665
No files matched your search
@@ -0,0 +1,29 @@
|
||||
# Phase 0 – checks for Adrian
|
||||
|
||||
The agent could not run these: they need the game client, or accepting the Minecraft EULA.
|
||||
|
||||
## Server (closes the "CI boots the server cleanly" check)
|
||||
|
||||
- [x] `python3 tools/smoke_test.py --accept-eula` passed on 2026-10-28 (EULA accepted by Adrian). Server started in 20 s, all 6 RCON checks passed (companion live, 1,025 species, core data pack enabled), no ERROR lines in the log. The 9 WARN lines are expected: offline mode set by the test, Cobblemon's optional Adorn mixin, and a KubeJS client-only plugin.
|
||||
- [ ] If the repo goes to GitHub and you accept the EULA for CI too, set the repository variable `MINECRAFT_EULA_ACCEPTED=true`.
|
||||
|
||||
## Prism instance "Cobblemon Survival Pack (dev)"
|
||||
|
||||
- [ ] The instance shows up in Prism (restart Prism if it was open while the instance was created).
|
||||
- [ ] It launches to the title screen without a mod-loading error screen.
|
||||
- [ ] The Mods list contains Cobblemon 1.8.4, Cobblemon Survival Pack Companion 0.0.1, KubeJS, FTB Quests, FTB Library, FTB Teams, Architectury, Kotlin for Forge, Rhino.
|
||||
- [ ] `logs/latest.log` in the instance contains `Cobblemon Survival companion 0.0.1 loaded (Cobblemon 1.8.4…)`.
|
||||
- [ ] In a new creative test world: `/cobblesurvival status` prints `cobblesurvival 0.0.1 ok; cobblemon 1.8.4…; species …`.
|
||||
- [ ] `/datapack list enabled` lists the Cobblemon Survival core data pack.
|
||||
- [ ] A Pokémon spawns from `/spawnpokemon pikachu`, and the FTB Quests book opens from its button in the inventory screen (it's empty for now).
|
||||
|
||||
## Exports (closes the "both exports install in a launcher" check)
|
||||
|
||||
- [ ] Import `build/cobblemon-survival-pack-0.0.1.mrpack` into Prism (Add Instance → Import). It installs, but **without the FTB mods**, by design (they're CurseForge-only).
|
||||
- [ ] Import `build/cobblemon-survival-pack-0.0.1-curseforge.zip` the same way. It installs every mod.
|
||||
|
||||
## Decisions (see `docs/design.md`, open decisions)
|
||||
|
||||
- [x] Platform split: not publishing for now (decided 2026-10-28); revisit before a public release.
|
||||
- [ ] Confirm NeoForge 1.21.1 as the loader.
|
||||
- [ ] License for the companion mod and pack content; pack name and mod id.
|
||||
@@ -0,0 +1,35 @@
|
||||
# Phase 1 – checks for Adrian
|
||||
|
||||
## Ask Adrian: approve the island before Phase 3
|
||||
|
||||
**Approved 2026-10-28.** Structures stay with only their ore and vanilla mobs removed; End portals stay openable (the dragon becomes a Pokémon boss later); the minimap stays.
|
||||
|
||||
Look at `build/island-map.png` (the generated island) and `build/seed-search/candidates-pokeball.png` (the 8 best of 151 seeds for the Poké Ball shape).
|
||||
|
||||
- [x] **Shape and size.** Poké Ball, radius 1,500 blocks: a 160-block channel across the middle, a 120-block ring channel around a centre island of radius 280 (where you spawn). All placeholders, change them with `tools/pokeball_preset.py`. Bigger, smaller, wider channels?
|
||||
- [x] **Seed / layout.** `isle-26` approved (2026-10-28).
|
||||
- [x] **Biome list.** "Mountain edge" was mapped to windswept hills (it was removed from the game in 1.18). Ocean, deep ocean, lukewarm/warm ocean, river and beach were kept for the sea and coast. OK?
|
||||
- [x] **Biome mapping.** Forest also covers taiga, dark/birch forest and groves, so it takes about 40% of the land. Plains also covers sunflower plains, snowy plains, ice spikes and mushroom fields. Savanna became desert, savanna plateaus became badlands, meadow became cherry grove, swamp became mangrove swamp. Change anything in `world/biomes.json`?
|
||||
- [x] **Border.** Square vanilla border 96 blocks past the outermost coast.
|
||||
- [x] **Ore in structures.** Cobblemon habitats/ruins and fossils keep their shape, but their ore becomes stone and their raw ore blocks become tuff/terracotta/yellow terracotta. OK, or should such structures be removed instead?
|
||||
|
||||
## In-game (Prism save "Cobblemon Survival Island")
|
||||
|
||||
- [ ] The save loads; you spawn on the centre island in plains or forest.
|
||||
- [ ] From the air (creative flight, or Xaero's World Map) the island reads as a Poké Ball; the coast and channels look natural, and the world border sits out at sea all around.
|
||||
- [ ] Biomes match the map (F3 shows the biome). No snowy plains, taiga, savanna, meadow, swamp or other unlisted biome anywhere.
|
||||
- [ ] Caves: you can find lush caves, dripstone caves, deep dark and basalt deltas underground. **Basalt deltas look right in the overworld** (basalt columns, magma and lava deltas, ash particles; no broken terrain or missing textures).
|
||||
- [ ] No natural ore anywhere, including Cobblemon's evolution-stone ores and ore inside structures (mine around a bit, or use a spectator x-ray resource pack).
|
||||
- [ ] No Nether: lighting an obsidian frame does nothing (no portal forms); no ruined portals anywhere.
|
||||
- [ ] No vanilla mobs: no animals, monsters, fish, squid or bats appear, only Pokémon. Structures generate (villages, ruins, monuments, strongholds, mineshafts, trial chambers, ancient cities) but without vanilla mobs or spawners; shriekers in the Deep Dark don't summon the Warden; mining stone or stone bricks never releases silverfish.
|
||||
- [ ] The world type "Cobblemon Survival Island" appears under World Type when creating a new world.
|
||||
|
||||
## QOL mods (in-game)
|
||||
|
||||
- [ ] Keybinds: in your existing instance, press **Controls → Key Binds → Reset Keys** once (keys already saved in `options.txt` keep their old value; fresh installs get the new defaults). Afterwards nothing in the list is red except JEI's mouse-click actions.
|
||||
- [ ] JEI: the item list shows on the right of the inventory; **G**/U show recipes and uses (R is Cobblemon's send-out key), including Cobblemon items.
|
||||
- [ ] Jade: looking at a block or a Pokémon shows its name and mod; hold **V** for details.
|
||||
- [ ] Inventory Profiles Next: sorting buttons on chests and the inventory; tools refill from the inventory.
|
||||
- [ ] Mouse Tweaks, AppleSkin, Controlling (search box in Controls), Xaero's Minimap and World Map all work.
|
||||
- [ ] Performance feels fine with Sodium, FerriteCore, ModernFix, ImmediatelyFast and Entity Culling; Cobblemon models render correctly with Sodium.
|
||||
- [x] Keep the minimap and world map (decided 2026-10-28).
|
||||
@@ -0,0 +1,25 @@
|
||||
# Phase 2 – checks for Adrian
|
||||
|
||||
## Ask Adrian: approve Phase 2 before Phase 3
|
||||
|
||||
**Approved 2026-10-29**, placeholders as listed below.
|
||||
|
||||
Every roadmap item of Phase 2 is in and the roadmap's "done when" holds in the tests: the permadeath matrix passes, sleeping doesn't heal, and there is no remote PC access. Placeholders that were up for approval (`docs/balance.md`):
|
||||
|
||||
- **Revival Charm recipe:** 2 gold ingots, 2 Revives, 1 Max Revive.
|
||||
- **Healing Machine recipe:** 3 gold ingots, 4 iron ingots, 1 Max Revive, 1 diamond (Cobblemon: copper, iron, Max Revive, redstone).
|
||||
- **Healing Machine recharge:** a full party heal about once an hour (Cobblemon: every 15 minutes).
|
||||
|
||||
Automated (`tools/quick_check.py`): the mods load, vanilla mobs can't join, Lootr converts the loot chests of a sampled village, and the permadeath matrix runs as in-game tests (`tools/selftest.py`): a Pokémon faints outside a battle, from a fall, in lava, from poison, in a wild battle with and without a Revival Charm, in a trainer battle, after being revived during a battle, and in the PC; the party doesn't heal or revive by itself. Also tested: the Healing Machine uses the pack's recipe and recharges slower, `/pc` needs cheats and a PC stops working once you walk away from it, and breaking, placing or walking during a battle doesn't end it. The checks below are what a test can't judge: how it looks and feels.
|
||||
|
||||
## In-game
|
||||
|
||||
- [ ] **Permadeath:** a Pokémon that faints is gone with a red chat message: right away outside a battle (fall, fire/lava, poison), or when the battle ends (wild or trainer). A Revive used during the battle doesn't save it.
|
||||
- [ ] **Revival Charm:** craft one (gold ingot top and bottom, Revive left and right, Max Revive in the middle), give it to a Pokémon to hold; when it faints it stays, and the charm is used up.
|
||||
- [ ] **No auto-revive:** a fainted Pokémon doesn't wake up on its own, even after a long battle.
|
||||
- [ ] **No sleep healing:** sleeping through the night doesn't heal the party.
|
||||
- [ ] **Healing Machine:** JEI shows the pack's recipe (gold ingots on top, iron, Max Revive, diamond); after healing a full party, the machine takes about an hour to fill up again.
|
||||
- [ ] **PC:** the PC only opens at a placed PC block.
|
||||
- [ ] **Wild Pokémon** sometimes flee or fight back (Fight or Flight Reborn); pastured Pokémon get teleported back instead of recalled (TP-Pastures).
|
||||
- [ ] **Loot chests:** a chest in a village/ruin shows Lootr's look; after looting it, it refills about an hour of play later with different items. Each player sees their own loot.
|
||||
- [ ] **Free movement in battle:** during a battle you can leave the battle screen, walk around and build (needed for the Phase 7 boss fights).
|
||||
@@ -0,0 +1,29 @@
|
||||
# Phase 3 – checks for Adrian
|
||||
|
||||
## Ask Adrian: approve the zone table before building zones
|
||||
|
||||
**Approved 2026-10-29** with one change: items that help with a zone drop from the boss fight of the zone before it. Zones decide both the species and the levels that spawn.
|
||||
|
||||
Open `build/zone-map.png` (the island coloured by zone) and read the draft in `docs/design.md` → "Phase 3 zone plan". Every value is a placeholder; change anything.
|
||||
|
||||
1. **Zone model:** zones follow the island's biome clusters (hazard biomes are their own zones wherever they lie; forest and plains are split into regions by position; caves by cave biome under the whole island). Or plain sectors/rings that ignore biomes?
|
||||
2. **Sunscorch next to the start:** its biggest pocket is just across the ring channel north of spawn, and the desert specks on Button Isle are hot too. Keep as an early taste of heat, or reshape?
|
||||
3. **Deep Dark everywhere:** caves under the start island are as dangerous as anywhere (Lv 45–60). OK?
|
||||
4. **Level bands, hazards, signature drops, Alpha guardians** in the table.
|
||||
|
||||
## Built so far
|
||||
|
||||
- **Zones and their spawns** (step 2). Cobblemon's own spawn lists are off; each zone spawns its own evolution lines (`docs/zone-species.md`) at its levels. Automated: `spawn_pools_are_zoned` and the `spawn_survey` across all 14 zones in `tools/quick_check.py`.
|
||||
|
||||
- **Heat and cold** (step 5, Cold Sweat). Automated: `cold_needs_fur`, `heat_needs_hide` and `lowlands_are_mild` on the island in `tools/quick_check.py`.
|
||||
|
||||
Still to come: Alpha guardians with the boss drops that help the next zone (including the Heat and Icy Rocks), the Mire's poison, soft level pressure, flyers.
|
||||
|
||||
## In-game
|
||||
|
||||
- [ ] **Where am I:** `/cobblesurvival zone` (needs operator) names the zone and its levels; walk from Button Isle into Southwold and the Jungle.
|
||||
- [ ] **Who lives here:** the Pokémon you meet in a zone are the ones listed for it in `docs/zone-species.md`, at its levels. Any line in the wrong zone can be pinned elsewhere in `world/zones.json` → `species`.
|
||||
- [ ] **Caves:** Lush Caves, Dripstone, Deep Dark and Basalt Furnace each have their own Pokémon, whatever surface zone is above them.
|
||||
- [ ] **Frostpeak cold:** walk onto the jagged peaks without gear: Cold Sweat's thermometer drops and after a minute or so you take damage (not during the first 5 minutes of a new world: grace period). In the fur set (Goat Fur from 8 wool + 1 Heat Rock) you last many minutes.
|
||||
- [ ] **Sunscorch heat:** the desert at noon overheats you in a couple of minutes; at night it's fine. The hide set (Hoglin Hide from 8 leather + 1 Icy Rock) or a Fire Resistance potion keeps you going.
|
||||
- [ ] **Lowlands:** a night in Southwold or on Button Isle without gear never gets dangerous.
|
||||
Reference in new issue
Block a user