Phase 8: the pack's own JEI pages for every drop source
Adrian, 2026-11-02/03: every item that can drop gets a JEI page naming its sources, alongside the Cobblemon Info add-on (which shows drops and biomes, not zones). The companion mod's JEI plugin (jei/DropSourcesJei.kt) adds: - Pokemon drops on the island: 794 species of lines that live on the island, with chances, amounts and the zones they spawn in (or where their line lives); spawns with their own drops (Beheeyem in the End). The Drop Synthesizer core is the catalyst. - Guardians and the End boss; Sacrifice Altar tiers and specials; Rebirth Chamber; zone ore veins with regrow times; Cobblebase pasture finds per skill and zone. JEI runs on the client, so the pages read assets/cobblesurvival/jei/ drop_sources.json inside the mod, written by tools/jei_sources.py from the pack's files. Self-tests drop_sources_match_the_server (file vs live server: drops, zones, own-drop spawns, guardians, End boss, altar) and jei_pages_build (every page builds, every item exists). The ore a vein gives moved into world/zones.json (ores -> item), shared with the quest book. JEI's API (19.64.0.455) is a compile-only dependency from JEI's own Maven. Self-tests and the island check pass. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
c5d1cf93f4
commit
72965caedf
13 files changed
+19637
-49
No files matched your search
@@ -8,12 +8,15 @@
|
||||
|
||||
- **Add-ons in the pack:** Cobblemon Quests Reloaded 2.0.2 (Cobblemon task type for FTB Quests) and Cobblemon Info for REI / JEI / EMI 2.32.14. Automated: `quests_have_cobblemon_tasks`, `jei_addon_shows_island_spawns`.
|
||||
- **Spawn info in JEI:** right for the pack (species, levels, rarity come from the zone pools), but it shows biomes, not zones; our own pages will add the zone.
|
||||
- **JEI pages** (ours): look an item up in JEI (its recipes, key G) for "Pokémon drops on the island" (each Pokémon with its zone and levels), "Guardians and the End boss", "Sacrifice Altar", "Rebirth Chamber", "Zone ore veins" and "Pasture finds". Automated: `drop_sources_match_the_server`, `jei_pages_build`.
|
||||
- **Quest book:** 18 chapters, 74 quests, generated from `docs/quests.yaml`: Getting Started, one chapter per zone and the End, Pokémon Machines, Base and Jobs. No rewards, nothing locked. Zone chapters: reach the zone, catch three of its Pokémon, mine its ores, beat its guardian. Automated: `quest_book_loads`, `quest_events_mark_zones` (and the guardian and furnace tests check their quest events).
|
||||
|
||||
## In game (Prism instance)
|
||||
|
||||
- [ ] Open JEI, look up a Pokémon (e.g. Pikachu) in Cobblemon Info's pages: the spawn levels match its zone (`docs/zone-species.md`), and its drops are listed.
|
||||
|
||||
- [ ] In JEI, look up the recipes of Light Ball: Pikachu's page shows its picture, "Lives in Westmarch (Lv 16–25)" and its drops with chances; Raichu's page says where its line lives. Look up Ender Pearl: Beheeyem in the End has a page of its own.
|
||||
- [ ] Look up the recipes of Rare Candy (Sacrifice Altar tiers), Great Ball (Southwold's guardian), Raw Copper (Southwold's veins, and pasture mining in Southwold).
|
||||
- [ ] Open the quest book (FTB Quests' book item, or its key): every chapter shows, nodes are joined by lines, none shows a lock.
|
||||
- [ ] Getting Started: tick "Welcome to the Island"; catch a Pokémon: "A Partner" completes.
|
||||
- [ ] Soft-lock check: get 16 Poké Balls before ticking "Welcome to the Island", then tick it: "Poké Balls" completes too (if it stays stuck, tell me: there's a known flexible-mode bug in older FTB Quests).
|
||||
|
||||
+8
-1
@@ -311,7 +311,14 @@ Adrian's choices: Cobblemon tasks come from **Cobblemon Quests Reloaded** (a mai
|
||||
- **Node positions:** Adrian moves nodes in the in-game editor; `tools/quests.py --pull <folder>` records every node that isn't where the generator would put it in the `layout` block at the end of `docs/quests.yaml`. `tools/prism_instance.py` does that from the instance before each sync, and rebuilds if something moved, so a sync never undoes his layout (docs/quests.yaml then needs committing). Titles, texts, tasks and dependencies edited in game are overwritten.
|
||||
- **Self-tests:** `quest_book_loads` (FTB Quests on the server has the book in flexible mode, every task type is known, every item and advancement exists), `quest_events_mark_zones`, and the guardian and furnace tests check their events.
|
||||
- Still open: the flexible-mode soft-lock a fix mod reports for 1.20.1 (tasks done before their dependencies); checked in game for now.
|
||||
- JEI (next): our plugin adds, per item, every place on the island it comes from that Cobblemon Info doesn't cover: guardian and End boss rewards, Sacrifice Altar tiers, ore veins by zone, pasture mining and finder tables by zone; and per Pokémon its zone.
|
||||
**Drop sources in JEI** (Adrian, 2026-11-02/03). The companion mod adds its own JEI pages (`jei/DropSourcesJei.kt`); look an item up (its recipes) to see every place on the island it comes from:
|
||||
- **Pokémon drops on the island:** one page per species of a line that lives on the island (794): its drops with chance and amount, the zones it spawns in with their levels, or for a form that isn't wild, where its line lives ("Not wild; its line lives in Westmarch (Pichu)"). The Drop Synthesizer core is the page's catalyst (it rolls the same drops). Spawns with drops of their own get a page too (Beheeyem in the End: ender pearls). This is the zone information the Cobblemon Info add-on can't show.
|
||||
- **Guardians and the End boss:** each guardian's species, level, zone, drops and return time; Eternatus with its experience and the dragon egg on the first win.
|
||||
- **Sacrifice Altar** (each level tier and the Dragon-type special) and **Rebirth Chamber** (the Ability Patch), with their cores as catalysts.
|
||||
- **Zone ore veins:** per zone, what its veins give and how fast they regrow.
|
||||
- **Pasture finds:** per Cobblebase skill (mining, ore finder, evolution-item finder) and zone, what a pastured Pokémon can find there; the Pasture Block is the catalyst.
|
||||
|
||||
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.
|
||||
|
||||
## Open decisions for Adrian (proceeding with the default, flagged)
|
||||
|
||||
|
||||
@@ -21,30 +21,6 @@ book:
|
||||
title: Cobblemon Survival
|
||||
icon: cobblemon:poke_ball
|
||||
|
||||
# What each zone's ore veins give when mined (pack/config/regenerating_ore_veins/veins.json).
|
||||
ore_items:
|
||||
coal_node: minecraft:coal
|
||||
copper_node: minecraft:raw_copper
|
||||
iron_node: minecraft:raw_iron
|
||||
redstone_node: minecraft:redstone
|
||||
lapis_node: minecraft:lapis_lazuli
|
||||
gold_node: minecraft:raw_gold
|
||||
emerald_node: minecraft:emerald
|
||||
amethyst_node: minecraft:amethyst_shard
|
||||
diamond_node: minecraft:diamond
|
||||
quartz_node: minecraft:quartz
|
||||
netherite_node: minecraft:ancient_debris
|
||||
thunder_stone_node: cobblemon:thunder_stone
|
||||
shiny_stone_node: cobblemon:shiny_stone
|
||||
leaf_stone_node: cobblemon:leaf_stone
|
||||
water_stone_node: cobblemon:water_stone
|
||||
moon_stone_node: cobblemon:moon_stone
|
||||
sun_stone_node: cobblemon:sun_stone
|
||||
fire_stone_node: cobblemon:fire_stone
|
||||
ice_stone_node: cobblemon:ice_stone
|
||||
dawn_stone_node: cobblemon:dawn_stone
|
||||
dusk_stone_node: cobblemon:dusk_stone
|
||||
|
||||
zone_chapter:
|
||||
- id: arrive
|
||||
title: "{zone}"
|
||||
|
||||
Reference in new issue
Block a user