Phase 9: safe start island, better quest book, every useful item obtainable

- Button Isle is peaceful: wild Pokémon only fight a player who hit them first
  (tuning/server.json peaceful_zones); its apricorns and coal make Poké Balls
  (4 apricorns + coal or charcoal), and the world report checks it has enough.
- Quest book: no boilerplate; each zone page says what is particular to it, and
  every zone that needs gear or a field move to be safe has its own quest. New
  page on the bigger mods (Cold Sweat, Fight or Flight, Cobblebase, breeding,
  veins, shared loot, maps and info).
- The Mire's poison stops 10 blocks below the surface.
- Player battles never cost a Pokémon (CobbleHardcoreMon config, mixins, and the
  companion mod's own permadeath).
- tools/item_audit.py: every item with a use has a source on the island; new
  sources for the gaps it found (species additions, three recipes).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
claudeandClaude Opus 5.5 committed 2026-11-10 15:04:09 +01:00
1 parent 6ace26e012
commit d29e177f9d
65 files changed
+1920 -364

No files matched your search

+5
View File
@@ -102,6 +102,11 @@ python3 tools/fieldguide/build.py
``` ```
Writes the field guide to `build/field-guide/` (open `index.html`): where each Pokémon spawns on the island, how to get every mod item and what it's for, with items that have no source on the island flagged. Also generates FTB Quests chapters and a Pokédex text override under `build/field-guide/ingame/` (not installed). Details in [docs/field-guide.md](docs/field-guide.md). Writes the field guide to `build/field-guide/` (open `index.html`): where each Pokémon spawns on the island, how to get every mod item and what it's for, with items that have no source on the island flagged. Also generates FTB Quests chapters and a Pokédex text override under `build/field-guide/ingame/` (not installed). Details in [docs/field-guide.md](docs/field-guide.md).
```bash
python3 tools/item_audit.py
```
Every item in the pack that has a use can be had on the island (Adrian, 2026-11-10). Reads the field guide (run `tools/fieldguide/build.py` first) and fails on any item without a source, unless `NO_USE` in the script says why it needs none (decoration, creative-only, left over, or something Cobblemon can't make yet). Sources that only code knows go in `tools/fieldguide/manual_sources.json`.
```bash ```bash
python3 tools/smoke_test.py --load-only python3 tools/smoke_test.py --load-only
``` ```
@@ -714,6 +714,11 @@
"item": "cobblemon:rawst_berry", "item": "cobblemon:rawst_berry",
"count": "1", "count": "1",
"chance": 17.0 "chance": 17.0
},
{
"item": "cobblemon:malicious_armor",
"count": "1",
"chance": 16.2
} }
], ],
"zones": [ "zones": [
@@ -3219,12 +3224,32 @@
{ {
"item": "cobblemon:misty_seed", "item": "cobblemon:misty_seed",
"count": "1", "count": "1",
"chance": 9.8 "chance": 9.7
}, },
{ {
"item": "cobblemon:kebia_berry", "item": "cobblemon:kebia_berry",
"count": "1", "count": "1",
"chance": 9.3 "chance": 9.3
},
{
"item": "cobblemon:verdroot",
"count": "1",
"chance": 8.8
},
{
"item": "cobblemon:voltaconia",
"count": "1",
"chance": 8.4
},
{
"item": "cobblemon:mistleaf",
"count": "1",
"chance": 8.0
},
{
"item": "cobblemon:lucibell",
"count": "1",
"chance": 7.6
} }
], ],
"zones": [ "zones": [
@@ -3710,6 +3735,26 @@
"item": "cobblemon:cheri_berry", "item": "cobblemon:cheri_berry",
"count": "1", "count": "1",
"chance": 2.5 "chance": 2.5
},
{
"item": "cobblemon:lobaila",
"count": "1",
"chance": 4.9
},
{
"item": "cobblemon:pomohana",
"count": "1",
"chance": 4.6
},
{
"item": "cobblemon:pauvillea",
"count": "1",
"chance": 4.4
},
{
"item": "cobblemon:wistensu",
"count": "1",
"chance": 4.2
} }
], ],
"zones": [ "zones": [
@@ -8926,6 +8971,11 @@
"item": "cobblemon:persim_berry", "item": "cobblemon:persim_berry",
"count": "1", "count": "1",
"chance": 5.0 "chance": 5.0
},
{
"item": "cold_sweat:chameleon_molt",
"count": "1",
"chance": 14.2
} }
], ],
"zones": [ "zones": [
@@ -9386,6 +9436,11 @@
"item": "cobblemon:rawst_berry", "item": "cobblemon:rawst_berry",
"count": "1", "count": "1",
"chance": 9.3 "chance": 9.3
},
{
"item": "cold_sweat:soul_sprout",
"count": "1",
"chance": 17.3
} }
], ],
"zones": [ "zones": [
@@ -15499,6 +15554,11 @@
"item": "minecraft:iron_helmet", "item": "minecraft:iron_helmet",
"count": "1", "count": "1",
"chance": 2.5 "chance": 2.5
},
{
"item": "cobblemon:shell_helmet",
"count": "1",
"chance": 9.8
} }
], ],
"zones": [ "zones": [
@@ -16229,6 +16289,11 @@
"item": "cobblemon:chesto_berry", "item": "cobblemon:chesto_berry",
"count": "1", "count": "1",
"chance": 7.0 "chance": 7.0
},
{
"item": "cobblemon:tasty_tail",
"count": "1",
"chance": 25.4
} }
], ],
"zones": [ "zones": [
@@ -0,0 +1,22 @@
{
"_comment": "Adrian, 2026-11-10: every item with a use is obtainable. Cobblemon has no recipe for the Ancient Origin Ball (a sure catch, like the Master Ball): a Master Ball set in tumblestone.",
"type": "minecraft:crafting_shaped",
"category": "equipment",
"pattern": [
" t ",
"tmt",
" t "
],
"key": {
"t": {
"item": "cobblemon:tumblestone"
},
"m": {
"item": "cobblemon:master_ball"
}
},
"result": {
"id": "cobblemon:ancient_origin_ball",
"count": 1
}
}
@@ -0,0 +1,31 @@
{
"_comment": "Adrian, 2026-11-10: every item with a use is obtainable. Cobblemon has no recipe for the Cherish Ball; this follows its apricorn balls (gold, like the tier-3 balls).",
"type": "minecraft:crafting_shaped",
"category": "equipment",
"pattern": [
" t ",
"lcr",
" b "
],
"key": {
"t": {
"item": "cobblemon:pink_apricorn"
},
"b": {
"item": "cobblemon:pink_apricorn"
},
"l": {
"item": "cobblemon:red_apricorn"
},
"r": {
"item": "cobblemon:red_apricorn"
},
"c": {
"tag": "cobblemon:tier_3_poke_ball_materials"
}
},
"result": {
"id": "cobblemon:cherish_ball",
"count": 4
}
}
@@ -0,0 +1,25 @@
{
"_comment": "Adrian, 2026-11-10: every item with a use is obtainable. Netherite gear needs this template, which only bastions in the Nether have, and the island has no Nether.",
"type": "minecraft:crafting_shaped",
"category": "misc",
"pattern": [
"DND",
"DOD",
"DDD"
],
"key": {
"D": {
"item": "minecraft:diamond"
},
"N": {
"item": "minecraft:netherite_scrap"
},
"O": {
"item": "minecraft:obsidian"
}
},
"result": {
"id": "minecraft:netherite_upgrade_smithing_template",
"count": 1
}
}
@@ -0,0 +1,23 @@
{
"_comment": "Adrian, 2026-11-10: the start island makes Poké Balls on its own. Button Isle has apricorns and coal but no copper, which every Cobblemon ball needs, so four apricorns of any colour and coal or charcoal give one. A copper ingot from Southwold still makes four (Cobblemon's own recipe).",
"type": "minecraft:crafting_shaped",
"category": "equipment",
"group": "basic_balls",
"pattern": [
" a ",
"aca",
" a "
],
"key": {
"a": {
"tag": "cobblemon:apricorns"
},
"c": {
"tag": "minecraft:coals"
}
},
"result": {
"id": "cobblemon:poke_ball",
"count": 1
}
}
@@ -0,0 +1,29 @@
{
"_comment": "Adrian, 2026-11-10: every item with a use is obtainable. Adds Malicious Armor, for Charcadet's evolution into Ceruledge (Ceruledge doesn't spawn here); Cobblemon's own drops stay (an addition replaces them).",
"target": "cobblemon:armarouge",
"drops": {
"amount": 5,
"entries": [
{
"item": "minecraft:charcoal",
"quantityRange": "0-2"
},
{
"item": "cobblemon:charcoal_stick",
"percentage": 5.0
},
{
"item": "cobblemon:auspicious_armor",
"percentage": 5.0
},
{
"item": "cobblemon:rawst_berry",
"percentage": 5.0
},
{
"item": "cobblemon:malicious_armor",
"percentage": 5.0
}
]
}
}
@@ -0,0 +1,33 @@
{
"_comment": "Adrian, 2026-11-10: every item with a use is obtainable. Adds the four terrain flowers (seasonings), which don't grow on the island; Cobblemon's own drops stay (an addition replaces them).",
"target": "cobblemon:comfey",
"drops": {
"amount": 2,
"entries": [
{
"item": "cobblemon:misty_seed",
"percentage": 5.0
},
{
"item": "cobblemon:kebia_berry",
"percentage": 5.0
},
{
"item": "cobblemon:verdroot",
"percentage": 5.0
},
{
"item": "cobblemon:voltaconia",
"percentage": 5.0
},
{
"item": "cobblemon:mistleaf",
"percentage": 5.0
},
{
"item": "cobblemon:lucibell",
"percentage": 5.0
}
]
}
}
@@ -0,0 +1,33 @@
{
"_comment": "Adrian, 2026-11-10: every item with a use is obtainable. Adds the four Oricorio flowers (seasonings), which don't grow on the island; Cobblemon's own drops stay (an addition replaces them).",
"target": "cobblemon:cutiefly",
"drops": {
"amount": 2,
"entries": [
{
"item": "minecraft:honey_bottle",
"quantityRange": "0-1"
},
{
"item": "cobblemon:cheri_berry",
"percentage": 2.5
},
{
"item": "cobblemon:lobaila",
"percentage": 5.0
},
{
"item": "cobblemon:pomohana",
"percentage": 5.0
},
{
"item": "cobblemon:pauvillea",
"percentage": 5.0
},
{
"item": "cobblemon:wistensu",
"percentage": 5.0
}
]
}
}
@@ -0,0 +1,17 @@
{
"_comment": "Adrian, 2026-11-10: every item with a use is obtainable. Adds Chameleon Molt, for Cold Sweat's chameleon armour and Thermolith; Cobblemon's own drops stay (an addition replaces them).",
"target": "cobblemon:kecleon",
"drops": {
"amount": 1,
"entries": [
{
"item": "cobblemon:persim_berry",
"percentage": 5.0
},
{
"item": "cold_sweat:chameleon_molt",
"percentage": 15.0
}
]
}
}
@@ -0,0 +1,24 @@
{
"_comment": "Adrian, 2026-11-10: every item with a use is obtainable. Adds Soul Sprout (Cold Sweat), which only grows in the Nether; Cobblemon's own drops stay (an addition replaces them).",
"target": "cobblemon:lampent",
"drops": {
"amount": 3,
"entries": [
{
"item": "minecraft:candle"
},
{
"item": "cobblemon:dusk_stone",
"percentage": 5.0
},
{
"item": "cobblemon:rawst_berry",
"percentage": 5.0
},
{
"item": "cold_sweat:soul_sprout",
"percentage": 10.0
}
]
}
}
@@ -0,0 +1,17 @@
{
"_comment": "Adrian, 2026-11-10: every item with a use is obtainable. Adds Shell Helmet, for Karrablast's evolution into Escavalier; Cobblemon's own drops stay (an addition replaces them).",
"target": "cobblemon:shelmet",
"drops": {
"amount": 1,
"entries": [
{
"item": "minecraft:iron_helmet",
"percentage": 2.5
},
{
"item": "cobblemon:shell_helmet",
"percentage": 10.0
}
]
}
}
@@ -0,0 +1,25 @@
{
"_comment": "Adrian, 2026-11-10: every item with a use is obtainable. Adds Tasty Tail, a Cooking Pot ingredient; Cobblemon's own drops stay (an addition replaces them).",
"target": "cobblemon:slowpoke",
"drops": {
"amount": 3,
"entries": [
{
"item": "cobblemon:kings_rock",
"percentage": 2.5
},
{
"item": "cobblemon:lagging_tail",
"percentage": 2.5
},
{
"item": "cobblemon:chesto_berry",
"percentage": 2.5
},
{
"item": "cobblemon:tasty_tail",
"percentage": 10.0
}
]
}
}
@@ -7,5 +7,6 @@
"end_boss_leash": 24.0, "end_boss_leash": 24.0,
"summon_spacing": 96.0, "summon_spacing": 96.0,
"wanderer_range": 64.0, "wanderer_range": 64.0,
"attack_battle_grace_ticks": 100 "attack_battle_grace_ticks": 100,
"peaceful_zones": ["button_isle"]
} }
@@ -1,10 +1,11 @@
{ {
"_comment": "Phase 3 hazard: in the Mangrove Mire a player keeps getting Poison unless they wear an item from the protection tag (Mire Waders). Placeholder values, docs/balance.md.", "_comment": "Phase 3 hazard: in the Mangrove Mire a player keeps getting Poison unless they wear an item from the protection tag (Mire Waders). Placeholder values, docs/balance.md. max_depth: blocks below the surface it still reaches (Adrian, 2026-11-10: not far underground).",
"zone": "mire", "zone": "mire",
"effect": "minecraft:poison", "effect": "minecraft:poison",
"amplifier": 0, "amplifier": 0,
"duration_ticks": 140, "duration_ticks": 140,
"every_ticks": 100, "every_ticks": 100,
"protection": "cobblesurvival:mire_protection", "protection": "cobblesurvival:mire_protection",
"warning": "message.cobblesurvival.hazard.mire" "warning": "message.cobblesurvival.hazard.mire",
"max_depth": 10
} }
+5 -1
View File
@@ -26,7 +26,7 @@ Every tunable lives in a config file or in this table. **Placeholder** means gue
| Guardian respawn | 5 hours of game time after being beaten | Decided (Adrian, 2026-10-29) | `world/zones.json` → `guardian_respawn_hours` | Fixed spots | | Guardian respawn | 5 hours of game time after being beaten | Decided (Adrian, 2026-10-29) | `world/zones.json` → `guardian_respawn_hours` | Fixed spots |
| Guardian strength | strongest Pokémon spawning in the zone, band top + 5 levels, scaled to stand about 8 blocks tall (1.5× to 12× its normal size), uncatchable | Decided (Adrian, 2026-10-30) | `tools/zone_spawns.py` (`GUARDIAN_*`), `world/zones.json` → `guardian.species` | Pinned by hand: Southwold Pinsir, Highland Meadows Mudsdale, Sunscorch Flygon, Frostpeak Abomasnow, Deep Dark Regigigas, Basalt Furnace Moltres (Lv 75; drops 3 Exp. Candy XL + 2 netherite scrap, placeholder) (Adrian, 2026-11-02: guardians fit their zone, a legendary for the Deep Dark) | | Guardian strength | strongest Pokémon spawning in the zone, band top + 5 levels, scaled to stand about 8 blocks tall (1.5× to 12× its normal size), uncatchable | Decided (Adrian, 2026-10-30) | `tools/zone_spawns.py` (`GUARDIAN_*`), `world/zones.json` → `guardian.species` | Pinned by hand: Southwold Pinsir, Highland Meadows Mudsdale, Sunscorch Flygon, Frostpeak Abomasnow, Deep Dark Regigigas, Basalt Furnace Moltres (Lv 75; drops 3 Exp. Candy XL + 2 netherite scrap, placeholder) (Adrian, 2026-11-02: guardians fit their zone, a legendary for the Deep Dark) |
| Guardian drops | Button Isle 10 Poké Balls + 4 Potions; Southwold 6 Great Balls + 4 Exp. Candy S; Westmarch and Jungle Mire Waders + 4 Pecha Berries + 2 Exp. Candy M; Mire and Highlands 3 Icy Rocks + 4 Super Potions; Sunscorch 3 Heat Rocks + 2 Exp. Candy L; Frostpeak and Deep Dark 3 Icy Rocks + 2 Exp. Candy L; Deep Sea Mystic Water + 3 Exp. Candy M | Decided (Adrian, 2026-10-30) | `world/zones.json` → `guardian.drops` | 3 rocks make one full fur or hide set | | Guardian drops | Button Isle 10 Poké Balls + 4 Potions; Southwold 6 Great Balls + 4 Exp. Candy S; Westmarch and Jungle Mire Waders + 4 Pecha Berries + 2 Exp. Candy M; Mire and Highlands 3 Icy Rocks + 4 Super Potions; Sunscorch 3 Heat Rocks + 2 Exp. Candy L; Frostpeak and Deep Dark 3 Icy Rocks + 2 Exp. Candy L; Deep Sea Mystic Water + 3 Exp. Candy M | Decided (Adrian, 2026-10-30) | `world/zones.json` → `guardian.drops` | 3 rocks make one full fur or hide set |
| Mire poison | Poison I for 7 s, renewed every 5 s while in the Mire without Mire Waders | Decided (Adrian, 2026-10-30) | `datapacks/core/data/cobblesurvival/zone_hazards/mire.json` | Vanilla Poison stops at half a heart | | Mire poison | Poison I for 7 s, renewed every 5 s while in the Mire without Mire Waders, down to 10 blocks below the surface (Adrian, 2026-11-10: not far underground) | Decided (Adrian, 2026-10-30) | `datapacks/core/data/cobblesurvival/zone_hazards/mire.json` | Vanilla Poison stops at half a heart |
| Field moves (Cobblemon HMs) | mod defaults: all 39 abilities on, no level minimum, no fullness or friendship cost; Rock Smash breaks up to 32 connected ore blocks with no cooldown | Placeholder | `config/cobblemon_hms.json` (generated by the mod; the pack ships none yet) | Rock Smash mines any ore, whatever pickaxe the player has. HMs' `minLevel` is the player's XP level, not the Pokémon's | | Field moves (Cobblemon HMs) | mod defaults: all 39 abilities on, no level minimum, no fullness or friendship cost; Rock Smash breaks up to 32 connected ore blocks with no cooldown | Placeholder | `config/cobblemon_hms.json` (generated by the mod; the pack ships none yet) | Rock Smash mines any ore, whatever pickaxe the player has. HMs' `minLevel` is the player's XP level, not the Pokémon's |
| Breeding (Cobbreeding) | mod defaults: an egg every 8,000–14,000 ticks per breeding pasture, hatch multiplier 1.0 (about 10 min for 20 egg cycles), Masuda shiny boost ×4, no random eggs from two Dittos, no gate | Placeholder | `config/cobbreeding/main.json` (written by the mod; the pack ships none) | Adrian, 2026-10-31: breeding without a gate | | Breeding (Cobbreeding) | mod defaults: an egg every 8,000–14,000 ticks per breeding pasture, hatch multiplier 1.0 (about 10 min for 20 egg cycles), Masuda shiny boost ×4, no random eggs from two Dittos, no gate | Placeholder | `config/cobbreeding/main.json` (written by the mod; the pack ships none) | Adrian, 2026-10-31: breeding without a gate |
| Machine shells | 3×3×3, core in a wall, chamber in the centre; casing: Heat bricks/mud bricks/deepslate bricks; Dynamo copper blocks; Synthesis iron/gold/diamond/netherite blocks; Altar obsidian/crying obsidian/blackstone/polished blackstone bricks; Rebirth amethyst/quartz/calcite; glass allowed at the window spots | Placeholder | `datapacks/core/data/cobblesurvival/machines/*.json`, `tags/block/*_casing.json` | Adrian, 2026-10-31 (Phase 6) | | Machine shells | 3×3×3, core in a wall, chamber in the centre; casing: Heat bricks/mud bricks/deepslate bricks; Dynamo copper blocks; Synthesis iron/gold/diamond/netherite blocks; Altar obsidian/crying obsidian/blackstone/polished blackstone bricks; Rebirth amethyst/quartz/calcite; glass allowed at the window spots | Placeholder | `datapacks/core/data/cobblesurvival/machines/*.json`, `tags/block/*_casing.json` | Adrian, 2026-10-31 (Phase 6) |
@@ -93,3 +93,7 @@ Sections to fill as phases land: hazard damage (Phase 3), field-move cooldowns a
| Sea levels | channels between the islands are Shallows (Lv 5–20), everything beyond 1,500 blocks from the centre is Deep Sea (Lv 30–50) (Adrian, 2026-11-09) | Decided | `world/zones.json` → `deep_sea.rule.beyond` | Run `tools/zone_layout.py`, `zone_spawns.py`, `zone_bosses.py`, `zone_ores.py` after changing it | | Sea levels | channels between the islands are Shallows (Lv 5–20), everything beyond 1,500 blocks from the centre is Deep Sea (Lv 30–50) (Adrian, 2026-11-09) | Decided | `world/zones.json` → `deep_sea.rule.beyond` | Run `tools/zone_layout.py`, `zone_spawns.py`, `zone_bosses.py`, `zone_ores.py` after changing it |
| Starter | only faints: never removed, can't be released or sacrificed, a Revival Charm on it isn't used up (Adrian, 2026-11-09) | Decided | `permadeath/Permadeath.kt`, `mixin/HardcorePartyMixin.java` | Cobblemon's own record of each player's starter | | Starter | only faints: never removed, can't be released or sacrificed, a Revival Charm on it isn't used up (Adrian, 2026-11-09) | Decided | `permadeath/Permadeath.kt`, `mixin/HardcorePartyMixin.java` | Cobblemon's own record of each player's starter |
| Regional forms | a rare spawn (`homeless`) unless a line or an evolution brings them; Galarian Zapdos, Articuno, Moltres from Sigils, tier 2 (Adrian, 2026-11-09) | Placeholder | `world/zones.json` → `homeless.zones`, `world/summons.json` | Five regional evolutions got an island biome: `data/cobblemon/tags/worldgen/biome/evolution/regional/` | | Regional forms | a rare spawn (`homeless`) unless a line or an evolution brings them; Galarian Zapdos, Articuno, Moltres from Sigils, tier 2 (Adrian, 2026-11-09) | Placeholder | `world/zones.json` → `homeless.zones`, `world/summons.json` | Five regional evolutions got an island biome: `data/cobblemon/tags/worldgen/biome/evolution/regional/` |
| Peaceful start | on Button Isle a wild Pokémon only fights a player who hit it first: no hunting weaker trainers, no anger from failed catches, other attacks cancelled (Adrian, 2026-11-10) | Decided | `tuning/server.json` → `peaceful_zones`, `zone/PeacefulZones.kt` | A fail-safe for a player who lost everything |
| Poké Ball from the start island | 4 apricorns of any colour + coal or charcoal → 1 Poké Ball; Cobblemon's 4 red apricorns + copper ingot → 4 stays (Adrian, 2026-11-10: the start island must make at least one kind of ball) | Placeholder | `datapacks/core/data/cobblesurvival/recipe/poke_ball_from_coal.json` | Button Isle has about 250 apricorns on its trees and 11,600 coal ore, no copper; `tools/world_report.py` checks for at least 100 and 500 |
| Battles between players | never cost a Pokémon: one that faints there stays fainted until healed (Adrian, 2026-11-10) | Decided | `defaultconfigs/cobblehardcoremon/server.toml` → `trackPlayerBattles = false`; `permadeath/Permadeath.kt`, `mixin/HardcoreBattlesMixin.java` for worlds made before | |
| Items given a source (Adrian, 2026-11-10: every item with a use is obtainable) | Shell Helmet from Shelmet (10 %), Malicious Armor from Armarouge (5 %), Tasty Tail from Slowpoke (10 %), Chameleon Molt from Kecleon (15 %), Soul Sprout from Lampent (10 %), the terrain flowers from Comfey and the Oricorio flowers from Cutiefly (5 % each); recipes for the Cherish Ball (pink and red apricorns, gold), Ancient Origin Ball (Master Ball in tumblestone) and Netherite Upgrade template (diamonds, netherite scrap, obsidian) | Placeholder | `datapacks/core/data/cobblesurvival/species_additions/`, `.../recipe/` | `tools/item_audit.py` keeps it so |
+5
View File
@@ -27,6 +27,11 @@
- [ ] Let your starter faint: it stays, fainted, and a Healing Machine wakes it. Try to release it and sacrifice it: both are refused. Any other Pokémon is still lost. - [ ] Let your starter faint: it stays, fainted, and a Healing Machine wakes it. Try to release it and sacrifice it: both are refused. Any other Pokémon is still lost.
- [ ] A new player spawns with the quest book. Its first page walks through the basics; the second lists every HM. - [ ] A new player spawns with the quest book. Its first page walks through the basics; the second lists every HM.
- [ ] Are the regional forms' zones and rarity right? They're in `docs/zone-species.md`. - [ ] Are the regional forms' zones and rarity right? They're in `docs/zone-species.md`.
- [ ] On Button Isle with no Pokémon, throw balls at a strong wild Pokémon and let them fail: it never attacks. Hit it: it hits back.
- [ ] Punch apricorns off a Button Isle tree, mine coal (or burn a log for charcoal): four apricorns around it make a Poké Ball.
- [ ] Read a few zone pages in the quest book: each says what's particular to it, and Sunscorch, Frostpeak, the Mire, the Deep Sea, the Deep Dark and the Basalt Furnace each have a quest for what keeps you safe there.
- [ ] Battle another player until one of your Pokémon faints: it stays, fainted, until healed.
- [ ] Dig 15 blocks down under the Mire: the poison stops.
- [ ] R on an item shows recipes, U its uses, J the map, § the quest book (left of 1 on a Swiss keyboard). - [ ] R on an item shows recipes, U its uses, J the map, § the quest book (left of 1 on a Swiss keyboard).
- [ ] On JEI's Island Drops, click the Pokémon in the corner: Cobblemon Info's pages for it open. - [ ] On JEI's Island Drops, click the Pokémon in the corner: Cobblemon Info's pages for it open.
- [ ] Hit a guardian with a sword, set it on fire: nothing happens. - [ ] Hit a guardian with a sword, set it on fire: nothing happens.
+14
View File
@@ -341,6 +341,20 @@ Self-tests: `every_implemented_pokemon_is_obtainable` (every implemented species
**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. **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.
### Start island and quest pages (Adrian, 2026-11-10)
- **Button Isle is safe ground.** A player who lost everything, with no tools, armour or Pokémon, can start over there. A wild Pokémon in a peaceful zone (`tuning/server.json` → `peaceful_zones`) only fights a player who has just hit it: the hunting of weaker trainers and the anger after a failed catch don't happen there, and any other attack on a player there is cancelled (`zone/PeacefulZones.kt`). Only the surface counts: the caves under Button Isle are their own zones.
- **Button Isle makes Poké Balls.** Every Cobblemon ball needs copper, which only Southwold has. The isle has about 250 apricorns on its trees and 11,600 coal ore, so four apricorns of any colour around coal or charcoal make one Poké Ball (`recipe/poke_ball_from_coal.json`); Cobblemon's four red apricorns and a copper ingot still make four. `tools/world_report.py` fails a world with fewer than 100 apricorns or 500 coal ore there.
- **No boilerplate in the quest book.** Each zone page says what is particular to it (`about`, example `locals` that the generator checks against the zone's spawns, and a `guardian_note` on what its drops are for). What a zone needs to be safe is a quest of its own, as the Mire's waders were: Hoglin Hide armour for Sunscorch and the Basalt Furnace, Goat Fur armour for Frostpeak, Dive for the Deep Sea, Flash for the Deep Dark, Lava Plume for the Basalt Furnace. Rules that hold everywhere (guardian fights, zone levels) are said once, on the first page.
### Every item with a use is obtainable (Adrian, 2026-11-10)
The field guide already worked out what the island can provide; `tools/item_audit.py` now fails on any item without a source unless `NO_USE` gives the reason it needs none. Of 484 mod items flagged at first, most weren't gaps: Cobbreeding's 326 eggs come from breeding, and guardian drops, altar rewards, the Trainer Ditto's HM Case, the Vein Locator's recipe in the vein mod's config, filled Waterskins and Silk-Touched vein ores are given in code, so they are now in `tools/fieldguide/manual_sources.json`. Real gaps got sources (`docs/balance.md`). What stays without one: the 78 HM items Cobblemon HMs 4.x no longer uses, containers and blocks the game places itself, decoration, Kubfu's scrolls (no Kubfu in Cobblemon 1.8.4) and the Poké Puffs and Shalour Sable that Cobblemon 1.8.4 has no way to make yet.
**Player battles never cost a Pokémon** (Adrian, 2026-11-10). CobbleHardcoreMon's `trackPlayerBattles` is off in new worlds' server config, a mixin holds to it in older ones, and the companion mod's permadeath marks a Pokémon that fainted in a player battle so it stays fainted, not removed, until healed.
**The Mire's poison stays near the surface** (Adrian, 2026-11-10): `max_depth` 10 in its hazard file; leaves don't count as surface, so the mangrove canopy doesn't shelter.
### Drop chances on the JEI pages (Adrian, 2026-11-09) ### Drop chances on the JEI pages (Adrian, 2026-11-09)
The pages first showed each table's raw percentage, which isn't what a player gets. Cobblemon's `DropTable.getDrops` makes `amount` picks; in each it walks the table in order and takes the first entry that passes its percentage, so later entries are rarer than written. A count of 0 gives nothing. `tools/jei_sources.py` now works out the real chance of getting at least one, and the self-test `drop_chances_match_cobblemon` rolls Cobblemon's own code 4,000 times for every Pokémon and compares. The Pokémon in a page's corner is Cobblemon Info's own JEI ingredient, so clicking it opens that mod's pages. The pages first showed each table's raw percentage, which isn't what a player gets. Cobblemon's `DropTable.getDrops` makes `amount` picks; in each it walks the table in order and takes the first entry that passes its percentage, so later entries are rarer than written. A count of 0 gives nothing. `tools/jei_sources.py` now works out the real chance of getting at least one, and the self-test `drop_chances_match_cobblemon` rolls Cobblemon's own code 4,000 times for every Pokémon and compares. The Pokémon in a page's corner is Cobblemon Info's own JEI ingredient, so clicking it opens that mod's pages.
+94 -84
View File
@@ -4,183 +4,193 @@ Generated by `tools/drop_audit.py` (roadmap Phase 4, "unique drops"): every item
| Item | Wild Pokémon that drop it | Other sources | Consumed by | | Item | Wild Pokémon that drop it | Other sources | Consumed by |
| --- | --- | --- | --- | | --- | --- | --- | --- |
| Acacia Log (`minecraft:acacia_log`) | – | Break Acacia Log | Acacia Planks, Acacia Wood, Campfire, Charcoal, Smoker, Soul Campfire | | Acacia Log (`minecraft:acacia_log`) | Komala (jungle, ×1) | Break Acacia Log | Acacia Planks, Acacia Wood, Campfire, Charcoal, Smoker, Soul Campfire |
| Amethyst Shard (`minecraft:amethyst_shard`) | Glimmora (deep_dark, ×0-2); Sableye (button_isle, ×0-2) | Break Amethyst Cluster; Loot in Ancient City; Regenerating amethyst ore nodes on the cave floor in Dripstone Depths | Ability Shield, Blank TM, Block of Amethyst, Calibrated Sculk Sensor, Clear Amulet, Eviolite, Exp. Share, Fairy Feather … | | Amethyst Shard (`minecraft:amethyst_shard`) | Glimmora (deep_dark, ×0-2); Sableye (button_isle, ×0-2) | Break Amethyst Cluster; Loot in Ancient City; Regenerating amethyst ore nodes on the cave floor in Dripstone Depths | Ability Shield, Blank Sigil, Blank TM, Block of Amethyst, Calibrated Sculk Sensor, Clear Amulet, Eviolite, Exp. Share … |
| Apple (`minecraft:apple`) | Appletun (westmarch, ×1); Applin (westmarch, ×1); Flapple (westmarch, ×1); Munchlax (westmarch, ×0-3); Torterra (highlands, ×0-3) | Break Oak Leaves; Loot in Village Desert, Village Plains; Loot in Village Plains | Candied Apple, Golden Apple, Open-Faced Sandwich | | Apple (`minecraft:apple`) | Appletun (westmarch, ×1); Applin (westmarch, ×1); Flapple (westmarch, ×1); Munchlax (westmarch, ×0-3); Torterra (highlands, ×0-3) | Break Oak Leaves; Loot in Village Desert, Village Plains; Loot in Village Plains | Candied Apple, Golden Apple, Open-Faced Sandwich |
| Armadillo Scute (`minecraft:armadillo_scute`) | Sandshrew (sunscorch, ×0-1); Sandslash (sunscorch, ×0-2) | Use c:tools/brush on your Hakamo-o; Use c:tools/brush on your Jangmo-o; Use c:tools/brush on your Kommo-o; Use c:tools/brush on your Sandshrew; Use c:tools/brush on your Sandslash | Assault Vest, Protector, Wolf Armor | | Armadillo Scute (`minecraft:armadillo_scute`) | Sandshrew (frostpeak, sunscorch, ×0-1); Sandslash (sunscorch, ×0-2) | Use c:tools/brush on your Hakamo-o; Use c:tools/brush on your Jangmo-o; Use c:tools/brush on your Kommo-o; Use c:tools/brush on your Sandshrew; Use c:tools/brush on your Sandslash | Assault Vest, Protector, Wolf Armor |
| Arrow (`minecraft:arrow`) | – | Crafting; Loot in Decaying Crypt Ruins (cobblemon), Deserted Gimmi Tower (cobblemon), Deserted Monument Ruins (cobblemon), Deserted Tower Ruins (cobblemon), Frozen Gimmi Tower (cobblemon), Lush Gimmi Tower (cobblemon) and 10 more; Loot in Jungle Pyramid; Loot in Pillager Outpost; Loot in Trial Chambers | Spectral Arrow | | Arrow (`minecraft:arrow`) | – | Crafting; Loot in Decaying Crypt Ruins (cobblemon), Deserted Gimmi Tower (cobblemon), Deserted Monument Ruins (cobblemon), Deserted Tower Ruins (cobblemon), Frozen Gimmi Tower (cobblemon), Lush Gimmi Tower (cobblemon) and 10 more; Loot in Jungle Pyramid; Loot in Pillager Outpost; Loot in Trial Chambers | Spectral Arrow |
| Aspear Berry (`cobblemon:aspear_berry`) | Carvanha (shallows, 2.5%); Cloyster (deep_sea, 5%); Crabrawler (shallows, 2.5%); Cryogonal (frostpeak, 5%); Jynx (frostpeak, 5%); Lapras (deep_sea, 5%); Mr. Rime (deep_dark, 10%); Octillery (deep_sea, 5%); Remoraid (deep_sea, 2.5%); Shellder (deep_sea, 2.5%); Vanillish (frostpeak, 5%); Vanilluxe (frostpeak, 10%) | Break Aspear Berry; Wild berry trees in Cherry Grove, Jagged Peaks, Windswept Hills | Berry Juice, Candied Berries, Ice Heal, Yellow Dye | | Aspear Berry (`cobblemon:aspear_berry`) | Avalugg (frostpeak, 5%); Beartic (frostpeak, 5%); Carvanha (shallows, 2.5%); Cetitan (frostpeak, 5%); Cloyster (deep_sea, 5%); Crabrawler (shallows, 2.5%); Cryogonal (frostpeak, 5%); Dewgong (deep_sea, 5%); Eiscue (frostpeak, 5%); Jynx (frostpeak, 5%); Lapras (deep_sea, 5%); Mamoswine (frostpeak, 10%); Mr. Rime (deep_dark, 10%); Octillery (deep_sea, 5%); Piloswine (frostpeak, 5%); Remoraid (deep_sea, 2.5%); Seel (deep_sea, 2.5%); Shellder (deep_sea, 2.5%); Vanillish (frostpeak, 5%); Vanilluxe (frostpeak, 10%) | Break Aspear Berry; Wild berry trees in Cherry Grove, Jagged Peaks, Windswept Hills | Berry Juice, Candied Berries, Ice Heal, Yellow Dye |
| Babiri Berry (`cobblemon:babiri_berry`) | Carbink (deep_dark, 5%); Clefable (dripstone, 10%); Clefairy (dripstone, 5%); Cleffa (dripstone, 2.5%); Froslass (frostpeak, 5%); Glalie (frostpeak, 5%); Granbull (lush_caves, 5%); Lycanroc (frostpeak, 5%); Mr. Mime (deep_dark, 5%); Patrat (southwold, 2.5%); Slurpuff (dripstone, 5%); Snubbull (lush_caves, 2.5%); Swirlix (dripstone, 2.5%) | Break Babiri Berry; Wild berry trees in Cherry Grove, Jagged Peaks, Windswept Hills | Berry Juice, Candied Berries, Lime Dye | | Babiri Berry (`cobblemon:babiri_berry`) | Carbink (deep_dark, 5%); Clefable (dripstone, 10%); Clefairy (dripstone, 5%); Cleffa (dripstone, 2.5%); Froslass (frostpeak, 5%); Glalie (frostpeak, 5%); Granbull (lush_caves, 5%); Hatenna (mire, 2.5%); Hattrem (mire, 5%); Lycanroc (frostpeak, 5%); Mr. Mime (deep_dark, 5%); Patrat (southwold, 2.5%); Slurpuff (dripstone, 5%); Snubbull (lush_caves, 2.5%); Swirlix (dripstone, 2.5%) | Break Babiri Berry; Wild berry trees in Cherry Grove, Jagged Peaks, Windswept Hills | Berry Juice, Candied Berries, Lime Dye |
| Bamboo (`minecraft:bamboo`) | Spinda (frostpeak, ×0-2) | Break Bamboo; Fishing; Fishing with a Poké Rod; Loot in Jungle Pyramid; Loot in Shipwreck, Shipwreck Beached | Block of Bamboo, Scaffolding, Stick | | Bamboo (`minecraft:bamboo`) | Pancham (jungle, ×0-1); Spinda (frostpeak, ×0-2) | Break Bamboo; Fishing; Fishing with a Poké Rod; Loot in Jungle Pyramid; Loot in Shipwreck, Shipwreck Beached | Block of Bamboo, Scaffolding, Stick |
| Basalt (`minecraft:basalt`) | Magcargo (basalt, ×1) | Break Basalt | Polished Basalt, Smooth Basalt | | Basalt (`minecraft:basalt`) | Magcargo (basalt, ×1) | Break Basalt | Polished Basalt, Smooth Basalt |
| Big Root (`cobblemon:big_root`) | Bellsprout (jungle, 2.5%); Carnivine (lush_caves, 5%); Dugtrio (basalt, 5%); Lileep (lush_caves, 5%); Tangela (jungle, 2.5%); Tangrowth (jungle, 5%); Weepinbell (jungle, 5%) | Break Big Root; Brush suspicious blocks in Prehistoric Birch Tree (worldgen feature); Brush suspicious blocks in Prehistoric Dripstone Oasis (worldgen feature); Brush suspicious blocks in Prehistoric Enhydro Agate (worldgen feature); Brush suspicious blocks in Prehistoric Eroded Pillar (worldgen feature) … | Remedy | | Big Root (`cobblemon:big_root`) | Bellsprout (jungle, 2.5%); Carnivine (lush_caves, 5%); Diglett (highlands, 2.5%); Dugtrio (basalt, 5%); Lileep (lush_caves, 5%); Smoliv (southwold, 2.5%); Tangela (jungle, 2.5%); Tangrowth (jungle, 5%); Weepinbell (jungle, 5%) | Break Big Root; Brush suspicious blocks in Prehistoric Birch Tree (worldgen feature); Brush suspicious blocks in Prehistoric Dripstone Oasis (worldgen feature); Brush suspicious blocks in Prehistoric Enhydro Agate (worldgen feature); Brush suspicious blocks in Prehistoric Eroded Pillar (worldgen feature) … | Remedy |
| Black Augurite (`cobblemon:black_augurite`) | Coalossal (deep_dark, 10%); Geodude (dripstone, 2.5%); Gigalith (deep_dark, 10%); Golem (dripstone, 10%); Graveler (dripstone, 5%) | Brush suspicious blocks in Prehistoric Eroded Pillar (worldgen feature); Brush suspicious blocks in Prehistoric Sandy Den (worldgen feature) | Obsidian, Stone Axe | | Black Augurite (`cobblemon:black_augurite`) | Coalossal (deep_dark, 10%); Geodude (dripstone, westmarch, 2.5%); Gigalith (deep_dark, 10%); Golem (dripstone, 10%); Graveler (dripstone, 5%) | Brush suspicious blocks in Prehistoric Eroded Pillar (worldgen feature); Brush suspicious blocks in Prehistoric Sandy Den (worldgen feature) | Obsidian, Stone Axe |
| Black Belt (`cobblemon:black_belt`) | Hariyama (frostpeak, 5%); Hitmonchan (frostpeak, 5%); Hitmonlee (frostpeak, 5%); Hitmontop (frostpeak, 5%); Meditite (button_isle, 2.5%); Sawk (frostpeak, 5%); Scrafty (sunscorch, 5%); Scraggy (sunscorch, 2.5%); Throh (frostpeak, 5%) | Crafting | Expert Belt | | Black Belt (`cobblemon:black_belt`) | Hariyama (frostpeak, 5%); Hitmonchan (frostpeak, 5%); Hitmonlee (frostpeak, 5%); Hitmontop (frostpeak, 5%); Meditite (button_isle, 2.5%); Sawk (frostpeak, 5%); Scrafty (sunscorch, 5%); Scraggy (sunscorch, 2.5%); Throh (frostpeak, 5%) | Crafting | Expert Belt |
| Black Sludge (`cobblemon:black_sludge`) | Croagunk (mire, 2.5%); Grimer (southwold, 2.5%); Koffing (southwold, 2.5%); Revavroom (deep_dark, 5%); Toxicroak (mire, 5%); Trubbish (lush_caves, 2.5%) | – | Toxic Orb | | Black Sludge (`cobblemon:black_sludge`) | Croagunk (mire, 2.5%); Grimer (southwold, 2.5%); Koffing (southwold, 2.5%); Revavroom (deep_dark, 5%); Toxicroak (mire, 5%); Trubbish (lush_caves, 2.5%) | – | Toxic Orb |
| Black Wool (`minecraft:black_wool`) | – | Break Black Wool; Crafting (shapeless) | Air Balloon, Black Banner, Black Bed, Black Carpet, Blue Wool, Brown Wool, Choice Scarf, Covert Cloak … | | Black Wool (`minecraft:black_wool`) | – | Break Black Wool; Crafting (shapeless) | Air Balloon, Black Banner, Black Bed, Black Carpet, Blue Wool, Brown Wool, Choice Scarf, Covert Cloak … |
| Blaze Powder (`minecraft:blaze_powder`) | Braixen (sunscorch, ×0-2); Centiskorch (basalt, 5%); Charizard (basalt, ×0-3); Delphox (sunscorch, ×0-3); Fennekin (sunscorch, ×0-1); Heatmor (basalt, 5%); Houndoom (basalt, 5%); Larvesta (sunscorch, 2.5%); Magmortar (basalt, 10%); Ponyta (highlands, 2.5%) | Crafting (shapeless); Use c:tools/brush on your Volcarona | brewing: Strength; stand fuel, Expert Belt, Eye of Ender, Fire Charge, Flame Orb, Focus Band, Focus Sash, Magma Cream … | | Blaze Powder (`minecraft:blaze_powder`) | Braixen (sunscorch, ×0-2); Centiskorch (basalt, 5%); Charizard (basalt, ×0-3); Delphox (sunscorch, ×0-3); Fennekin (sunscorch, ×0-1); Heatmor (basalt, 5%); Houndoom (basalt, 5%); Larvesta (sunscorch, 2.5%); Litleo (sunscorch, 2.5%); Magmortar (basalt, 10%); Ponyta (highlands, 2.5%); Pyroar (sunscorch, 5%) | Crafting (shapeless); Use c:tools/brush on your Volcarona | brewing: Strength; stand fuel, Expert Belt, Eye of Ender, Fire Charge, Flame Orb, Focus Band, Focus Sash, Magma Cream … |
| Blaze Rod (`minecraft:blaze_rod`) | Torkoal (basalt, 25%) | – | Blaze Powder, Brewing Stand, Choice Specs, Copper Bulb, End Rod, Exposed Copper Bulb, Oxidized Copper Bulb, Waxed Copper Bulb … | | Blaze Rod (`minecraft:blaze_rod`) | Torkoal (basalt, 25%) | – | Blaze Powder, Brewing Stand, Choice Specs, Copper Bulb, End Rod, Exposed Copper Bulb, Oxidized Copper Bulb, Waxed Copper Bulb … |
| Blue Ice (`minecraft:blue_ice`) | – | Break Blue Ice; Crafting (shapeless) | Never-Melt Ice | | Blue Ice (`minecraft:blue_ice`) | Eiscue (frostpeak, ×1) | Break Blue Ice; Crafting (shapeless) | Never-Melt Ice |
| Blue Wool (`minecraft:blue_wool`) | Herdier (southwold, ×1-2); Lillipup (southwold, ×1) | Break Blue Wool; Crafting (shapeless) | Air Balloon, Black Wool, Blue Banner, Blue Bed, Blue Carpet, Brown Wool, Choice Scarf, Covert Cloak … | | Blue Wool (`minecraft:blue_wool`) | Herdier (southwold, ×1-2); Lillipup (southwold, ×1) | Break Blue Wool; Crafting (shapeless) | Air Balloon, Black Wool, Blue Banner, Blue Bed, Blue Carpet, Brown Wool, Choice Scarf, Covert Cloak … |
| Bluk Berry (`cobblemon:bluk_berry`) | Drapion (sunscorch, 5%); Honchkrow (deep_dark, 5%); Illumise (mire, 5%); Liepard (basalt, 5%); Sawk (frostpeak, 5%); Skorupi (sunscorch, 2.5%); Wimpod (southwold, 2.5%) | Break Bluk Berry; Wild berry trees in Cherry Grove, Jagged Peaks, Windswept Hills | Berry Juice, Candied Berries, Purple Dye | | Bluk Berry (`cobblemon:bluk_berry`) | Drapion (sunscorch, 5%); Honchkrow (deep_dark, 5%); Illumise (mire, 5%); Liepard (basalt, 5%); Sawk (frostpeak, 5%); Skorupi (sunscorch, 2.5%); Wimpod (southwold, 2.5%) | Break Bluk Berry; Wild berry trees in Cherry Grove, Jagged Peaks, Windswept Hills | Berry Juice, Candied Berries, Purple Dye |
| Bone (`minecraft:bone`) | Arcanine (basalt, ×0-2); Cranidos (lush_caves, ×0-1); Cubone (sunscorch, ×0-1); Electrike (highlands, ×0-1); Furfrou (southwold, ×0-2); Granbull (lush_caves, ×0-2); Herdier (southwold, ×0-2); Houndoom (basalt, ×0-2); Houndstone (deep_dark, ×1-3); Lillipup (southwold, ×0-1); Lycanroc (frostpeak, ×0-2); Mabosstiff (deep_dark, ×0-2); Manectric (highlands, ×0-2); Marowak (sunscorch, ×1); Mightyena (highlands, ×0-2); Shieldon (lush_caves, ×0-1); Snubbull (lush_caves, ×0-1); Yamper (southwold, ×0-1) | Brush suspicious blocks in Prehistoric Birch Tree (worldgen feature); Brush suspicious blocks in Prehistoric Dripstone Oasis (worldgen feature); Brush suspicious blocks in Prehistoric Enhydro Agate (worldgen feature); Brush suspicious blocks in Prehistoric Eroded Pillar (worldgen feature); Brush suspicious blocks in Prehistoric Hydrothermal Vents (worldgen feature) … | Bone Meal, Sharp Beak | | Bone (`minecraft:bone`) | Arcanine (basalt, ×0-2); Cranidos (lush_caves, ×0-1); Cubone (sunscorch, ×0-1); Electrike (highlands, ×0-1); Furfrou (southwold, ×0-2); Granbull (lush_caves, ×0-2); Growlithe (sunscorch, ×0-1); Herdier (southwold, ×0-2); Houndoom (basalt, ×0-2); Houndstone (deep_dark, ×1-3); Lillipup (southwold, ×0-1); Lycanroc (frostpeak, ×0-2); Mabosstiff (deep_dark, ×0-2); Manectric (highlands, ×0-2); Marowak (sunscorch, ×1); Mightyena (highlands, ×0-2); Shieldon (lush_caves, ×0-1); Snubbull (lush_caves, ×0-1); Yamper (southwold, ×0-1) | Brush suspicious blocks in Prehistoric Birch Tree (worldgen feature); Brush suspicious blocks in Prehistoric Dripstone Oasis (worldgen feature); Brush suspicious blocks in Prehistoric Enhydro Agate (worldgen feature); Brush suspicious blocks in Prehistoric Eroded Pillar (worldgen feature); Brush suspicious blocks in Prehistoric Hydrothermal Vents (worldgen feature) … | Bone Meal, Sharp Beak |
| Bone Block (`minecraft:bone_block`) | Wailmer (deep_sea, ×0-1); Wailord (deep_sea, ×0-2) | Break Bone Block; Crafting | Bone Meal | | Bone Block (`minecraft:bone_block`) | Cetitan (frostpeak, ×0-2); Wailmer (deep_sea, ×0-1); Wailord (deep_sea, ×0-2) | Break Bone Block; Crafting | Bone Meal |
| Bone Meal (`minecraft:bone_meal`) | Alomomola (shallows, 5%); Arrokuda (mire, 5%); Barraskewda (mire, 10%); Basculegion (frostpeak, 5%); Basculin (frostpeak, 5%); Bruxish (shallows, 5%); Dondozo (mire, 5%); Finneon (shallows, 5%); Goldeen (southwold, 5%); Gyarados (westmarch, 10%); Kabuto (lush_caves, 5%); Magikarp (westmarch, 5%); Milotic (deep_dark, 10%); Omanyte (lush_caves, 5%); Remoraid (deep_sea, 5%); Tatsugiri (mire, 5%); Veluza (deep_sea, 5%); Wishiwashi (shallows, 5%) | Break Composter; Crafting (shapeless); Loot in Trial Chambers | Bone Block, Cleanse Tag, Dire Hit, Growth Mulch, Guard Spec, Mulch, Terrain Extender, White Dye … | | Bone Meal (`minecraft:bone_meal`) | Alomomola (deep_sea, 5%); Barraskewda (deep_sea, 10%); Basculegion (frostpeak, 5%); Basculin (frostpeak, 5%); Bruxish (shallows, 5%); Dondozo (mire, 5%); Finneon (shallows, 5%); Goldeen (southwold, 5%); Gyarados (westmarch, 10%); Kabuto (lush_caves, 5%); Magikarp (westmarch, 5%); Milotic (deep_dark, 10%); Omanyte (lush_caves, 5%); Remoraid (deep_sea, 5%); Tatsugiri (mire, 5%); Veluza (deep_sea, 5%); Wishiwashi (shallows, 5%) | Break Composter; Crafting (shapeless); Loot in Trial Chambers | Bone Block, Cleanse Tag, Dire Hit, Growth Mulch, Guard Spec, Mulch, Terrain Extender, White Dye … |
| Bowl (`minecraft:bowl`) | – | Brush suspicious blocks in Deserted House Ruins (cobblemon); Brush suspicious blocks in Deserted Tower Ruins (cobblemon); Brush suspicious blocks in Deserted Town Center Ruins (cobblemon); Crafting; Fishing … | Beetroot Soup, Berry Juice, Leek and Potato Stew, Luminous Moss, Mushroom Stew, Rabbit Stew, Sinister Tea, Suspicious Stew … | | Bowl (`minecraft:bowl`) | – | Brush suspicious blocks in Deserted House Ruins (cobblemon); Brush suspicious blocks in Deserted Tower Ruins (cobblemon); Brush suspicious blocks in Deserted Town Center Ruins (cobblemon); Crafting; Fishing … | Beetroot Soup, Berry Juice, Leek and Potato Stew, Luminous Moss, Mushroom Stew, Rabbit Stew, Sinister Tea, Suspicious Stew … |
| Bread (`minecraft:bread`) | Dachsbun (dripstone, ×0-2); Fidough (dripstone, ×0-1) | Crafting; Loot in Decaying Crypt Ruins (cobblemon), Mossy Oubliette Ruins (cobblemon), Unstable Cave Ruins (cobblemon); Loot in Mineshaft, Mineshaft Mesa; Loot in Monster Room (worldgen feature); Loot in Village Desert … | Open-Faced Sandwich, Vivichoke Dip | | Bread (`minecraft:bread`) | Dachsbun (dripstone, ×0-2); Fidough (dripstone, ×0-1) | Crafting; Loot in Decaying Crypt Ruins (cobblemon), Mossy Oubliette Ruins (cobblemon), Unstable Cave Ruins (cobblemon); Loot in Mineshaft, Mineshaft Mesa; Loot in Monster Room (worldgen feature); Loot in Village Desert … | Open-Faced Sandwich, Vivichoke Dip |
| Breeze Rod (`minecraft:breeze_rod`) | Whimsicott (highlands, 10%) | – | brewing: Wind Charging, Mace, Smithing Template, Wind Charge | | Breeze Rod (`minecraft:breeze_rod`) | Whimsicott (highlands, 10%) | – | brewing: Wind Charging, Mace, Smithing Template, Wind Charge |
| Bright Powder (`cobblemon:bright_powder`) | Beautifly (button_isle, 5%); Illumise (mire, 5%); Morelull (lush_caves, 2.5%); Scatterbug (button_isle, 2.5%); Shiinotic (lush_caves, 5%); Spewpa (button_isle, 2.5%); Volbeat (mire, 5%) | Break Bright Powder; Smelting | Glow Item Frame, Pokédex, Pokédex, Pokédex, Pokédex, Pokédex, Pokédex, Pokédex | | Bright Powder (`cobblemon:bright_powder`) | Beautifly (button_isle, 5%); Illumise (mire, 5%); Morelull (lush_caves, 2.5%); Scatterbug (button_isle, 2.5%); Shiinotic (lush_caves, 5%); Spewpa (button_isle, 2.5%); Volbeat (mire, 5%) | Break Bright Powder; Smelting | Glow Item Frame, Pokédex, Pokédex, Pokédex, Pokédex, Pokédex, Pokédex, Pokédex |
| Brown Mushroom (`minecraft:brown_mushroom`) | Breloom (westmarch, ×0-2); Morelull (lush_caves, ×0-1); Shiinotic (lush_caves, ×0-2); Shroomish (westmarch, ×0-1) | Break Brown Mushroom; Break Brown Mushroom Block | Fermented Spider Eye, Mushroom Stew, Poké Bait, Rabbit Stew, Suspicious Stew | | Brown Mushroom (`minecraft:brown_mushroom`) | Breloom (westmarch, ×0-2); Morelull (lush_caves, ×0-1); Shiinotic (lush_caves, ×0-2); Shroomish (westmarch, ×0-1); Toedscool (mire, ×0-1); Toedscruel (mire, ×0-2) | Break Brown Mushroom; Break Brown Mushroom Block; Use c:tools/brush on your Toedscool; Use c:tools/brush on your Toedscruel | Fermented Spider Eye, Mushroom Stew, Poké Bait, Rabbit Stew, Suspicious Stew |
| Brown Wool (`minecraft:brown_wool`) | Bouffalant (highlands, ×1-2) | Break Brown Wool; Crafting (shapeless) | Air Balloon, Black Wool, Blue Wool, Brown Banner, Brown Bed, Brown Carpet, Choice Scarf, Covert Cloak … | | Brown Wool (`minecraft:brown_wool`) | Bouffalant (highlands, ×1-2); Mamoswine (frostpeak, ×2-3); Piloswine (frostpeak, ×1-2) | Break Brown Wool; Crafting (shapeless) | Air Balloon, Black Wool, Blue Wool, Brown Banner, Brown Bed, Brown Carpet, Choice Scarf, Covert Cloak … |
| Cactus (`minecraft:cactus`) | Cacnea (sunscorch, ×0-1); Cacturne (sunscorch, ×0-2); Maractus (sunscorch, ×0-2) | Break Cactus; Break Potted Cactus; Loot in Village Desert; Use c:fertilizers on your Cacnea; Use c:fertilizers on your Cacturne | Green Dye | | Cactus (`minecraft:cactus`) | Cacnea (sunscorch, ×0-1); Cacturne (sunscorch, ×0-2); Maractus (sunscorch, ×0-2) | Break Cactus; Break Potted Cactus; Loot in Village Desert; Use c:fertilizers on your Cacnea; Use c:fertilizers on your Cacturne | Green Dye |
| Candle (`minecraft:candle`) | – | Break Candle; Crafting; Loot in Ancient City | Black Candle, Blue Candle, Brown Candle, Cyan Candle, Gray Candle, Green Candle, Light Blue Candle, Light Gray Candle … | | Candle (`minecraft:candle`) | Chandelure (deep_dark, ×1-3); Lampent (deep_dark, ×1) | Break Candle; Crafting; Loot in Ancient City | Black Candle, Blue Candle, Brown Candle, Cyan Candle, Gray Candle, Green Candle, Light Blue Candle, Light Gray Candle … |
| Carrot (`minecraft:carrot`) | Buneary (westmarch, 2.5%); Bunnelby (southwold, 2.5%) | Break Carrots; Loot in Pillager Outpost; Loot in Shipwreck, Shipwreck Beached | Carrot on a Stick, Golden Carrot, Rabbit Stew, Smoked-Tail Curry | | Carrot (`minecraft:carrot`) | Buneary (westmarch, 2.5%); Bunnelby (southwold, 2.5%) | Break Carrots; Loot in Pillager Outpost; Loot in Shipwreck, Shipwreck Beached | Carrot on a Stick, Golden Carrot, Rabbit Stew, Smoked-Tail Curry |
| Chameleon Molt (`cold_sweat:chameleon_molt`) | none (Cold Sweat's chameleon armour and Thermolith are not part of the pack's progression) | – | Chameleon Scale Boots, Chameleon Scale Chestplate, Chameleon Scale Helmet, Chameleon Scale Leggings, Thermolith | | Chameleon Molt (`cold_sweat:chameleon_molt`) | Kecleon (jungle, 15%) | – | Chameleon Scale Boots, Chameleon Scale Chestplate, Chameleon Scale Helmet, Chameleon Scale Leggings, Thermolith |
| Charcoal (`minecraft:charcoal`) | Ninetales (highlands, 5%); Turtonator (basalt, 5%); Vulpix (highlands, 2.5%) | Break Campfire; Brush suspicious blocks in Prehistoric Birch Tree (worldgen feature); Brush suspicious blocks in Prehistoric Oak Tree (worldgen feature); Smelting | Campfire, Charcoal Stick, Fire Charge, Soul Torch, Torch | | Charcoal (`minecraft:charcoal`) | Armarouge (basalt, ×0-2); Ninetales (highlands, 5%); Turtonator (basalt, 5%); Vulpix (frostpeak, highlands, 2.5%) | Break Campfire; Brush suspicious blocks in Prehistoric Birch Tree (worldgen feature); Brush suspicious blocks in Prehistoric Oak Tree (worldgen feature); Smelting | Campfire, Charcoal Stick, Fire Charge, Poké Ball, Soul Torch, Torch |
| Charti Berry (`cobblemon:charti_berry`) | Centiskorch (basalt, 5%); Combee (button_isle, 2.5%); Delibird (frostpeak, 5%); Fearow (sunscorch, 5%); Frosmoth (frostpeak, 5%); Larvesta (sunscorch, 2.5%); Ledyba (button_isle, 2.5%); Taillow (southwold, 2.5%); Torkoal (basalt, 5%); Yanma (mire, 2.5%); Yanmega (mire, 5%) | Break Charti Berry; Wild berry trees in Badlands, Beach, Cherry Grove, Desert, Dripstone Caves, Jagged Peaks and 1 more | Berry Juice, Brown Dye, Candied Berries | | Charti Berry (`cobblemon:charti_berry`) | Centiskorch (basalt, 5%); Combee (button_isle, 2.5%); Delibird (frostpeak, 5%); Fearow (sunscorch, 5%); Frosmoth (frostpeak, 5%); Larvesta (sunscorch, 2.5%); Ledyba (button_isle, 2.5%); Taillow (southwold, 2.5%); Torkoal (basalt, 5%); Yanma (mire, 2.5%); Yanmega (mire, 5%) | Break Charti Berry; Wild berry trees in Badlands, Beach, Cherry Grove, Desert, Dripstone Caves, Jagged Peaks and 1 more | Berry Juice, Brown Dye, Candied Berries |
| Cheri Berry (`cobblemon:cheri_berry`) | Ampharos (highlands, 10%); Cherrim (frostpeak, 5%); Cutiefly (lush_caves, 2.5%); Dunsparce (southwold, 2.5%); Electabuzz (frostpeak, 5%); Electivire (frostpeak, 10%); Electrike (highlands, 2.5%); Flaaffy (highlands, 5%); Glameow (southwold, 2.5%); Manectric (highlands, 5%); Mareep (highlands, 2.5%); Minun (southwold, 5%); Pachirisu (button_isle, 5%); Plusle (southwold, 5%); Ribombee (lush_caves, 5%); Scatterbug (button_isle, 2.5%); Spewpa (button_isle, 2.5%) | Break Cheri Berry; Wild berry trees in Plains | Berry Juice, Candied Berries, Paralyze Heal, Red Dye | | Cheri Berry (`cobblemon:cheri_berry`) | Ampharos (highlands, 10%); Blitzle (highlands, 2.5%); Cherrim (frostpeak, 5%); Cutiefly (lush_caves, 2.5%); Dedenne (westmarch, 5%); Dunsparce (southwold, 2.5%); Electabuzz (frostpeak, 5%); Electivire (frostpeak, 10%); Electrike (highlands, 2.5%); Flaaffy (highlands, 5%); Foongus (lush_caves, 2.5%); Glameow (southwold, 2.5%); Manectric (highlands, 5%); Mareep (highlands, 2.5%); Minun (southwold, 5%); Pachirisu (button_isle, 5%); Plusle (southwold, 5%); Ribombee (lush_caves, 5%); Scatterbug (button_isle, 2.5%); Spewpa (button_isle, 2.5%); Zebstrika (highlands, 5%) | Break Cheri Berry; Wild berry trees in Plains | Berry Juice, Candied Berries, Paralyze Heal, Red Dye |
| Chesto Berry (`cobblemon:chesto_berry`) | Drowzee (dripstone, 2.5%); Hippopotas (sunscorch, 2.5%); Hippowdon (sunscorch, 5%); Hypno (dripstone, 5%); Mimikyu (deep_dark, 5%); Minccino (southwold, 2.5%); Munchlax (westmarch, 2.5%); Munna (dripstone, 2.5%); Musharna (dripstone, 5%); Politoed (highlands, 10%); Poliwag (highlands, 2.5%); Poliwhirl (highlands, 5%); Poliwrath (highlands, 10%); Slakoth (jungle, 2.5%); Slowpoke (mire, 2.5%); Spinda (frostpeak, 5%); Vigoroth (jungle, 5%); Wailmer (deep_sea, 2.5%); Wailord (deep_sea, 5%); Whismur (southwold, 2.5%) | Break Chesto Berry; Wild berry trees in Cherry Grove, Forest | Awakening, Berry Juice, Blue Dye, Candied Berries | | Chesto Berry (`cobblemon:chesto_berry`) | Drowzee (dripstone, 2.5%); Hippopotas (sunscorch, 2.5%); Hippowdon (sunscorch, 5%); Hypno (dripstone, 5%); Komala (jungle, 5%); Mimikyu (deep_dark, 5%); Minccino (southwold, 2.5%); Munchlax (westmarch, 2.5%); Munna (dripstone, 2.5%); Musharna (dripstone, 5%); Politoed (highlands, 10%); Poliwag (highlands, 2.5%); Poliwhirl (highlands, 5%); Poliwrath (highlands, 10%); Sealeo (deep_sea, 5%); Slakoth (jungle, 2.5%); Slowpoke (jungle, mire, 2.5%); Spinda (frostpeak, 5%); Vigoroth (jungle, 5%); Wailmer (deep_sea, 2.5%); Wailord (deep_sea, 5%); Walrein (deep_sea, 10%); Whismur (southwold, 2.5%) | Break Chesto Berry; Wild berry trees in Cherry Grove, Forest | Awakening, Berry Juice, Blue Dye, Candied Berries |
| Chilan Berry (`cobblemon:chilan_berry`) | Bunnelby (southwold, 2.5%); Farfetch'd (southwold, 5%); Herdier (southwold, 5%); Hoothoot (button_isle, 2.5%); Lillipup (southwold, 2.5%); Maushold (westmarch, 5%); Pidgeotto (highlands, 5%); Pidgey (highlands, 2.5%); Rattata (button_isle, 2.5%); Squawkabilly (southwold, 5%); Tandemaus (westmarch, 2.5%) | Break Chilan Berry; Wild berry trees in Cherry Grove, Forest, Plains | Berry Juice, Candied Berries, Yellow Dye | | Chilan Berry (`cobblemon:chilan_berry`) | Bunnelby (southwold, 2.5%); Farfetch'd (southwold, 5%); Herdier (southwold, 5%); Hoothoot (button_isle, 2.5%); Kangaskhan (sunscorch, 5%); Lillipup (southwold, 2.5%); Maushold (westmarch, 5%); Pidgeotto (highlands, 5%); Pidgey (highlands, 2.5%); Rattata (button_isle, 2.5%); Squawkabilly (southwold, 5%); Tandemaus (westmarch, 2.5%) | Break Chilan Berry; Wild berry trees in Cherry Grove, Forest, Plains | Berry Juice, Candied Berries, Yellow Dye |
| Chople Berry (`cobblemon:chople_berry`) | Buneary (westmarch, 2.5%); Lucario (frostpeak, 5%); Pawniard (sunscorch, 2.5%); Probopass (deep_dark, 5%); Pupitar (frostpeak, 5%); Sneasel (frostpeak, 2.5%); Tyranitar (frostpeak, 10%) | Break Chople Berry; Wild berry trees in Cherry Grove, Jagged Peaks, Windswept Hills | Berry Juice, Candied Berries, Red Dye | | Chople Berry (`cobblemon:chople_berry`) | Aron (dripstone, 2.5%); Bewear (jungle, 5%); Buneary (westmarch, 2.5%); Lairon (dripstone, 5%); Lucario (frostpeak, 5%); Pawniard (sunscorch, 2.5%); Probopass (deep_dark, 5%); Pupitar (frostpeak, 5%); Sneasel (frostpeak, 2.5%); Stufful (jungle, 2.5%); Tyranitar (frostpeak, 10%) | Break Chople Berry; Wild berry trees in Cherry Grove, Jagged Peaks, Windswept Hills | Berry Juice, Candied Berries, Red Dye |
| Chorus Fruit (`minecraft:chorus_fruit`) | – | Break chorus plants on the End's outer islands (vanilla End generation) | Popped Chorus Fruit |
| Clay Ball (`minecraft:clay_ball`) | Baltoy (dripstone, ×0-1); Barboach (lush_caves, ×0-1); Claydol (dripstone, ×0-2); Donphan (sunscorch, ×0-2); Golett (highlands, ×0-1); Marshtomp (mire, ×0-2); Mudbray (highlands, ×0-1); Mudkip (mire, ×0-1); Mudsdale (highlands, ×0-2); Palpitoad (sunscorch, ×0-2); Phanpy (sunscorch, ×0-1); Seismitoad (sunscorch, ×0-3); Shellos (shallows, ×0-1); Swampert (mire, ×0-3); Wooper (button_isle, ×0-1) | Break Clay; Loot in Village Desert | Brick, Chipped Pot, Clay, Cracked Pot, Light Clay, Masterpiece Teacup, Metal Coat, Unremarkable Teacup | | Clay Ball (`minecraft:clay_ball`) | Baltoy (dripstone, ×0-1); Barboach (lush_caves, ×0-1); Claydol (dripstone, ×0-2); Donphan (sunscorch, ×0-2); Golett (highlands, ×0-1); Marshtomp (mire, ×0-2); Mudbray (highlands, ×0-1); Mudkip (mire, ×0-1); Mudsdale (highlands, ×0-2); Palpitoad (sunscorch, ×0-2); Phanpy (sunscorch, ×0-1); Seismitoad (sunscorch, ×0-3); Shellos (shallows, ×0-1); Swampert (mire, ×0-3); Wooper (button_isle, ×0-1) | Break Clay; Loot in Village Desert | Brick, Chipped Pot, Clay, Cracked Pot, Light Clay, Masterpiece Teacup, Metal Coat, Unremarkable Teacup |
| Coal (`minecraft:coal`) | Coalossal (deep_dark, ×0-3); Torkoal (basalt, ×0-2) | Blast furnace; Break Coal Ore; Brush suspicious blocks in Ocean Ruin Cold; Brush suspicious blocks in Ocean Ruin Warm; Brush suspicious blocks in Prehistoric Birch Tree (worldgen feature) … | Block of Coal, Campfire, Fire Charge, Soul Torch, Torch | | Coal (`minecraft:coal`) | Coalossal (deep_dark, ×0-3); Torkoal (basalt, ×0-2) | Blast furnace; Break Coal Ore; Break Deepslate Coal Ore; Brush suspicious blocks in Ocean Ruin Cold; Brush suspicious blocks in Ocean Ruin Warm … | Block of Coal, Campfire, Fire Charge, Poké Ball, Soul Torch, Torch |
| Coba Berry (`cobblemon:coba_berry`) | Eldegoss (frostpeak, 5%); Hawlucha (southwold, 5%); Heracross (southwold, 5%); Kricketot (button_isle, 2.5%); Kricketune (button_isle, 5%); Lokix (highlands, 5%); Paras (lush_caves, 2.5%); Parasect (lush_caves, 5%); Sewaddle (westmarch, 2.5%); Sunkern (button_isle, 2.5%); Swadloon (westmarch, 5%) | Break Coba Berry; Wild berry trees in Cherry Grove, Forest, Jagged Peaks, Plains | Berry Juice, Candied Berries, Light Blue Dye | | Coba Berry (`cobblemon:coba_berry`) | Eldegoss (frostpeak, 5%); Hawlucha (southwold, 5%); Heracross (southwold, 5%); Kricketot (button_isle, 2.5%); Kricketune (button_isle, 5%); Lokix (highlands, 5%); Paras (lush_caves, 2.5%); Parasect (lush_caves, 5%); Sewaddle (westmarch, 2.5%); Sunkern (button_isle, 2.5%); Swadloon (westmarch, 5%) | Break Coba Berry; Wild berry trees in Cherry Grove, Forest, Jagged Peaks, Plains | Berry Juice, Candied Berries, Light Blue Dye |
| Colbur Berry (`cobblemon:colbur_berry`) | Baltoy (dripstone, 2.5%); Chingling (southwold, 2.5%); Claydol (dripstone, 5%); Elgyem (dripstone, 2.5%); Espurr (dripstone, 2.5%); Golett (highlands, 2.5%); Lunatone (dripstone, 5%); Meowstic (dripstone, 5%); Sigilyph (dripstone, 5%); Solrock (dripstone, 5%); Swoobat (jungle, 5%); Woobat (jungle, 2.5%); Wynaut (button_isle, 2.5%); Zorua (highlands, 2.5%) | Break Colbur Berry; Wild berry trees in Badlands, Deep Dark | Berry Juice, Candied Berries, Magenta Dye | | Colbur Berry (`cobblemon:colbur_berry`) | Baltoy (dripstone, 2.5%); Chingling (southwold, 2.5%); Claydol (dripstone, 5%); Elgyem (dripstone, 2.5%); Espurr (dripstone, 2.5%); Golett (highlands, 2.5%); Lunatone (dripstone, 5%); Meowstic (dripstone, 5%); Sigilyph (dripstone, the_end, 5%); Solrock (dripstone, 5%); Swoobat (jungle, 5%); Woobat (jungle, 2.5%); Wynaut (button_isle, 2.5%); Zorua (frostpeak, highlands, 2.5%) | Break Colbur Berry; Wild berry trees in Badlands, Deep Dark | Berry Juice, Candied Berries, Magenta Dye |
| Copper Ingot (`minecraft:copper_ingot`) | – | Blast furnace; Brush suspicious blocks in Decaying Crypt Ruins (cobblemon); Brush suspicious blocks in Deserted Gimmi Tower (cobblemon); Brush suspicious blocks in Deserted Gimmi Tower (cobblemon), Frozen Gimmi Tower (cobblemon), Lush Gimmi Tower (cobblemon), Rooted Gimmi Tower (cobblemon), Sunscorched Gimmi Tower (cobblemon), Temperate Gimmi Tower (cobblemon); Brush suspicious blocks in Deserted Gimmi Tower (cobblemon), Rooted Gimmi Tower (cobblemon), Temperate Gimmi Tower (cobblemon) … | Ancient Azure Ball, Ancient Citrine Ball, Ancient Feather Ball, Ancient Heavy Ball, Ancient Ivory Ball, Ancient Poké Ball, Ancient Roseate Ball, Ancient Slate Ball … | | Copper Ingot (`minecraft:copper_ingot`) | – | Blast furnace; Brush suspicious blocks in Decaying Crypt Ruins (cobblemon); Brush suspicious blocks in Deserted Gimmi Tower (cobblemon); Brush suspicious blocks in Deserted Gimmi Tower (cobblemon), Frozen Gimmi Tower (cobblemon), Lush Gimmi Tower (cobblemon), Rooted Gimmi Tower (cobblemon), Sunscorched Gimmi Tower (cobblemon), Temperate Gimmi Tower (cobblemon); Brush suspicious blocks in Deserted Gimmi Tower (cobblemon), Rooted Gimmi Tower (cobblemon), Temperate Gimmi Tower (cobblemon) … | Ancient Azure Ball, Ancient Citrine Ball, Ancient Feather Ball, Ancient Heavy Ball, Ancient Ivory Ball, Ancient Poké Ball, Ancient Roseate Ball, Ancient Slate Ball … |
| Cyan Wool (`minecraft:cyan_wool`) | – | Break Cyan Wool; Crafting (shapeless) | Air Balloon, Black Wool, Blue Wool, Brown Wool, Choice Scarf, Covert Cloak, Cyan Banner, Cyan Bed … | | Cyan Wool (`minecraft:cyan_wool`) | – | Break Cyan Wool; Crafting (shapeless) | Air Balloon, Black Wool, Blue Wool, Brown Wool, Choice Scarf, Covert Cloak, Cyan Banner, Cyan Bed … |
| Dandelion (`minecraft:dandelion`) | Skiploom (highlands, ×1) | Break Dandelion; Break Potted Dandelion; Loot in Village Plains; Use c:fertilizers on your Hoppip; Use c:fertilizers on your Jumpluff … | Suspicious Stew, Yellow Dye | | Dandelion (`minecraft:dandelion`) | Skiploom (highlands, ×1) | Break Dandelion; Break Potted Dandelion; Loot in Village Plains; Use c:fertilizers on your Hoppip; Use c:fertilizers on your Jumpluff … | Suspicious Stew, Yellow Dye |
| Dawn Stone (`cobblemon:dawn_stone`) | Froslass (frostpeak, 5%); Gallade (deep_dark, 10%); Gardevoir (deep_dark, 10%); Glalie (frostpeak, 5%) | Brush suspicious blocks in Frozen Gimmi Tower (cobblemon); Brush suspicious blocks in Lush Gimmi Tower (cobblemon); Crafting (shapeless); Loot in Crumbling Arch (worldgen feature); Loot in Decaying Crypt Ruins (cobblemon), Deep Crypt (worldgen feature), Deserted Gimmi Tower (cobblemon), Frozen Gimmi Tower (cobblemon), Lush Gimmi Tower (cobblemon), Reclaimed Deserted Monument (cobblemon) and 5 more … | Dawn Stone Block | | Dawn Stone (`cobblemon:dawn_stone`) | Froslass (frostpeak, 5%); Gallade (deep_dark, 10%); Gardevoir (deep_dark, 10%); Glalie (frostpeak, 5%) | Blast furnace; Break Dawn Stone Ore; Break Deepslate Dawn Stone Ore; Brush suspicious blocks in Frozen Gimmi Tower (cobblemon); Brush suspicious blocks in Lush Gimmi Tower (cobblemon) … | Dawn Stone Block |
| Diamond (`minecraft:diamond`) | Carbink (deep_dark, 5%); Sableye (button_isle, 5%) | Blast furnace; Break Deepslate Diamond Ore; Brush suspicious blocks in Deep Crypt (worldgen feature); Brush suspicious blocks in Desert Pyramid; Crafting (shapeless) … | Ability Shield, Beast Ball, Block of Diamond, Choice Scarf, Clear Amulet, Diamond Axe, Diamond Boots, Diamond Chestplate … | | Diamond (`minecraft:diamond`) | Carbink (deep_dark, 5%); Sableye (button_isle, 5%) | Blast furnace; Break Deepslate Diamond Ore; Brush suspicious blocks in Deep Crypt (worldgen feature); Brush suspicious blocks in Desert Pyramid; Crafting (shapeless) … | Ability Shield, Beast Ball, Blank Sigil, Block of Diamond, Choice Scarf, Clear Amulet, Diamond Axe, Diamond Boots … |
| Diamond Sword (`minecraft:diamond_sword`) | – | Crafting; Loot in Trial Chambers | Netherite Sword | | Diamond Sword (`minecraft:diamond_sword`) | – | Crafting; Loot in Trial Chambers | Netherite Sword |
| Dirt (`minecraft:dirt`) | Dugtrio (basalt, ×0-2); Excadrill (basalt, ×0-2) | Break Dirt; Break Farmland; Break Grass Block; Break Mycelium; Break Podzol | Coarse Dirt, Loamy Mulch, Mulch, Peat Block | | Dirt (`minecraft:dirt`) | Diglett (highlands, ×0-1); Dugtrio (basalt, ×0-2); Excadrill (basalt, ×0-2) | Break Dirt; Break Farmland; Break Grass Block; Break Mycelium; Break Podzol | Coarse Dirt, Loamy Mulch, Mulch, Peat Block |
| Dragon's Breath (`minecraft:dragon_breath`) | Drampa (sunscorch, 5%); Dratini (westmarch, ×0-1); Zweilous (deep_dark, ×0-2) | – | brewing: lingering potions, Ability Capsule | | Dragon's Breath (`minecraft:dragon_breath`) | Drampa (sunscorch, 5%); Dratini (westmarch, ×0-1); Zweilous (deep_dark, ×0-2) | – | brewing: lingering potions, Ability Capsule |
| Dusk Stone (`cobblemon:dusk_stone`) | – | Brush suspicious blocks in Rooted Gimmi Tower (cobblemon); Crafting (shapeless); Loot in Crumbling Arch (worldgen feature); Loot in Decaying Crypt Ruins (cobblemon), Deep Crypt (worldgen feature), Deserted Gimmi Tower (cobblemon), Frozen Gimmi Tower (cobblemon), Lush Gimmi Tower (cobblemon), Reclaimed Deserted Monument (cobblemon) and 5 more; Loot in Decaying Crypt Ruins (cobblemon), Rooted Gimmi Tower (cobblemon) … | Dusk Stone Block | | Dusk Stone (`cobblemon:dusk_stone`) | Chandelure (deep_dark, 10%); Lampent (deep_dark, 5%) | Blast furnace; Break Deepslate Dusk Stone Ore; Brush suspicious blocks in Rooted Gimmi Tower (cobblemon); Crafting (shapeless); Loot in Crumbling Arch (worldgen feature) … | Blank Sigil, Dusk Stone Block |
| Echo Shard (`minecraft:echo_shard`) | – | Loot in Ancient City | Altar Core, Beast Ball, Recovery Compass | | Echo Shard (`minecraft:echo_shard`) | – | Loot in Ancient City | Altar Core, Beast Ball, Blank Sigil, Recovery Compass |
| Egg (`minecraft:egg`) | Chansey (southwold, 50%); Exeggcute (jungle, ×0-3); Exeggutor (jungle, ×0-3) | Loot in Trial Chambers | Cake, Open-Faced Sandwich, Oran Lucky Egg, Pumpkin Pie | | Egg (`minecraft:egg`) | Chansey (westmarch, 50%); Exeggcute (jungle, ×0-3); Exeggutor (jungle, ×0-3) | Loot in Trial Chambers | Cake, Open-Faced Sandwich, Oran Lucky Egg, Pumpkin Pie |
| Electirizer (`cobblemon:electirizer`) | Electabuzz (frostpeak, 5%); Electivire (frostpeak, 10%) | Break Electirizer; Crafting | Power Block | | Electirizer (`cobblemon:electirizer`) | Electabuzz (frostpeak, 5%); Electivire (frostpeak, 10%) | Break Electirizer; Crafting | Power Block |
| Electric Seed (`cobblemon:electric_seed`) | Togedemaru (frostpeak, 5%) | Break Electric Seed | Miracle Seed | | Electric Seed (`cobblemon:electric_seed`) | Togedemaru (frostpeak, 5%) | Break Electric Seed; Break Voltaconia | Miracle Seed |
| Emerald (`minecraft:emerald`) | Nickit (westmarch, 2.5%); Sableye (button_isle, 5%); Thievul (westmarch, 5%) | Blast furnace; Break Emerald Ore; Brush suspicious blocks in Decaying Crypt Ruins (cobblemon); Brush suspicious blocks in Desert Pyramid; Brush suspicious blocks in Desert Well (worldgen feature) … | Block of Emerald | | Emerald (`minecraft:emerald`) | Nickit (westmarch, 2.5%); Sableye (button_isle, 5%); Thievul (westmarch, 5%) | Blast furnace; Break Deepslate Emerald Ore; Break Emerald Ore; Brush suspicious blocks in Decaying Crypt Ruins (cobblemon); Brush suspicious blocks in Desert Pyramid … | Block of Emerald |
| Ender Pearl (`minecraft:ender_pearl`) | Abra (highlands, ×0-1); Alakazam (highlands, ×0-3); Beldum (dripstone, ×0-1); Elgyem (dripstone, ×0-1); Gallade (deep_dark, ×0-3); Gardevoir (deep_dark, ×0-3); Grumpig (frostpeak, ×0-2); Kadabra (highlands, ×0-2); Metang (dripstone, ×0-2); Rabsca (sunscorch, ×1); Sigilyph (dripstone, ×0-1); Unown (jungle, ×0-1) | Loot in Trial Chambers | Eye of Ender, Flame Orb, Life Orb, Light Ball, Light Clay, Link Cable, Smoke Ball, Toxic Orb | | Ender Pearl (`minecraft:ender_pearl`) | Abra (highlands, ×0-1); Alakazam (highlands, ×0-3); Beldum (dripstone, ×0-1); Elgyem (dripstone, ×0-1); Gallade (deep_dark, ×0-3); Gardevoir (deep_dark, ×0-3); Grumpig (frostpeak, ×0-2); Kadabra (highlands, ×0-2); Metang (dripstone, ×0-2); Rabsca (sunscorch, ×1); Sigilyph (dripstone, the_end, ×0-1); Unown (jungle, the_end, ×0-1) | Loot in Trial Chambers | Blank Sigil, Eye of Ender, Flame Orb, Life Orb, Light Ball, Light Clay, Link Cable, Smoke Ball … |
| Everstone (`cobblemon:everstone`) | Geodude (dripstone, 2.5%); Gigalith (deep_dark, 10%); Golem (dripstone, 10%); Graveler (dripstone, 5%) | Brush suspicious blocks in Prehistoric Birch Tree (worldgen feature); Brush suspicious blocks in Prehistoric Dripstone Oasis (worldgen feature); Brush suspicious blocks in Prehistoric Enhydro Agate (worldgen feature); Brush suspicious blocks in Prehistoric Eroded Pillar (worldgen feature); Brush suspicious blocks in Prehistoric Hydrothermal Vents (worldgen feature) … | Eviolite | | Everstone (`cobblemon:everstone`) | Geodude (dripstone, westmarch, 2.5%); Gigalith (deep_dark, 10%); Golem (dripstone, 10%); Graveler (dripstone, 5%) | Brush suspicious blocks in Prehistoric Birch Tree (worldgen feature); Brush suspicious blocks in Prehistoric Dripstone Oasis (worldgen feature); Brush suspicious blocks in Prehistoric Enhydro Agate (worldgen feature); Brush suspicious blocks in Prehistoric Eroded Pillar (worldgen feature); Brush suspicious blocks in Prehistoric Hydrothermal Vents (worldgen feature) … | Eviolite |
| Feather (`minecraft:feather`) | Archen (lush_caves, ×0-2); Braviary (frostpeak, ×0-2); Chatot (jungle, ×0-2); Combusken (highlands, ×0-2); Corviknight (deep_dark, ×0-3); Cramorant (shallows, ×0-2); Dartrix (frostpeak, ×0-2); Decidueye (frostpeak, ×0-3); Delibird (frostpeak, ×0-2); Ducklett (mire, ×0-1); Farfetch'd (southwold, ×0-1); Fearow (sunscorch, ×0-2); Flamigo (mire, ×0-2); Fletchinder (highlands, ×0-2); Fletchling (highlands, ×0-1); Golduck (highlands, ×0-2); Honchkrow (deep_dark, ×0-3); Hoothoot (button_isle, ×0-1); Kilowattrel (deep_sea, ×0-2); Natu (jungle, ×0-1); Pidgeotto (highlands, ×0-2); Pidgey (highlands, ×0-1); Pidove (southwold, ×0-1); Pikipek (jungle, ×0-1); Psyduck (highlands, ×0-1); Squawkabilly (southwold, ×0-2); Staraptor (frostpeak, ×0-3); Swanna (mire, ×0-2); Taillow (southwold, ×0-1); Talonflame (highlands, ×0-3); Torchic (highlands, ×0-1); Toucannon (jungle, ×0-3); Trumbeak (jungle, ×0-2); Wingull (shallows, ×0-1); Xatu (jungle, ×0-2) | Loot in Shipwreck, Shipwreck Beached; Loot in Village Plains; Use c:tools/brush on your Archen; Use c:tools/brush on your Archeops; Use c:tools/brush on your Blaziken … | Arrow, Blunder Policy, Book and Quill, Brush, Clever Feather, Fairy Feather, Genius Feather, Health Feather … | | Feather (`minecraft:feather`) | Archen (lush_caves, ×0-2); Braviary (frostpeak, ×0-2); Chatot (jungle, ×0-2); Combusken (highlands, ×0-2); Corviknight (deep_dark, ×0-3); Cramorant (shallows, ×0-2); Dartrix (frostpeak, ×0-2); Decidueye (frostpeak, ×0-3); Delibird (frostpeak, ×0-2); Dodrio (highlands, ×0-2); Doduo (highlands, ×0-1); Ducklett (mire, ×0-1); Eiscue (frostpeak, ×0-1); Empoleon (deep_sea, ×0-3); Farfetch'd (southwold, ×0-1); Fearow (sunscorch, ×0-2); Flamigo (mire, ×0-2); Fletchinder (highlands, ×0-2); Fletchling (highlands, ×0-1); Golduck (highlands, ×0-2); Honchkrow (deep_dark, ×0-3); Hoothoot (button_isle, ×0-1); Kilowattrel (deep_sea, ×0-2); Natu (jungle, ×0-1); Pidgeotto (highlands, ×0-2); Pidgey (highlands, ×0-1); Pidove (southwold, ×0-1); Pikipek (jungle, ×0-1); Piplup (deep_sea, ×0-1); Prinplup (deep_sea, ×0-2); Psyduck (highlands, ×0-1); Squawkabilly (southwold, ×0-2); Staraptor (frostpeak, ×0-3); Swanna (mire, ×0-2); Taillow (southwold, ×0-1); Talonflame (highlands, ×0-3); Torchic (highlands, ×0-1); Toucannon (jungle, ×0-3); Trumbeak (jungle, ×0-2); Wingull (shallows, ×0-1); Xatu (jungle, ×0-2) | Loot in Shipwreck, Shipwreck Beached; Loot in Village Plains; Use c:tools/brush on your Archen; Use c:tools/brush on your Archeops; Use c:tools/brush on your Blaziken … | Arrow, Blunder Policy, Book and Quill, Brush, Clever Feather, Fairy Feather, Genius Feather, Health Feather … |
| Fire Stone (`cobblemon:fire_stone`) | Pansear (jungle, 2.5%); Simisear (jungle, 5%) | Crafting (shapeless); Loot in Crumbling Arch (worldgen feature); Loot in Decaying Crypt Ruins (cobblemon), Deep Crypt (worldgen feature), Deserted Gimmi Tower (cobblemon), Frozen Gimmi Tower (cobblemon), Lush Gimmi Tower (cobblemon), Reclaimed Deserted Monument (cobblemon) and 5 more; Loot in Decaying Crypt Ruins (cobblemon), Rooted Gimmi Tower (cobblemon); Loot in Deep Crypt (worldgen feature), Lush Gimmi Tower (cobblemon) … | Fire Stone Block, Flame Orb, Heat Rock | | Fire Stone (`cobblemon:fire_stone`) | Pansear (jungle, 2.5%); Simisear (jungle, 5%) | Blast furnace; Break Deepslate Fire Stone Ore; Break Fire Stone Ore; Crafting (shapeless); Loot in Crumbling Arch (worldgen feature) … | Blank Sigil, Fire Stone Block, Flame Orb, Heat Rock |
| Flint (`minecraft:flint`) | Probopass (deep_dark, ×0-3) | Break Gravel | Arrow, Fletching Table, Flint and Steel, Utility Umbrella | | Flint (`minecraft:flint`) | Probopass (deep_dark, ×0-3) | Break Gravel | Arrow, Fletching Table, Flint and Steel, Utility Umbrella |
| Ghast Tear (`minecraft:ghast_tear`) | Drifloon (southwold, 5%); Dusclops (deep_dark, 10%) | – | brewing: Regeneration, Destiny Knot, End Crystal, Focus Sash, Life Orb, Reaper Cloth | | Ghast Tear (`minecraft:ghast_tear`) | Drifloon (southwold, 5%); Dusclops (deep_dark, 10%) | – | brewing: Regeneration, Destiny Knot, End Crystal, Focus Sash, Life Orb, Reaper Cloth |
| Glass Bottle (`minecraft:glass_bottle`) | – | Crafting; Loot in Beach (cobblemon), Deep Ocean (cobblemon), Warm Ocean (cobblemon); Loot in Crumbling Arch (worldgen feature); Loot in Decaying Crypt Ruins (cobblemon), Deep Crypt (worldgen feature), Deserted Gimmi Tower (cobblemon), Frozen Gimmi Tower (cobblemon), Lush Gimmi Tower (cobblemon), Reclaimed Deserted Monument (cobblemon) and 5 more; Loot in Decaying Crypt Ruins (cobblemon), Rooted Gimmi Tower (cobblemon) … | Antidote, Awakening, Burn Heal, Dire Hit, Full Heal, Guard Spec, Honey Bottle, Ice Heal … | | Glass Bottle (`minecraft:glass_bottle`) | – | Crafting; Loot in Beach (cobblemon), Deep Ocean (cobblemon), Warm Ocean (cobblemon); Loot in Crumbling Arch (worldgen feature); Loot in Decaying Crypt Ruins (cobblemon), Deep Crypt (worldgen feature), Deserted Gimmi Tower (cobblemon), Frozen Gimmi Tower (cobblemon), Lush Gimmi Tower (cobblemon), Reclaimed Deserted Monument (cobblemon) and 5 more; Loot in Decaying Crypt Ruins (cobblemon), Rooted Gimmi Tower (cobblemon) … | Antidote, Awakening, Burn Heal, Dire Hit, Full Heal, Guard Spec, Honey Bottle, Ice Heal … |
| Glow Ink Sac (`minecraft:glow_ink_sac`) | Frillish (deep_sea, ×0-1); Jellicent (deep_sea, ×0-2); Tentacool (southwold, 10%) | – | Glow Item Frame, Light Clay, Pokédex, Pokédex, Pokédex, Pokédex, Pokédex, Pokédex … | | Glow Ink Sac (`minecraft:glow_ink_sac`) | Frillish (deep_sea, ×0-1); Jellicent (deep_sea, ×0-2); Tentacool (southwold, 10%) | – | Glow Item Frame, Light Clay, Pokédex, Pokédex, Pokédex, Pokédex, Pokédex, Pokédex … |
| Glowstone Dust (`minecraft:glowstone_dust`) | – | Break Glowstone | brewing: stronger potions, Blunder Policy, Glowstone, Pokédex, Pokédex, Pokédex, Pokédex, Pokédex … | | Glowstone Dust (`minecraft:glowstone_dust`) | – | Break Glowstone | brewing: stronger potions, Blunder Policy, Glowstone, Pokédex, Pokédex, Pokédex, Pokédex, Pokédex … |
| Goat Fur (`cold_sweat:goat_fur`) | – | Crafting (pack recipe) | Goat Fur Boots, Goat Fur Cap, Goat Fur Pants, Goat Fur Parka, Minecart Insulation, Minecart with Insulation | | Goat Fur (`cold_sweat:goat_fur`) | – | Crafting (pack recipe) | Goat Fur Boots, Goat Fur Cap, Goat Fur Pants, Goat Fur Parka, Minecart Insulation, Minecart with Insulation |
| Gold Ingot (`minecraft:gold_ingot`) | – | Blast furnace; Brush suspicious blocks in Decaying Crypt Ruins (cobblemon); Brush suspicious blocks in Deep Crypt (worldgen feature); Brush suspicious blocks in Deserted Gimmi Tower (cobblemon); Brush suspicious blocks in Deserted Gimmi Tower (cobblemon), Frozen Gimmi Tower (cobblemon), Lush Gimmi Tower (cobblemon), Rooted Gimmi Tower (cobblemon), Sunscorched Gimmi Tower (cobblemon), Temperate Gimmi Tower (cobblemon) … | Ancient Gigaton Ball, Ancient Jet Ball, Ancient Ultra Ball, Beast Ball, Black Gilded Chest, Block of Gold, Blue Gilded Chest, Chipped Pot … | | Gold Ingot (`minecraft:gold_ingot`) | – | Blast furnace; Brush suspicious blocks in Decaying Crypt Ruins (cobblemon); Brush suspicious blocks in Deep Crypt (worldgen feature); Brush suspicious blocks in Deserted Gimmi Tower (cobblemon); Brush suspicious blocks in Deserted Gimmi Tower (cobblemon), Frozen Gimmi Tower (cobblemon), Lush Gimmi Tower (cobblemon), Rooted Gimmi Tower (cobblemon), Sunscorched Gimmi Tower (cobblemon), Temperate Gimmi Tower (cobblemon) … | Ancient Gigaton Ball, Ancient Jet Ball, Ancient Ultra Ball, Beast Ball, Black Gilded Chest, Block of Gold, Blue Gilded Chest, Cherish Ball … |
| Gold Nugget (`minecraft:gold_nugget`) | Meowth (button_isle, ×0-1) | Blast furnace; Brush suspicious blocks in Ocean Ruin Cold; Brush suspicious blocks in Ocean Ruin Warm; Brush suspicious blocks in Trail Ruins; Crafting (shapeless) … | Chipped Pot, Cracked Pot, Eject Button, Glistering Melon Slice, Gold Ingot, Golden Carrot, Soulspring Lamp | | Gold Nugget (`minecraft:gold_nugget`) | Meowth (southwold, ×0-1) | Blast furnace; Brush suspicious blocks in Ocean Ruin Cold; Brush suspicious blocks in Ocean Ruin Warm; Brush suspicious blocks in Trail Ruins; Crafting (shapeless) … | Chipped Pot, Cracked Pot, Eject Button, Glistering Melon Slice, Gold Ingot, Golden Carrot, Soulspring Lamp |
| Golden Helmet (`minecraft:golden_helmet`) | Falinks (sunscorch, 5%) | Crafting; Loot in Ocean Ruin Cold, Ocean Ruin Warm | Gold Nugget, Rocky Helmet | | Golden Helmet (`minecraft:golden_helmet`) | Falinks (sunscorch, 5%) | Crafting; Loot in Ocean Ruin Cold, Ocean Ruin Warm | Gold Nugget, Rocky Helmet |
| Grassy Seed (`cobblemon:grassy_seed`) | Bounsweet (jungle, 2.5%); Maractus (sunscorch, 5%); Steenee (jungle, 5%); Tsareena (jungle, 10%) | Break Grassy Seed | Miracle Seed | | Grassy Seed (`cobblemon:grassy_seed`) | Bounsweet (jungle, 2.5%); Maractus (sunscorch, 5%); Steenee (jungle, 5%); Tsareena (jungle, 10%) | Break Grassy Seed; Break Verdroot | Miracle Seed |
| Gravel (`minecraft:gravel`) | Geodude (dripstone, ×0-1); Golem (dripstone, ×0-3); Graveler (dripstone, ×0-2) | Break Gravel | Black Concrete Powder, Blue Concrete Powder, Brown Concrete Powder, Coarse Dirt, Cyan Concrete Powder, Gray Concrete Powder, Green Concrete Powder, Light Blue Concrete Powder … | | Gravel (`minecraft:gravel`) | Geodude (dripstone, westmarch, ×0-1); Golem (dripstone, ×0-3); Graveler (dripstone, ×0-2) | Break Gravel | Black Concrete Powder, Blue Concrete Powder, Brown Concrete Powder, Coarse Dirt, Cyan Concrete Powder, Gray Concrete Powder, Green Concrete Powder, Light Blue Concrete Powder … |
| Gray Wool (`minecraft:gray_wool`) | – | Break Gray Wool; Crafting (shapeless) | Air Balloon, Black Wool, Blue Wool, Brown Wool, Choice Scarf, Covert Cloak, Cyan Wool, Destiny Knot … | | Gray Wool (`minecraft:gray_wool`) | – | Break Gray Wool; Crafting (shapeless) | Air Balloon, Black Wool, Blue Wool, Brown Wool, Choice Scarf, Covert Cloak, Cyan Wool, Destiny Knot … |
| Green Wool (`minecraft:green_wool`) | – | Break Green Wool; Crafting (shapeless) | Air Balloon, Black Wool, Blue Wool, Brown Wool, Choice Scarf, Covert Cloak, Cyan Wool, Destiny Knot … | | Green Wool (`minecraft:green_wool`) | – | Break Green Wool; Crafting (shapeless) | Air Balloon, Black Wool, Blue Wool, Brown Wool, Choice Scarf, Covert Cloak, Cyan Wool, Destiny Knot … |
| Gunpowder (`minecraft:gunpowder`) | Voltorb (southwold, ×0-1) | Brush suspicious blocks in Desert Pyramid; Loot in Desert Pyramid; Loot in Monster Room (worldgen feature); Loot in Shipwreck, Shipwreck Beached | brewing: splash potions, Fire Charge, Firework Rocket, TNT, Weakness Policy | | Gunpowder (`minecraft:gunpowder`) | Voltorb (southwold, ×0-1) | Brush suspicious blocks in Desert Pyramid; Loot in Desert Pyramid; Loot in Monster Room (worldgen feature); Loot in Shipwreck, Shipwreck Beached | brewing: splash potions, Fire Charge, Firework Rocket, TNT, Weakness Policy |
| Haban Berry (`cobblemon:haban_berry`) | Cyclizar (highlands, 5%); Drakloak (deep_sea, 5%); Druddigon (dripstone, 5%); Fraxure (frostpeak, 5%); Gabite (westmarch, 5%); Gible (westmarch, 2.5%); Goomy (westmarch, 2.5%); Haxorus (frostpeak, 10%); Tatsugiri (mire, 5%); Turtonator (basalt, 5%) | Break Haban Berry; Wild berry trees in Cherry Grove, Jagged Peaks, Jungle, Windswept Hills | Berry Juice, Candied Berries, Red Dye | | Haban Berry (`cobblemon:haban_berry`) | Cyclizar (highlands, 5%); Drakloak (deep_sea, 5%); Druddigon (dripstone, 5%); Fraxure (frostpeak, 5%); Gabite (westmarch, 5%); Gible (westmarch, 2.5%); Goomy (westmarch, 2.5%); Haxorus (frostpeak, 10%); Tatsugiri (mire, 5%); Turtonator (basalt, 5%) | Break Haban Berry; Wild berry trees in Cherry Grove, Jagged Peaks, Jungle, Windswept Hills | Berry Juice, Candied Berries, Red Dye |
| Hard Stone (`cobblemon:hard_stone`) | Bonsly (button_isle, 2.5%); Crustle (sunscorch, 5%); Dwebble (sunscorch, 2.5%); Gigalith (deep_dark, 10%); Lycanroc (frostpeak, 5%); Probopass (deep_dark, 5%); Pupitar (frostpeak, 5%); Tyranitar (frostpeak, 10%) | Crafting | Damp Rock, Heat Rock, Icy Rock, Rocky Helmet, Smooth Rock | | Hard Stone (`cobblemon:hard_stone`) | Aron (dripstone, 2.5%); Bonsly (button_isle, 2.5%); Crustle (sunscorch, 5%); Dwebble (sunscorch, 2.5%); Gigalith (deep_dark, 10%); Lairon (dripstone, 5%); Lycanroc (frostpeak, 5%); Probopass (deep_dark, 5%); Pupitar (frostpeak, 5%); Tyranitar (frostpeak, 10%) | Crafting | Damp Rock, Heat Rock, Icy Rock, Rocky Helmet, Smooth Rock |
| Heart of the Sea (`minecraft:heart_of_the_sea`) | Lapras (deep_sea, 5%) | Loot in Buried Treasure | Conduit, Soulspring Lamp | | Heart of the Sea (`minecraft:heart_of_the_sea`) | Lapras (deep_sea, 5%) | Loot in Buried Treasure | Conduit, Soulspring Lamp |
| Honey Bottle (`minecraft:honey_bottle`) | Combee (button_isle, ×0-1); Cutiefly (lush_caves, ×0-1); Gloom (highlands, ×0-2); Ribombee (lush_caves, ×0-2); Surskit (mire, ×0-1); Teddiursa (westmarch, 2.5%) | Crafting (shapeless); Loot in Trial Chambers; Use a glass bottle on a full bee nest; Use minecraft:glass_bottle on your Vespiquen | Berry Sweet, Clever Mochi, Clover Sweet, Flower Sweet, Fresh-Start Mochi, Genius Mochi, Health Mochi, Honey Block … | | Honey Bottle (`minecraft:honey_bottle`) | Combee (button_isle, ×0-1); Cutiefly (lush_caves, ×0-1); Gloom (highlands, ×0-2); Ribombee (lush_caves, ×0-2); Surskit (mire, ×0-1); Teddiursa (westmarch, 2.5%) | Crafting (shapeless); Loot in Trial Chambers; Use a glass bottle on a full bee nest; Use minecraft:glass_bottle on your Vespiquen | Berry Sweet, Clever Mochi, Clover Sweet, Flower Sweet, Fresh-Start Mochi, Genius Mochi, Health Mochi, Honey Block … |
| Honeycomb (`minecraft:honeycomb`) | Combee (button_isle, ×0-1) | Loot in Trial Chambers; Shear a full bee nest | Beehive, Candle, Courage Candy, Exp. Candy XS, Health Candy, Honeycomb Block, Metal Coat, Mighty Candy … | | Honeycomb (`minecraft:honeycomb`) | Combee (button_isle, ×0-1) | Loot in Trial Chambers; Shear a full bee nest | Beehive, Candle, Courage Candy, Exp. Candy XS, Health Candy, Honeycomb Block, Metal Coat, Mighty Candy … |
| Ice Stone (`cobblemon:ice_stone`) | – | Brush suspicious blocks in Prehistoric Powdered Deposit (worldgen feature); Crafting (shapeless); Loot in Crumbling Arch (worldgen feature); Loot in Decaying Crypt Ruins (cobblemon), Deep Crypt (worldgen feature), Deserted Gimmi Tower (cobblemon), Frozen Gimmi Tower (cobblemon), Lush Gimmi Tower (cobblemon), Reclaimed Deserted Monument (cobblemon) and 5 more; Loot in Decaying Crypt Ruins (cobblemon), Rooted Gimmi Tower (cobblemon) … | Ice Stone Block, Icy Rock | | Ice Stone (`cobblemon:ice_stone`) | – | Blast furnace; Break Deepslate Ice Stone Ore; Break Ice Stone Ore; Brush suspicious blocks in Prehistoric Powdered Deposit (worldgen feature); Crafting (shapeless) … | Blank Sigil, Ice Stone Block, Icy Rock |
| Ink Sac (`minecraft:ink_sac`) | Clobbopus (shallows, ×1-3); Horsea (deep_sea, ×0-1); Inkay (shallows, ×0-1); Kingdra (deep_sea, ×0-3); Octillery (deep_sea, ×1-3); Seadra (deep_sea, ×0-2); Tentacool (southwold, ×1-3) | Fishing; Fishing with a Poké Rod | Black Dye, Blunder Policy, Book and Quill, Spell Tag, Weakness Policy | | Ink Sac (`minecraft:ink_sac`) | Clobbopus (shallows, ×1-3); Horsea (deep_sea, ×0-1); Kingdra (deep_sea, ×0-3); Malamar (deep_sea, the_end, ×0-2); Octillery (deep_sea, ×1-3); Seadra (deep_sea, ×0-2); Tentacool (southwold, ×1-3) | Fishing; Fishing with a Poké Rod | Black Dye, Blunder Policy, Book and Quill, Spell Tag, Weakness Policy |
| Iron Ball (`cobblemon:iron_ball`) | Mawile (basalt, 5%) | Break Iron Ball; Loot in Crumbling Arch (worldgen feature); Loot in Decaying Crypt Ruins (cobblemon), Deep Crypt (worldgen feature), Deserted Gimmi Tower (cobblemon), Frozen Gimmi Tower (cobblemon), Lush Gimmi Tower (cobblemon), Reclaimed Deserted Monument (cobblemon) and 5 more; Loot in Decaying Crypt Ruins (cobblemon), Rooted Gimmi Tower (cobblemon); Loot in Deep Crypt (worldgen feature), Lush Gimmi Tower (cobblemon) … | Loaded Dice | | Iron Ball (`cobblemon:iron_ball`) | Mawile (basalt, 5%); Pineco (westmarch, 2.5%) | Break Iron Ball; Loot in Crumbling Arch (worldgen feature); Loot in Decaying Crypt Ruins (cobblemon), Deep Crypt (worldgen feature), Deserted Gimmi Tower (cobblemon), Frozen Gimmi Tower (cobblemon), Lush Gimmi Tower (cobblemon), Reclaimed Deserted Monument (cobblemon) and 5 more; Loot in Decaying Crypt Ruins (cobblemon), Rooted Gimmi Tower (cobblemon); Loot in Deep Crypt (worldgen feature), Lush Gimmi Tower (cobblemon) … | Loaded Dice |
| Iron Helmet (`minecraft:iron_helmet`) | Escavalier (mire, 5%); Pawniard (sunscorch, 2.5%); Shelmet (mire, 2.5%) | Crafting; Loot in Trial Chambers; Loot in Village Desert, Village Plains | Exp. Share, Iron Nugget | | Iron Helmet (`minecraft:iron_helmet`) | Escavalier (mire, 5%); Pawniard (sunscorch, 2.5%); Shelmet (mire, 2.5%) | Crafting; Loot in Trial Chambers; Loot in Village Desert, Village Plains | Exp. Share, Iron Nugget |
| Iron Ingot (`minecraft:iron_ingot`) | Duraludon (frostpeak, ×0-1) | Blast furnace; Break Healing Machine; Break PC; Brush suspicious blocks in Decaying Crypt Ruins (cobblemon); Brush suspicious blocks in Deep Crypt (worldgen feature) … | Ability Shield, Activator Rail, Ancient Great Ball, Ancient Leaden Ball, Ancient Wing Ball, Anvil, Black Glasses, Black Plaque … | | Iron Ingot (`minecraft:iron_ingot`) | Duraludon (frostpeak, ×0-1) | Blast furnace; Break Healing Machine; Break PC; Brush suspicious blocks in Decaying Crypt Ruins (cobblemon); Brush suspicious blocks in Deep Crypt (worldgen feature) … | Ability Shield, Activator Rail, Ancient Great Ball, Ancient Leaden Ball, Ancient Wing Ball, Anvil, Black Glasses, Black Plaque … |
| Iron Nugget (`minecraft:iron_nugget`) | Orthworm (dripstone, ×0-2); Revavroom (deep_dark, ×0-2) | Blast furnace; Crafting (shapeless); Loot in Shipwreck, Shipwreck Beached; Smelting | Chain, Disc Shelf, Iron Ingot, Lantern, Metronome, Silver Powder, Soothe Bell, Soul Lantern … | | Iron Nugget (`minecraft:iron_nugget`) | Orthworm (dripstone, ×0-2); Revavroom (deep_dark, ×0-2) | Blast furnace; Crafting (shapeless); Loot in Shipwreck, Shipwreck Beached; Smelting | Chain, Disc Shelf, Iron Ingot, Lantern, Metronome, Silver Powder, Soothe Bell, Soul Lantern … |
| Iron Sword (`minecraft:iron_sword`) | – | Crafting; Loot in Buried Treasure; Loot in Trial Chambers; Loot in Village Desert, Village Plains | Iron Nugget | | Iron Sword (`minecraft:iron_sword`) | – | Crafting; Loot in Buried Treasure; Loot in Trial Chambers; Loot in Village Desert, Village Plains | Iron Nugget |
| Kasib Berry (`cobblemon:kasib_berry`) | Abra (highlands, 2.5%); Alakazam (highlands, 10%); Brambleghast (sunscorch, 5%); Drifloon (southwold, 2.5%); Dusclops (deep_dark, 5%); Dusknoir (deep_dark, 10%); Frillish (deep_sea, 2.5%); Gallade (deep_dark, 10%); Gardevoir (deep_dark, 10%); Houndstone (deep_dark, 5%); Jellicent (deep_sea, 5%); Kadabra (highlands, 5%); Misdreavus (mire, 2.5%); Pumpkaboo (southwold, 2.5%) | Break Kasib Berry; Wild berry trees in Deep Dark, Dripstone Caves, Lush Caves, Mangrove Swamp | Berry Juice, Candied Berries, Purple Dye | | Kasib Berry (`cobblemon:kasib_berry`) | Abra (highlands, 2.5%); Alakazam (highlands, 10%); Brambleghast (sunscorch, 5%); Drifloon (southwold, 2.5%); Dusclops (deep_dark, 5%); Dusknoir (deep_dark, 10%); Frillish (deep_sea, 2.5%); Gallade (deep_dark, 10%); Gardevoir (deep_dark, 10%); Houndstone (deep_dark, 5%); Jellicent (deep_sea, 5%); Kadabra (highlands, 5%); Misdreavus (mire, 2.5%); Pumpkaboo (southwold, 2.5%) | Break Kasib Berry; Wild berry trees in Deep Dark, Dripstone Caves, Lush Caves, Mangrove Swamp | Berry Juice, Candied Berries, Purple Dye |
| Kebia Berry (`cobblemon:kebia_berry`) | Aromatisse (frostpeak, 5%); Azumarill (southwold, 10%); Azurill (southwold, 2.5%); Breloom (westmarch, 5%); Carnivine (lush_caves, 5%); Comfey (dripstone, 5%); Cottonee (highlands, 2.5%); Flabébé (westmarch, 2.5%); Floette (westmarch, 5%); Lombre (southwold, 5%); Lotad (southwold, 2.5%); Marill (southwold, 5%); Morelull (lush_caves, 2.5%); Shiinotic (lush_caves, 5%); Shroomish (westmarch, 2.5%); Whimsicott (highlands, 5%) | Break Kebia Berry; Wild berry trees in Cherry Grove, Deep Dark, Forest, Mangrove Swamp | Berry Juice, Candied Berries, Green Dye | | Kebia Berry (`cobblemon:kebia_berry`) | Aromatisse (frostpeak, 5%); Azumarill (southwold, 10%); Azurill (southwold, 2.5%); Breloom (westmarch, 5%); Carnivine (lush_caves, 5%); Comfey (dripstone, 5%); Cottonee (highlands, 2.5%); Flabébé (westmarch, 2.5%); Floette (westmarch, 5%); Lombre (southwold, 5%); Lotad (southwold, 2.5%); Marill (southwold, 5%); Morelull (lush_caves, 2.5%); Shiinotic (lush_caves, 5%); Shroomish (westmarch, 2.5%); Smoliv (southwold, 2.5%); Whimsicott (highlands, 5%) | Break Kebia Berry; Wild berry trees in Cherry Grove, Deep Dark, Forest, Mangrove Swamp | Berry Juice, Candied Berries, Green Dye |
| Kelp (`minecraft:kelp`) | Dhelmise (deep_sea, ×0-2); Dragalge (deep_sea, ×0-2); Skrelp (deep_sea, ×0-1) | Break Kelp; Break Kelp Plant; Use c:fertilizers on your Dhelmise | Dried Kelp | | Kelp (`minecraft:kelp`) | Dhelmise (deep_sea, ×0-2); Dragalge (deep_sea, ×0-2); Skrelp (deep_sea, ×0-1) | Break Kelp; Break Kelp Plant; Use c:fertilizers on your Dhelmise | Dried Kelp |
| Leaf Stone (`cobblemon:leaf_stone`) | Pansage (jungle, 2.5%); Simisage (jungle, 5%) | Blast furnace; Break Leaf Stone Ore; Brush suspicious blocks in Prehistoric Birch Tree (worldgen feature); Brush suspicious blocks in Prehistoric Lush Den (worldgen feature); Brush suspicious blocks in Prehistoric Mossy Pond (worldgen feature) … | Leaf Stone Block | | Leaf Stone (`cobblemon:leaf_stone`) | Pansage (jungle, 2.5%); Simisage (jungle, 5%) | Blast furnace; Break Deepslate Leaf Stone Ore; Break Leaf Stone Ore; Brush suspicious blocks in Prehistoric Birch Tree (worldgen feature); Brush suspicious blocks in Prehistoric Lush Den (worldgen feature) … | Blank Sigil, Leaf Stone Block |
| Leather (`minecraft:leather`) | Bouffalant (highlands, ×0-2); Deerling (westmarch, ×0-1); Miltank (highlands, ×0-2); Mudbray (highlands, ×0-1); Mudsdale (highlands, ×0-2); Ponyta (highlands, ×0-1); Tauros (highlands, ×0-2) | Crafting; Crafting (shapeless); Fishing; Fishing with a Poké Rod; Loot in Village Plains | Book, Eject Pack, Focus Band, Focus Sash, Hoglin Hide, Item Frame, Leather Boots, Leather Cap … | | Leather (`minecraft:leather`) | Blitzle (highlands, ×0-1); Bouffalant (highlands, ×0-2); Deerling (westmarch, ×0-1); Farigiraf (sunscorch, ×0-2); Girafarig (sunscorch, ×0-1); Miltank (highlands, ×0-2); Mudbray (highlands, ×0-1); Mudsdale (highlands, ×0-2); Ponyta (highlands, ×0-1); Stantler (frostpeak, ×0-1); Tauros (highlands, mire, sunscorch, ×0-2); Wyrdeer (frostpeak, ×0-2); Zebstrika (highlands, ×0-2) | Crafting; Crafting (shapeless); Fishing; Fishing with a Poké Rod; Loot in Village Plains | Book, Eject Pack, Focus Band, Focus Sash, Hoglin Hide, Item Frame, Leather Boots, Leather Cap … |
| Light Blue Wool (`minecraft:light_blue_wool`) | Swoobat (jungle, ×1-2); Woobat (jungle, ×1) | Break Light Blue Wool; Crafting (shapeless) | Air Balloon, Black Wool, Blue Wool, Brown Wool, Choice Scarf, Covert Cloak, Cyan Wool, Destiny Knot … | | Light Blue Wool (`minecraft:light_blue_wool`) | Swoobat (jungle, ×1-2); Woobat (jungle, ×1) | Break Light Blue Wool; Crafting (shapeless) | Air Balloon, Black Wool, Blue Wool, Brown Wool, Choice Scarf, Covert Cloak, Cyan Wool, Destiny Knot … |
| Light Gray Wool (`minecraft:light_gray_wool`) | – | Break Light Gray Wool; Crafting (shapeless) | Air Balloon, Black Wool, Blue Wool, Brown Wool, Choice Scarf, Covert Cloak, Cyan Wool, Destiny Knot … | | Light Gray Wool (`minecraft:light_gray_wool`) | – | Break Light Gray Wool; Crafting (shapeless) | Air Balloon, Black Wool, Blue Wool, Brown Wool, Choice Scarf, Covert Cloak, Cyan Wool, Destiny Knot … |
| Lime Wool (`minecraft:lime_wool`) | – | Break Lime Wool; Crafting (shapeless) | Air Balloon, Black Wool, Blue Wool, Brown Wool, Choice Scarf, Covert Cloak, Cyan Wool, Destiny Knot … | | Lime Wool (`minecraft:lime_wool`) | – | Break Lime Wool; Crafting (shapeless) | Air Balloon, Black Wool, Blue Wool, Brown Wool, Choice Scarf, Covert Cloak, Cyan Wool, Destiny Knot … |
| Lobaila (`cobblemon:lobaila`) | Cutiefly (lush_caves, 5%) | Break Lobaila | Red Dye |
| Lucibell (`cobblemon:lucibell`) | Comfey (dripstone, 5%) | Break Lucibell | Bright Powder, Purple Dye |
| Magenta Wool (`minecraft:magenta_wool`) | – | Break Magenta Wool; Crafting (shapeless) | Air Balloon, Black Wool, Blue Wool, Brown Wool, Choice Scarf, Covert Cloak, Cyan Wool, Destiny Knot … | | Magenta Wool (`minecraft:magenta_wool`) | – | Break Magenta Wool; Crafting (shapeless) | Air Balloon, Black Wool, Blue Wool, Brown Wool, Choice Scarf, Covert Cloak, Cyan Wool, Destiny Knot … |
| Magma Cream (`minecraft:magma_cream`) | Camerupt (sunscorch, 5%); Magcargo (basalt, ×0-2); Numel (sunscorch, 2.5%) | Crafting (shapeless) | brewing: Fire Resistance, Lava Cookie, Magma Block | | Magma Cream (`minecraft:magma_cream`) | Camerupt (sunscorch, 5%); Magcargo (basalt, ×0-2); Numel (sunscorch, 2.5%) | Crafting (shapeless) | brewing: Fire Resistance, Lava Cookie, Magma Block |
| Medicinal Leek (`cobblemon:medicinal_leek`) | Farfetch'd (southwold, ×0-1) | Break Medicinal Leek | Leek and Potato Stew, Magenta Dye, Medicinal Brew, Open-Faced Sandwich, Roasted Leek | | Medicinal Leek (`cobblemon:medicinal_leek`) | Farfetch'd (southwold, ×0-1) | Break Medicinal Leek | Leek and Potato Stew, Magenta Dye, Medicinal Brew, Open-Faced Sandwich, Roasted Leek |
| Melon Seeds (`minecraft:melon_seeds`) | Bulbasaur (jungle, ×0-1); Ivysaur (jungle, ×0-2) | Break Melon Stem; Crafting (shapeless); Loot in Mineshaft, Mineshaft Mesa; Loot in Monster Room (worldgen feature) | Miracle Seed | | Melon Seeds (`minecraft:melon_seeds`) | Bulbasaur (jungle, ×0-1); Ivysaur (jungle, ×0-2) | Break Melon Stem; Crafting (shapeless); Loot in Mineshaft, Mineshaft Mesa; Loot in Monster Room (worldgen feature) | Miracle Seed |
| Misty Seed (`cobblemon:misty_seed`) | Comfey (dripstone, 5%) | Break Misty Seed | Miracle Seed | | Mistleaf (`cobblemon:mistleaf`) | Comfey (dripstone, 5%) | Break Mistleaf | Bright Powder, Pink Dye |
| Moon Stone (`cobblemon:moon_stone`) | Clefable (dripstone, 10%); Clefairy (dripstone, 5%); Cleffa (dripstone, 2.5%); Jigglypuff (highlands, 5%); Lunatone (dripstone, 5%); Wigglytuff (highlands, 10%) | Blast furnace; Break Deepslate Moon Stone Ore; Crafting (shapeless); Loot in Crumbling Arch (worldgen feature); Loot in Decaying Crypt Ruins (cobblemon), Deep Crypt (worldgen feature), Deserted Gimmi Tower (cobblemon), Frozen Gimmi Tower (cobblemon), Lush Gimmi Tower (cobblemon), Reclaimed Deserted Monument (cobblemon) and 5 more … | Moon Stone Block | | Misty Seed (`cobblemon:misty_seed`) | Comfey (dripstone, 5%) | Break Mistleaf; Break Misty Seed | Miracle Seed |
| Mud (`minecraft:mud`) | Stunfisk (jungle, ×0-2) | Break Mud; Use a water bottle on dirt | Humid Mulch, Muddy Mangrove Roots, Packed Mud, Peat Block | | Moon Stone (`cobblemon:moon_stone`) | Clefable (dripstone, 10%); Clefairy (dripstone, 5%); Cleffa (dripstone, 2.5%); Jigglypuff (highlands, 5%); Lunatone (dripstone, 5%); Wigglytuff (highlands, 10%) | Blast furnace; Break Deepslate Moon Stone Ore; Break Dripstone Moon Stone Ore; Break Moon Stone Ore; Crafting (shapeless) … | Blank Sigil, Moon Stone Block |
| Mud (`minecraft:mud`) | Stunfisk (jungle, mire, ×0-2) | Break Mud; Use a water bottle on dirt | Humid Mulch, Muddy Mangrove Roots, Packed Mud, Peat Block |
| Muscle Band (`cobblemon:muscle_band`) | Annihilape (frostpeak, 10%); Machamp (frostpeak, 10%); Machoke (frostpeak, 5%); Primeape (frostpeak, 5%); Timburr (southwold, 2.5%) | Crafting | Choice Band | | Muscle Band (`cobblemon:muscle_band`) | Annihilape (frostpeak, 10%); Machamp (frostpeak, 10%); Machoke (frostpeak, 5%); Primeape (frostpeak, 5%); Timburr (southwold, 2.5%) | Crafting | Choice Band |
| Nanab Berry (`cobblemon:nanab_berry`) | Aipom (jungle, 2.5%); Copperajah (frostpeak, 5%); Cubone (sunscorch, 2.5%); Dachsbun (dripstone, 5%); Falinks (sunscorch, 5%); Fidough (dripstone, 2.5%); Grafaiai (jungle, 5%); Joltik (lush_caves, 2.5%); Marowak (sunscorch, 5%); Meditite (button_isle, 2.5%); Shroodle (jungle, 2.5%); Tropius (jungle, ×0-2) | Break Nanab Berry; Wild berry trees in Jungle, Mangrove Swamp | Berry Juice, Candied Berries, Pink Dye | | Nanab Berry (`cobblemon:nanab_berry`) | Aipom (jungle, 2.5%); Copperajah (frostpeak, 5%); Cubone (sunscorch, 2.5%); Dachsbun (dripstone, 5%); Falinks (sunscorch, 5%); Fidough (dripstone, 2.5%); Grafaiai (jungle, 5%); Joltik (lush_caves, 2.5%); Marowak (sunscorch, 5%); Meditite (button_isle, 2.5%); Shroodle (jungle, 2.5%); Tropius (jungle, ×0-2) | Break Nanab Berry; Wild berry trees in Jungle, Mangrove Swamp | Berry Juice, Candied Berries, Pink Dye |
| Nautilus Shell (`minecraft:nautilus_shell`) | Omanyte (lush_caves, ×1) | Fishing; Fishing with a Poké Rod | Conduit, Shell Bell | | Nautilus Shell (`minecraft:nautilus_shell`) | Omanyte (lush_caves, ×1) | Fishing; Fishing with a Poké Rod | Conduit, Shell Bell |
| Nether Star (`minecraft:nether_star`) | Charizard (basalt, 5%) | – | Beacon, Master Ball | | Nether Star (`minecraft:nether_star`) | Charizard (basalt, 5%) | – | Beacon, Blank Sigil, Master Ball |
| Occa Berry (`cobblemon:occa_berry`) | Abomasnow (frostpeak, 5%); Bronzong (deep_dark, 5%); Burmy (southwold, 2.5%); Durant (basalt, 2.5%); Escavalier (mire, 5%); Ferroseed (lush_caves, 2.5%); Karrablast (mire, 2.5%); Mawile (basalt, 5%); Pansage (jungle, 2.5%); Simisage (jungle, 5%) | Break Occa Berry; Wild berry trees in Badlands, Beach, Desert, Jungle | Berry Juice, Candied Berries, Orange Dye | | Occa Berry (`cobblemon:occa_berry`) | Abomasnow (frostpeak, 5%); Bronzong (deep_dark, 5%); Burmy (southwold, 2.5%); Durant (basalt, 2.5%); Escavalier (mire, 5%); Ferroseed (lush_caves, 2.5%); Karrablast (mire, 2.5%); Mawile (basalt, 5%); Pansage (jungle, 2.5%); Pineco (westmarch, 2.5%); Simisage (jungle, 5%) | Break Occa Berry; Wild berry trees in Badlands, Beach, Desert, Jungle | Berry Juice, Candied Berries, Orange Dye |
| Oran Berry (`cobblemon:oran_berry`) | Audino (southwold, 5%); Bidoof (button_isle, 2.5%); Furret (southwold, 5%); Gogoat (frostpeak, 5%); Greedent (westmarch, ×0-2); Jigglypuff (highlands, 5%); Lechonk (highlands, 2.5%); Lickilicky (highlands, 5%); Lickitung (highlands, 2.5%); Miltank (highlands, 5%); Oinkologne (highlands, 5%); Pichu (westmarch, 2.5%); Pikachu (westmarch, 5%); Sentret (southwold, 2.5%); Skwovet (westmarch, ×0-1); Teddiursa (westmarch, 2.5%); Wigglytuff (highlands, 10%); Zigzagoon (southwold, 2.5%) | Break Oran Berry; Loot in Village Desert, Village Plains; Wild berry trees in Badlands, Beach, Cherry Grove, Deep Dark, Deep Lukewarm Ocean, Deep Ocean and 13 more | Berry Juice, Candied Berries, Light Blue Dye, Oran Lucky Egg, Potion | | Oran Berry (`cobblemon:oran_berry`) | Audino (southwold, 5%); Bidoof (button_isle, 2.5%); Furret (southwold, 5%); Gogoat (frostpeak, 5%); Greedent (westmarch, ×0-2); Jigglypuff (highlands, 5%); Lechonk (highlands, 2.5%); Lickilicky (highlands, 5%); Lickitung (highlands, 2.5%); Miltank (highlands, 5%); Oinkologne (highlands, 5%); Pichu (westmarch, 2.5%); Pikachu (westmarch, 5%); Sentret (southwold, 2.5%); Skwovet (westmarch, ×0-1); Teddiursa (westmarch, 2.5%); Wigglytuff (highlands, 10%); Zigzagoon (southwold, 2.5%) | Break Oran Berry; Loot in Village Desert, Village Plains; Wild berry trees in Badlands, Beach, Cherry Grove, Deep Dark, Deep Lukewarm Ocean, Deep Ocean and 13 more | Berry Juice, Candied Berries, Light Blue Dye, Oran Lucky Egg, Potion |
| Orange Wool (`minecraft:orange_wool`) | – | Break Orange Wool; Crafting (shapeless) | Air Balloon, Black Wool, Blue Wool, Brown Wool, Choice Scarf, Covert Cloak, Cyan Wool, Destiny Knot … | | Orange Wool (`minecraft:orange_wool`) | – | Break Orange Wool; Crafting (shapeless) | Air Balloon, Black Wool, Blue Wool, Brown Wool, Choice Scarf, Covert Cloak, Cyan Wool, Destiny Knot … |
| Passho Berry (`cobblemon:passho_berry`) | Bonsly (button_isle, 2.5%); Coalossal (deep_dark, 10%); Donphan (sunscorch, 5%); Garganacl (sunscorch, 10%); Magcargo (basalt, 5%); Mudbray (highlands, 2.5%); Mudsdale (highlands, 5%); Naclstack (sunscorch, 5%); Pansear (jungle, 2.5%); Phanpy (sunscorch, 2.5%); Rhydon (frostpeak, 5%); Rhyperior (frostpeak, 10%); Sandygast (shallows, 2.5%); Simisear (jungle, 5%); Steelix (deep_dark, 5%); Stunfisk (jungle, 5%) | Break Passho Berry; Wild berry trees in Beach, Deep Lukewarm Ocean, Deep Ocean, Lukewarm Ocean, Mangrove Swamp, Ocean and 2 more | Berry Juice, Blue Dye, Candied Berries | | Pa'uvillea (`cobblemon:pauvillea`) | Cutiefly (lush_caves, 5%) | Break Pa'uvillea | Pink Dye |
| Passho Berry (`cobblemon:passho_berry`) | Bonsly (button_isle, 2.5%); Coalossal (deep_dark, 10%); Donphan (sunscorch, 5%); Garganacl (sunscorch, 10%); Magcargo (basalt, 5%); Mudbray (highlands, 2.5%); Mudsdale (highlands, 5%); Naclstack (sunscorch, 5%); Pansear (jungle, 2.5%); Phanpy (sunscorch, 2.5%); Rhydon (frostpeak, 5%); Rhyperior (frostpeak, 10%); Sandygast (shallows, 2.5%); Simisear (jungle, 5%); Steelix (deep_dark, 5%); Stunfisk (jungle, mire, 5%) | Break Passho Berry; Wild berry trees in Beach, Deep Lukewarm Ocean, Deep Ocean, Lukewarm Ocean, Mangrove Swamp, Ocean and 2 more | Berry Juice, Blue Dye, Candied Berries |
| Payapa Berry (`cobblemon:payapa_berry`) | Annihilape (frostpeak, 10%); Croagunk (mire, 2.5%); Flamigo (mire, 5%); Gastly (southwold, 2.5%); Hariyama (frostpeak, 5%); Hitmonchan (frostpeak, 5%); Hitmonlee (frostpeak, 5%); Hitmontop (frostpeak, 5%); Mienshao (frostpeak, 5%); Primeape (frostpeak, 5%); Sneasler (frostpeak, 5%); Toxicroak (mire, 5%) | Break Payapa Berry; Wild berry trees in Cherry Grove, Deep Dark, Desert | Berry Juice, Candied Berries, Magenta Dye | | Payapa Berry (`cobblemon:payapa_berry`) | Annihilape (frostpeak, 10%); Croagunk (mire, 2.5%); Flamigo (mire, 5%); Gastly (southwold, 2.5%); Hariyama (frostpeak, 5%); Hitmonchan (frostpeak, 5%); Hitmonlee (frostpeak, 5%); Hitmontop (frostpeak, 5%); Mienshao (frostpeak, 5%); Primeape (frostpeak, 5%); Sneasler (frostpeak, 5%); Toxicroak (mire, 5%) | Break Payapa Berry; Wild berry trees in Cherry Grove, Deep Dark, Desert | Berry Juice, Candied Berries, Magenta Dye |
| Pecha Berry (`cobblemon:pecha_berry`) | Beautifly (button_isle, 5%); Bellossom (highlands, 10%); Cascoon (button_isle, 2.5%); Dragalge (deep_sea, 5%); Dustox (button_isle, 5%); Gloom (highlands, 5%); Mareanie (shallows, 2.5%); Mightyena (highlands, 5%); Oddish (highlands, 2.5%); Roselia (frostpeak, 5%); Roserade (frostpeak, 10%); Silcoon (button_isle, 2.5%); Skitty (button_isle, 2.5%); Skrelp (deep_sea, 2.5%); Stunky (westmarch, 2.5%); Trubbish (lush_caves, 2.5%); Venipede (lush_caves, 2.5%); Vileplume (highlands, 10%); Whirlipede (lush_caves, 5%); Wurmple (button_isle, 2.5%); Yungoos (southwold, 2.5%); Zangoose (highlands, 5%) | Break Pecha Berry; Wild berry trees in Jungle, Mangrove Swamp | Antidote, Berry Juice, Candied Berries, Pink Dye | | Pecha Berry (`cobblemon:pecha_berry`) | Beautifly (button_isle, 5%); Bellossom (highlands, 10%); Cascoon (button_isle, 2.5%); Dragalge (deep_sea, 5%); Dustox (button_isle, 5%); Gloom (highlands, 5%); Mareanie (shallows, 2.5%); Mightyena (highlands, 5%); Nidoran♀ (southwold, 2.5%); Nidoran♂ (southwold, 2.5%); Nidorina (southwold, 5%); Nidorino (southwold, 5%); Oddish (highlands, 2.5%); Roselia (frostpeak, 5%); Roserade (frostpeak, 10%); Silcoon (button_isle, 2.5%); Skitty (button_isle, 2.5%); Skrelp (deep_sea, 2.5%); Stunky (westmarch, 2.5%); Trubbish (lush_caves, 2.5%); Venipede (lush_caves, 2.5%); Vileplume (highlands, 10%); Whirlipede (lush_caves, 5%); Wurmple (button_isle, 2.5%); Yungoos (southwold, 2.5%); Zangoose (highlands, 5%) | Break Pecha Berry; Wild berry trees in Jungle, Mangrove Swamp | Antidote, Berry Juice, Candied Berries, Pink Dye |
| Persim Berry (`cobblemon:persim_berry`) | Bounsweet (jungle, 2.5%); Chatot (jungle, 5%); Chinchou (shallows, 2.5%); Crobat (deep_dark, 10%); Drampa (sunscorch, 5%); Duosion (dripstone, 5%); Golbat (deep_dark, 5%); Kecleon (jungle, 5%); Lilligant (westmarch, 5%); Natu (jungle, 2.5%); Palpitoad (sunscorch, 5%); Petilil (westmarch, 2.5%); Seismitoad (sunscorch, 10%); Seviper (highlands, 5%); Solosis (dripstone, 2.5%); Steenee (jungle, 5%); Tsareena (jungle, 10%); Venonat (southwold, 2.5%); Xatu (jungle, 5%) | Break Persim Berry; Wild berry trees in Badlands, Beach, Cherry Grove, Deep Dark, Deep Lukewarm Ocean, Deep Ocean and 13 more | Berry Juice, Candied Berries, Pink Dye | | Persim Berry (`cobblemon:persim_berry`) | Bounsweet (jungle, 2.5%); Chatot (jungle, 5%); Chinchou (shallows, 2.5%); Crobat (deep_dark, 10%); Drampa (sunscorch, 5%); Duosion (dripstone, 5%); Farigiraf (sunscorch, 5%); Girafarig (sunscorch, 2.5%); Golbat (deep_dark, 5%); Kecleon (jungle, 5%); Lilligant (westmarch, 5%); Natu (jungle, 2.5%); Palpitoad (sunscorch, 5%); Petilil (westmarch, 2.5%); Seismitoad (sunscorch, 10%); Seviper (highlands, 5%); Solosis (dripstone, 2.5%); Stantler (frostpeak, 2.5%); Steenee (jungle, 5%); Tsareena (jungle, 10%); Venonat (southwold, 2.5%); Wyrdeer (frostpeak, 5%); Xatu (jungle, 5%) | Break Persim Berry; Wild berry trees in Badlands, Beach, Cherry Grove, Deep Dark, Deep Lukewarm Ocean, Deep Ocean and 13 more | Berry Juice, Candied Berries, Pink Dye |
| Phantom Membrane (`minecraft:phantom_membrane`) | Crobat (deep_dark, 10%); Drakloak (deep_sea, 5%); Drifloon (southwold, 2.5%); Dusclops (deep_dark, 5%); Dusknoir (deep_dark, 10%); Gliscor (basalt, 5%); Golbat (deep_dark, 5%); Misdreavus (mire, 2.5%); Noibat (southwold, 2.5%); Shuppet (southwold, 2.5%) | Use c:tools/brush on your Dragapult; Use c:tools/brush on your Drakloak | brewing: Slow Falling, Air Balloon, Covert Cloak, Reaper Cloth, Smoke Ball | | Phantom Membrane (`minecraft:phantom_membrane`) | Crobat (deep_dark, 10%); Drakloak (deep_sea, 5%); Drifloon (southwold, 2.5%); Dusclops (deep_dark, 5%); Dusknoir (deep_dark, 10%); Gliscor (basalt, 5%); Golbat (deep_dark, 5%); Misdreavus (mire, 2.5%); Noibat (westmarch, 2.5%); Shuppet (southwold, 2.5%) | Use c:tools/brush on your Dragapult; Use c:tools/brush on your Drakloak | brewing: Slow Falling, Air Balloon, Covert Cloak, Reaper Cloth, Smoke Ball |
| Pinap Berry (`cobblemon:pinap_berry`) | Beedrill (button_isle, 5%); Bellsprout (jungle, 2.5%); Clobbopus (shallows, 2.5%); Excadrill (basalt, 5%); Kakuna (button_isle, 2.5%); Klawf (sunscorch, 5%); Krabby (shallows, 2.5%); Meowth (button_isle, 2.5%); Pinsir (southwold, 5%); Skarmory (sunscorch, 5%); Weedle (button_isle, 2.5%); Weepinbell (jungle, 5%) | Break Pinap Berry; Wild berry trees in Badlands, Desert | Berry Juice, Candied Berries, Yellow Dye | | Pinap Berry (`cobblemon:pinap_berry`) | Beedrill (button_isle, 5%); Bellsprout (jungle, 2.5%); Clobbopus (shallows, 2.5%); Excadrill (basalt, 5%); Kakuna (button_isle, 2.5%); Klawf (sunscorch, 5%); Krabby (shallows, 2.5%); Meowth (southwold, 2.5%); Pinsir (southwold, 5%); Skarmory (sunscorch, 5%); Weedle (button_isle, 2.5%); Weepinbell (jungle, 5%) | Break Pinap Berry; Wild berry trees in Badlands, Desert | Berry Juice, Candied Berries, Yellow Dye |
| Pink Wool (`minecraft:pink_wool`) | – | Break Pink Wool; Crafting (shapeless); Use c:tools/brush on your Wigglytuff | Air Balloon, Black Wool, Blue Wool, Brown Wool, Choice Scarf, Covert Cloak, Cyan Wool, Destiny Knot … | | Pink Wool (`minecraft:pink_wool`) | – | Break Pink Wool; Crafting (shapeless); Use c:tools/brush on your Wigglytuff | Air Balloon, Black Wool, Blue Wool, Brown Wool, Choice Scarf, Covert Cloak, Cyan Wool, Destiny Knot … |
| Pomohana (`cobblemon:pomohana`) | Cutiefly (lush_caves, 5%) | Break Pomohana | Yellow Dye |
| Poppy (`minecraft:poppy`) | Flabébé (westmarch, ×1); Floette (westmarch, ×1) | Break Poppy; Loot in Village Plains | Red Dye, Suspicious Stew | | Poppy (`minecraft:poppy`) | Flabébé (westmarch, ×1); Floette (westmarch, ×1) | Break Poppy; Loot in Village Plains | Red Dye, Suspicious Stew |
| Potato (`minecraft:potato`) | Dugtrio (basalt, 5%) | Break Potatoes; Loot in Pillager Outpost; Loot in Shipwreck, Shipwreck Beached; Loot in Village Plains | Baked Potato, Old Gateau, Potato Mochi | | Potato (`minecraft:potato`) | Diglett (highlands, 2.5%); Dugtrio (basalt, 5%) | Break Potatoes; Loot in Pillager Outpost; Loot in Shipwreck, Shipwreck Beached; Loot in Village Plains | Baked Potato, Old Gateau, Potato Mochi |
| Prismarine Crystals (`minecraft:prismarine_crystals`) | Chinchou (shallows, ×0-1) | Break Sea Lantern; Loot in Buried Treasure | Pokédex, Pokédex, Pokédex, Pokédex, Pokédex, Pokédex, Pokédex, Sea Lantern … | | Prismarine Crystals (`minecraft:prismarine_crystals`) | Chinchou (shallows, ×0-1) | Break Sea Lantern; Loot in Buried Treasure | Pokédex, Pokédex, Pokédex, Pokédex, Pokédex, Pokédex, Pokédex, Sea Lantern … |
| Prismarine Shard (`minecraft:prismarine_shard`) | Horsea (deep_sea, ×0-1); Kingdra (deep_sea, ×0-3); Qwilfish (shallows, ×0-1); Seadra (deep_sea, ×0-2) | – | Dark Prismarine, Prismarine, Prismarine Bricks, Sea Lantern, Smithing Template | | Prismarine Shard (`minecraft:prismarine_shard`) | Horsea (deep_sea, ×0-1); Kingdra (deep_sea, ×0-3); Qwilfish (shallows, ×0-1); Seadra (deep_sea, ×0-2) | – | Dark Prismarine, Prismarine, Prismarine Bricks, Sea Lantern, Smithing Template |
| Protector (`cobblemon:protector`) | Donphan (sunscorch, 5%); Rhydon (frostpeak, 5%); Rhyperior (frostpeak, 10%) | Brush suspicious blocks in Deserted Town Center Ruins (cobblemon); Brush suspicious blocks in Fallen Statue Ruins (cobblemon); Brush suspicious blocks in Mossy Oubliette Ruins (cobblemon); Brush suspicious blocks in Sunscorched Gimmi Tower (cobblemon); Crafting … | Assault Vest | | Protector (`cobblemon:protector`) | Donphan (sunscorch, 5%); Rhydon (frostpeak, 5%); Rhyperior (frostpeak, 10%) | Brush suspicious blocks in Deserted Town Center Ruins (cobblemon); Brush suspicious blocks in Fallen Statue Ruins (cobblemon); Brush suspicious blocks in Mossy Oubliette Ruins (cobblemon); Brush suspicious blocks in Sunscorched Gimmi Tower (cobblemon); Crafting … | Assault Vest |
| Psychic Seed (`cobblemon:psychic_seed`) | Exeggcute (jungle, 2.5%); Exeggutor (jungle, 5%) | Break Psychic Seed | Miracle Seed | | Psychic Seed (`cobblemon:psychic_seed`) | Exeggcute (jungle, 2.5%); Exeggutor (jungle, 5%) | Break Lucibell; Break Psychic Seed | Miracle Seed |
| Pufferfish (`minecraft:pufferfish`) | Qwilfish (shallows, ×1) | Fishing | brewing: Water Breathing | | Pufferfish (`minecraft:pufferfish`) | Qwilfish (shallows, ×1) | Fishing | brewing: Water Breathing |
| Pumpkin Seeds (`minecraft:pumpkin_seeds`) | Pumpkaboo (southwold, ×0-1) | Craft from a pumpkin; Crafting (shapeless); Loot in Mineshaft, Mineshaft Mesa; Loot in Monster Room (worldgen feature) | Miracle Seed, Pewter Crunchies | | Pumpkin Seeds (`minecraft:pumpkin_seeds`) | Pumpkaboo (southwold, ×0-1) | Craft from a pumpkin; Crafting (shapeless); Loot in Mineshaft, Mineshaft Mesa; Loot in Monster Room (worldgen feature) | Miracle Seed, Pewter Crunchies |
| Purple Wool (`minecraft:purple_wool`) | – | Break Purple Wool; Crafting (shapeless) | Air Balloon, Black Wool, Blue Wool, Brown Wool, Choice Scarf, Covert Cloak, Cyan Wool, Destiny Knot … | | Purple Wool (`minecraft:purple_wool`) | – | Break Purple Wool; Crafting (shapeless) | Air Balloon, Black Wool, Blue Wool, Brown Wool, Choice Scarf, Covert Cloak, Cyan Wool, Destiny Knot … |
| Rabbit Hide (`minecraft:rabbit_hide`) | Buneary (westmarch, ×0-1); Bunnelby (southwold, ×0-1); Cinderace (highlands, ×0-3); Raboot (highlands, ×0-2); Scorbunny (highlands, ×0-1) | – | Leather, Protective Pads, Punching Glove, Sachet, Soft Sand, Terrain Extender | | Rabbit Hide (`minecraft:rabbit_hide`) | Buneary (westmarch, ×0-1); Bunnelby (southwold, ×0-1); Cinderace (highlands, ×0-3); Raboot (highlands, ×0-2); Scorbunny (highlands, ×0-1) | – | Leather, Protective Pads, Punching Glove, Sachet, Soft Sand, Terrain Extender |
| Rabbit's Foot (`minecraft:rabbit_foot`) | Buneary (westmarch, 2.5%); Bunnelby (southwold, 2.5%); Cinderace (highlands, 25%); Raboot (highlands, 10%); Scorbunny (highlands, 5%) | – | brewing: Leaping, Blunder Policy, Loaded Dice | | Rabbit's Foot (`minecraft:rabbit_foot`) | Buneary (westmarch, 2.5%); Bunnelby (southwold, 2.5%); Cinderace (highlands, 25%); Raboot (highlands, 10%); Scorbunny (highlands, 5%) | – | brewing: Leaping, Blunder Policy, Loaded Dice |
| Raw Beef (`minecraft:beef`) | Bouffalant (highlands, ×1-3); Miltank (highlands, ×1-3); Tauros (highlands, ×1-3) | – | Open-Faced Sandwich, Steak | | Raw Beef (`minecraft:beef`) | Bouffalant (highlands, ×1-3); Miltank (highlands, ×1-3); Tauros (highlands, mire, sunscorch, ×1-3) | – | Open-Faced Sandwich, Steak |
| Raw Chicken (`minecraft:chicken`) | Braviary (frostpeak, ×1); Chatot (jungle, ×1); Combusken (highlands, ×1); Corviknight (deep_dark, ×1); Cramorant (shallows, ×1); Dartrix (frostpeak, ×1); Decidueye (frostpeak, ×1); Delibird (frostpeak, ×1); Ducklett (mire, ×1); Espathra (sunscorch, ×1); Farfetch'd (southwold, ×1); Fearow (sunscorch, ×1); Flamigo (mire, ×1); Fletchinder (highlands, ×1); Fletchling (highlands, ×1); Golduck (highlands, ×1); Honchkrow (deep_dark, ×1); Hoothoot (button_isle, ×1); Kilowattrel (deep_sea, ×1); Natu (jungle, ×1); Pidgeotto (highlands, ×1); Pidgey (highlands, ×1); Pidove (southwold, ×1); Pikipek (jungle, ×1); Psyduck (highlands, ×1); Squawkabilly (southwold, ×1); Staraptor (frostpeak, ×1); Swablu (southwold, ×1); Swanna (mire, ×1); Taillow (southwold, ×1); Talonflame (highlands, ×1); Torchic (highlands, ×1); Toucannon (jungle, ×1); Trumbeak (jungle, ×1); Wingull (shallows, ×1); Xatu (jungle, ×1) | – | Cooked Chicken, Open-Faced Sandwich | | Raw Chicken (`minecraft:chicken`) | Braviary (frostpeak, ×1); Chatot (jungle, ×1); Combusken (highlands, ×1); Corviknight (deep_dark, ×1); Cramorant (shallows, ×1); Dartrix (frostpeak, ×1); Decidueye (frostpeak, ×1); Delibird (frostpeak, ×1); Dodrio (highlands, ×1); Doduo (highlands, ×1); Ducklett (mire, ×1); Eiscue (frostpeak, ×1); Empoleon (deep_sea, ×1); Espathra (sunscorch, ×1); Farfetch'd (southwold, ×1); Fearow (sunscorch, ×1); Flamigo (mire, ×1); Fletchinder (highlands, ×1); Fletchling (highlands, ×1); Golduck (highlands, ×1); Honchkrow (deep_dark, ×1); Hoothoot (button_isle, ×1); Kilowattrel (deep_sea, ×1); Natu (jungle, ×1); Pidgeotto (highlands, ×1); Pidgey (highlands, ×1); Pidove (southwold, ×1); Pikipek (jungle, ×1); Piplup (deep_sea, ×1); Prinplup (deep_sea, ×1); Psyduck (highlands, ×1); Squawkabilly (southwold, ×1); Staraptor (frostpeak, ×1); Swablu (southwold, ×1); Swanna (mire, ×1); Taillow (southwold, ×1); Talonflame (highlands, ×1); Torchic (highlands, ×1); Toucannon (jungle, ×1); Trumbeak (jungle, ×1); Wingull (shallows, ×1); Xatu (jungle, ×1) | – | Cooked Chicken, Open-Faced Sandwich |
| Raw Cod (`minecraft:cod`) | Alomomola (shallows, ×1); Bruxish (shallows, ×1); Cramorant (shallows, ×0-2); Finizen (shallows, ×0-1); Finneon (shallows, ×1); Mantine (deep_sea, ×0-2); Mantyke (deep_sea, ×0-1); Remoraid (deep_sea, ×1); Veluza (deep_sea, ×1-3); Wishiwashi (shallows, ×1) | Fishing; Loot in Beach (cobblemon), Deep Ocean (cobblemon), Warm Ocean (cobblemon); Loot in Village Plains | Cooked Cod | | Raw Cod (`minecraft:cod`) | Alomomola (deep_sea, ×1); Beartic (frostpeak, ×0-2); Bruxish (shallows, ×1); Cramorant (shallows, ×0-2); Dewgong (deep_sea, ×0-2); Eiscue (frostpeak, ×0-1); Finizen (shallows, ×0-1); Finneon (shallows, ×1); Mantine (deep_sea, ×0-2); Mantyke (deep_sea, ×0-1); Remoraid (deep_sea, ×1); Sealeo (deep_sea, ×0-2); Seel (deep_sea, ×0-1); Veluza (deep_sea, ×1-3); Walrein (deep_sea, ×0-3); Wishiwashi (shallows, ×1) | Fishing; Loot in Beach (cobblemon), Deep Ocean (cobblemon), Warm Ocean (cobblemon); Loot in Village Plains | Cooked Cod |
| Raw Copper (`minecraft:raw_copper`) | Copperajah (frostpeak, ×0-2); Gigalith (deep_dark, ×0-3) | Break Copper Ore; Brush suspicious blocks in Prehistoric Birch Tree (worldgen feature); Brush suspicious blocks in Prehistoric Dripstone Oasis (worldgen feature); Brush suspicious blocks in Prehistoric Enhydro Agate (worldgen feature); Brush suspicious blocks in Prehistoric Eroded Pillar (worldgen feature) … | Block of Raw Copper, Copper Ingot | | Raw Copper (`minecraft:raw_copper`) | Copperajah (frostpeak, ×0-2); Gigalith (deep_dark, ×0-3) | Break Copper Ore; Break Deepslate Copper Ore; Brush suspicious blocks in Prehistoric Birch Tree (worldgen feature); Brush suspicious blocks in Prehistoric Dripstone Oasis (worldgen feature); Brush suspicious blocks in Prehistoric Enhydro Agate (worldgen feature) … | Block of Raw Copper, Copper Ingot |
| Raw Iron (`minecraft:raw_iron`) | Bronzong (deep_dark, ×0-2); Dhelmise (deep_sea, ×0-2); Durant (basalt, ×0-1); Ferroseed (lush_caves, ×0-1); Klinklang (deep_dark, ×0-3); Magnemite (southwold, ×0-1); Steelix (deep_dark, ×2-4); Tinkatink (highlands, ×0-1); Tinkatuff (highlands, ×0-2) | Brush suspicious blocks in Prehistoric Birch Tree (worldgen feature); Brush suspicious blocks in Prehistoric Dripstone Oasis (worldgen feature); Brush suspicious blocks in Prehistoric Enhydro Agate (worldgen feature); Brush suspicious blocks in Prehistoric Eroded Pillar (worldgen feature); Brush suspicious blocks in Prehistoric Hydrothermal Vents (worldgen feature) … | Block of Raw Iron, Iron Ingot | | Raw Iron (`minecraft:raw_iron`) | Aron (dripstone, ×0-1); Bronzong (deep_dark, ×0-2); Dhelmise (deep_sea, ×0-2); Durant (basalt, ×0-1); Ferroseed (lush_caves, ×0-1); Klinklang (deep_dark, ×0-3); Lairon (dripstone, ×0-2); Magnemite (southwold, ×0-1); Steelix (deep_dark, ×2-4); Tinkatink (highlands, ×0-1); Tinkatuff (highlands, ×0-2) | Break Deepslate Iron Ore; Break Iron Ore; Brush suspicious blocks in Prehistoric Birch Tree (worldgen feature); Brush suspicious blocks in Prehistoric Dripstone Oasis (worldgen feature); Brush suspicious blocks in Prehistoric Enhydro Agate (worldgen feature) … | Block of Raw Iron, Iron Ingot |
| Raw Mutton (`minecraft:mutton`) | Ampharos (highlands, ×2-4); Dubwool (frostpeak, ×1-3); Flaaffy (highlands, ×1-3); Gogoat (frostpeak, ×1-3); Mareep (highlands, ×1-2) | – | Cooked Mutton, Open-Faced Sandwich | | Raw Mutton (`minecraft:mutton`) | Ampharos (highlands, ×2-4); Dubwool (frostpeak, ×1-3); Flaaffy (highlands, ×1-3); Gogoat (frostpeak, ×1-3); Mareep (highlands, ×1-2) | – | Cooked Mutton, Open-Faced Sandwich |
| Raw Porkchop (`minecraft:porkchop`) | Grumpig (frostpeak, ×1-3); Lechonk (highlands, ×1-2); Oinkologne (highlands, ×1-3); Pignite (highlands, ×1-3); Tepig (highlands, ×1-2) | – | Cooked Porkchop, Open-Faced Sandwich | | Raw Porkchop (`minecraft:porkchop`) | Grumpig (frostpeak, ×1-3); Lechonk (highlands, ×1-2); Mamoswine (frostpeak, ×2-3); Oinkologne (highlands, ×1-3); Pignite (highlands, ×1-3); Piloswine (frostpeak, ×1-2); Tepig (highlands, ×1-2) | – | Cooked Porkchop, Open-Faced Sandwich |
| Raw Rabbit (`minecraft:rabbit`) | Buneary (westmarch, ×1); Bunnelby (southwold, ×1); Cinderace (highlands, ×1); Raboot (highlands, ×1); Scorbunny (highlands, ×1) | – | Cooked Rabbit, Open-Faced Sandwich | | Raw Rabbit (`minecraft:rabbit`) | Buneary (westmarch, ×1); Bunnelby (southwold, ×1); Cinderace (highlands, ×1); Raboot (highlands, ×1); Scorbunny (highlands, ×1) | – | Cooked Rabbit, Open-Faced Sandwich |
| Raw Salmon (`minecraft:salmon`) | Arrokuda (mire, ×1); Barraskewda (mire, ×1); Basculegion (frostpeak, ×1); Basculin (frostpeak, ×1); Buizel (highlands, ×0-1); Dondozo (mire, ×1); Floatzel (highlands, ×0-2); Goldeen (southwold, ×1); Gyarados (westmarch, ×1); Magikarp (westmarch, ×1); Tatsugiri (mire, ×1) | Fishing; Loot in Village Plains | Cooked Salmon | | Raw Salmon (`minecraft:salmon`) | Barraskewda (deep_sea, ×1); Basculegion (frostpeak, ×1); Basculin (frostpeak, ×1); Buizel (highlands, ×0-1); Dondozo (mire, ×1); Floatzel (highlands, ×0-2); Goldeen (southwold, ×1); Gyarados (westmarch, ×1); Magikarp (westmarch, ×1); Tatsugiri (mire, ×1) | Fishing; Loot in Village Plains | Cooked Salmon |
| Rawst Berry (`cobblemon:rawst_berry`) | Arcanine (basalt, 5%); Camerupt (sunscorch, 5%); Capsakid (sunscorch, 2.5%); Darumaka (jungle, 2.5%); Fletchinder (highlands, 5%); Fletchling (highlands, 2.5%); Heatmor (basalt, 5%); Houndoom (basalt, 5%); Magmortar (basalt, 10%); Ninetales (highlands, 5%); Numel (sunscorch, 2.5%); Phantump (westmarch, 2.5%); Poltchageist (sunscorch, 2.5%); Scovillain (sunscorch, 5%); Sinistcha (sunscorch, 5%); Talonflame (highlands, 10%); Vulpix (highlands, 2.5%) | Break Rawst Berry; Wild berry trees in Badlands, Desert | Berry Juice, Burn Heal, Candied Berries, Cyan Dye | | Rawst Berry (`cobblemon:rawst_berry`) | Arcanine (basalt, 5%); Armarouge (basalt, 5%); Camerupt (sunscorch, 5%); Capsakid (sunscorch, 2.5%); Chandelure (deep_dark, 10%); Darumaka (frostpeak, jungle, 2.5%); Fletchinder (highlands, 5%); Fletchling (highlands, 2.5%); Growlithe (sunscorch, 2.5%); Heatmor (basalt, 5%); Houndoom (basalt, 5%); Lampent (deep_dark, 5%); Litleo (sunscorch, 2.5%); Magmortar (basalt, 10%); Ninetales (highlands, 5%); Numel (sunscorch, 2.5%); Phantump (westmarch, 2.5%); Poltchageist (sunscorch, 2.5%); Pyroar (sunscorch, 5%); Scovillain (sunscorch, 5%); Sinistcha (sunscorch, 5%); Talonflame (highlands, 10%); Vulpix (frostpeak, highlands, 2.5%) | Break Rawst Berry; Wild berry trees in Badlands, Desert | Berry Juice, Burn Heal, Candied Berries, Cyan Dye |
| Razor Fang (`cobblemon:razor_fang`) | Arbok (sunscorch, 5%); Bruxish (shallows, 5%); Crobat (deep_dark, 10%); Gliscor (basalt, 5%); Golbat (deep_dark, 5%); Mawile (basalt, 5%); Seviper (highlands, 5%); Tyrunt (lush_caves, 5%) | Brush suspicious blocks in Prehistoric Sandy Den (worldgen feature); Brush suspicious blocks in Prehistoric Sunscorched Den (worldgen feature); Brush suspicious blocks in Prehistoric Sunscorched Remains (worldgen feature) | Dragon Fang | | Razor Fang (`cobblemon:razor_fang`) | Arbok (sunscorch, 5%); Bruxish (shallows, 5%); Crobat (deep_dark, 10%); Farigiraf (sunscorch, 5%); Girafarig (sunscorch, 2.5%); Gliscor (basalt, 5%); Golbat (deep_dark, 5%); Mawile (basalt, 5%); Seviper (highlands, 5%); Tyrunt (lush_caves, 5%) | Brush suspicious blocks in Prehistoric Sandy Den (worldgen feature); Brush suspicious blocks in Prehistoric Sunscorched Den (worldgen feature); Brush suspicious blocks in Prehistoric Sunscorched Remains (worldgen feature) | Dragon Fang |
| Razz Berry (`cobblemon:razz_berry`) | Braviary (frostpeak, 5%); Kilowattrel (deep_sea, 5%); Pidove (southwold, 2.5%); Throh (frostpeak, 5%); Timburr (southwold, 2.5%); Tinkatink (highlands, 2.5%); Tinkatuff (highlands, 5%); Volbeat (mire, 5%) | Break Razz Berry; Wild berry trees in Cherry Grove, Forest | Berry Juice, Candied Berries, Red Dye | | Razz Berry (`cobblemon:razz_berry`) | Braviary (frostpeak, 5%); Kilowattrel (deep_sea, 5%); Pidove (southwold, 2.5%); Throh (frostpeak, 5%); Timburr (southwold, 2.5%); Tinkatink (highlands, 2.5%); Tinkatuff (highlands, 5%); Volbeat (mire, 5%) | Break Razz Berry; Wild berry trees in Cherry Grove, Forest | Berry Juice, Candied Berries, Red Dye |
| Red Mushroom (`minecraft:red_mushroom`) | Paras (lush_caves, ×0-2); Parasect (lush_caves, ×1) | Break Red Mushroom | Mushroom Stew, Poké Bait, Rabbit Stew, Suspicious Stew | | Red Mushroom (`minecraft:red_mushroom`) | Foongus (lush_caves, ×0-1); Paras (lush_caves, ×0-2); Parasect (lush_caves, ×1) | Break Red Mushroom | Mushroom Stew, Poké Bait, Rabbit Stew, Suspicious Stew |
| Red Wool (`minecraft:red_wool`) | – | Break Red Wool; Crafting (shapeless) | Air Balloon, Black Wool, Blue Wool, Brown Wool, Choice Scarf, Covert Cloak, Cyan Wool, Destiny Knot … | | Red Wool (`minecraft:red_wool`) | – | Break Red Wool; Crafting (shapeless) | Air Balloon, Black Wool, Blue Wool, Brown Wool, Choice Scarf, Covert Cloak, Cyan Wool, Destiny Knot … |
| Redstone Dust (`minecraft:redstone`) | Electabuzz (frostpeak, ×0-2); Electivire (frostpeak, ×0-3) | Break Redstone Wire; Crafting (shapeless); Loot in Decaying Crypt Ruins (cobblemon), Mossy Oubliette Ruins (cobblemon), Unstable Cave Ruins (cobblemon); Loot in Mineshaft, Mineshaft Mesa; Loot in Monster Room (worldgen feature) … | brewing: longer potions, Block of Redstone, Cell Battery, Choice Band, Choice Specs, Clock, Compass, Copper Bulb … | | Redstone Dust (`minecraft:redstone`) | Electabuzz (frostpeak, ×0-2); Electivire (frostpeak, ×0-3) | Blast furnace; Break Deepslate Redstone Ore; Break Redstone Ore; Break Redstone Wire; Crafting (shapeless) … | brewing: longer potions, Block of Redstone, Cell Battery, Choice Band, Choice Specs, Clock, Compass, Copper Bulb … |
| Relic Coin (`cobblemon:relic_coin`) | Gimmighoul (button_isle, ×24-48) | Break Relic Coin Pouch; Break Relic Coin Sack; Brush suspicious blocks in Decaying Crypt Ruins (cobblemon); Brush suspicious blocks in Deep Crypt (worldgen feature); Brush suspicious blocks in Deserted Gimmi Tower (cobblemon) … | Gold Nugget, Relic Coin Pouch | | Relic Coin (`cobblemon:relic_coin`) | Gimmighoul (button_isle, ×24-48) | Break Relic Coin Pouch; Break Relic Coin Sack; Brush suspicious blocks in Decaying Crypt Ruins (cobblemon); Brush suspicious blocks in Deep Crypt (worldgen feature); Brush suspicious blocks in Deserted Gimmi Tower (cobblemon) … | Gold Nugget, Relic Coin Pouch |
| Revival Herb (`cobblemon:revival_herb`) | Lilligant (westmarch, 5%); Petilil (westmarch, 2.5%); Sewaddle (westmarch, 2.5%); Swadloon (westmarch, 5%) | Break Revival Herb; Loot in Crumbling Arch (worldgen feature); Loot in Decaying Crypt Ruins (cobblemon), Deep Crypt (worldgen feature), Deserted Gimmi Tower (cobblemon), Frozen Gimmi Tower (cobblemon), Lush Gimmi Tower (cobblemon), Reclaimed Deserted Monument (cobblemon) and 5 more; Loot in Decaying Crypt Ruins (cobblemon), Rooted Gimmi Tower (cobblemon); Loot in Deep Crypt (worldgen feature), Lush Gimmi Tower (cobblemon) … | Heal Powder | | Revival Herb (`cobblemon:revival_herb`) | Lilligant (westmarch, 5%); Petilil (westmarch, 2.5%); Sewaddle (westmarch, 2.5%); Swadloon (westmarch, 5%) | Break Revival Herb; Loot in Crumbling Arch (worldgen feature); Loot in Decaying Crypt Ruins (cobblemon), Deep Crypt (worldgen feature), Deserted Gimmi Tower (cobblemon), Frozen Gimmi Tower (cobblemon), Lush Gimmi Tower (cobblemon), Reclaimed Deserted Monument (cobblemon) and 5 more; Loot in Decaying Crypt Ruins (cobblemon), Rooted Gimmi Tower (cobblemon); Loot in Deep Crypt (worldgen feature), Lush Gimmi Tower (cobblemon) … | Heal Powder |
| Rindo Berry (`cobblemon:rindo_berry`) | Barbaracle (deep_sea, 5%); Barboach (lush_caves, 2.5%); Binacle (deep_sea, 2.5%); Chewtle (highlands, 2.5%); Corsola (southwold, 5%); Drednaw (highlands, 5%); Finneon (shallows, 2.5%); Geodude (dripstone, 2.5%); Golem (dripstone, 10%); Graveler (dripstone, 5%); Panpour (jungle, 2.5%); Relicanth (southwold, 5%); Shellos (shallows, 2.5%); Simipour (jungle, 5%); Wooper (button_isle, 2.5%) | Break Rindo Berry; Wild berry trees in Cherry Grove, Forest, Jungle, Lush Caves, Plains | Berry Juice, Candied Berries, Lime Dye | | Rindo Berry (`cobblemon:rindo_berry`) | Barbaracle (deep_sea, 5%); Barboach (lush_caves, 2.5%); Binacle (deep_sea, 2.5%); Chewtle (highlands, 2.5%); Corsola (southwold, 5%); Drednaw (highlands, 5%); Finneon (shallows, 2.5%); Geodude (dripstone, westmarch, 2.5%); Golem (dripstone, 10%); Graveler (dripstone, 5%); Panpour (jungle, 2.5%); Relicanth (southwold, 5%); Shellos (shallows, 2.5%); Simipour (jungle, 5%); Wooper (button_isle, 2.5%) | Break Rindo Berry; Wild berry trees in Cherry Grove, Forest, Jungle, Lush Caves, Plains | Berry Juice, Candied Berries, Lime Dye |
| Roasted Leek (`cobblemon:roasted_leek`) | Capsakid (sunscorch, ×0-1); Scovillain (sunscorch, ×0-2) | Campfire; Smelting; Smoker | Leek and Potato Stew | | Roasted Leek (`cobblemon:roasted_leek`) | Capsakid (sunscorch, ×0-1); Scovillain (sunscorch, ×0-2) | Campfire; Smelting; Smoker | Leek and Potato Stew |
| Rose Bush (`minecraft:rose_bush`) | Roselia (frostpeak, ×0-1); Roserade (frostpeak, ×1-2) | Break Rose Bush; Use c:fertilizers on your Roselia; Use c:fertilizers on your Roserade | Red Dye | | Rose Bush (`minecraft:rose_bush`) | Roselia (frostpeak, ×0-1); Roserade (frostpeak, ×1-2) | Break Rose Bush; Use c:fertilizers on your Roselia; Use c:fertilizers on your Roserade | Red Dye |
| Roseli Berry (`cobblemon:roseli_berry`) | Absol (basalt, 5%); Jangmo-o (jungle, 2.5%); Morpeko (button_isle, 5%); Nickit (westmarch, 2.5%); Sableye (button_isle, 5%); Scrafty (sunscorch, 5%); Scraggy (sunscorch, 2.5%); Thievul (westmarch, 5%); Zoroark (highlands, 5%); Zweilous (deep_dark, 5%) | Break Roseli Berry; Wild berry trees in Cherry Grove | Berry Juice, Candied Berries, Red Dye | | Roseli Berry (`cobblemon:roseli_berry`) | Absol (basalt, 5%); Grimmsnarl (deep_dark, 10%); Jangmo-o (jungle, 2.5%); Morpeko (button_isle, 5%); Nickit (westmarch, 2.5%); Pancham (jungle, 2.5%); Sableye (button_isle, 5%); Scrafty (sunscorch, 5%); Scraggy (sunscorch, 2.5%); Thievul (westmarch, 5%); Zoroark (highlands, 5%); Zweilous (deep_dark, 5%) | Break Roseli Berry; Wild berry trees in Cherry Grove | Berry Juice, Candied Berries, Red Dye |
| Rotten Flesh (`minecraft:rotten_flesh`) | Electrike (highlands, ×0-1); Houndoom (basalt, ×0-2); Houndstone (deep_dark, ×0-2); Joltik (lush_caves, ×0-1); Liepard (basalt, ×0-2); Lycanroc (frostpeak, ×0-2); Mabosstiff (deep_dark, ×0-2); Manectric (highlands, ×0-2); Mightyena (highlands, ×0-2); Rattata (button_isle, ×0-1); Salandit (frostpeak, ×0-1); Spinarak (button_isle, ×0-1) | Fishing; Fishing with a Poké Rod; Loot in Desert Pyramid; Loot in Jungle Pyramid; Loot in Monster Room (worldgen feature) … | Mulch | | Rotten Flesh (`minecraft:rotten_flesh`) | Electrike (highlands, ×0-1); Houndoom (basalt, ×0-2); Houndstone (deep_dark, ×0-2); Joltik (lush_caves, ×0-1); Liepard (basalt, ×0-2); Litleo (sunscorch, ×0-1); Lycanroc (frostpeak, ×0-2); Mabosstiff (deep_dark, ×0-2); Manectric (highlands, ×0-2); Mightyena (highlands, ×0-2); Pyroar (sunscorch, ×0-2); Rattata (button_isle, ×0-1); Salandit (frostpeak, ×0-1); Spinarak (button_isle, ×0-1) | Fishing; Fishing with a Poké Rod; Loot in Desert Pyramid; Loot in Jungle Pyramid; Loot in Monster Room (worldgen feature) … | Mulch |
| Sand (`minecraft:sand`) | Hippopotas (sunscorch, ×0-1); Hippowdon (sunscorch, ×0-2); Sandygast (shallows, ×0-1) | Break Sand; Loot in Desert Pyramid; Use c:tools/brush on your Hippopotas; Use c:tools/brush on your Hippowdon; Use c:tools/brush on your Palossand … | Black Concrete Powder, Blue Concrete Powder, Brown Concrete Powder, Cyan Concrete Powder, Glass, Gray Concrete Powder, Green Concrete Powder, Light Blue Concrete Powder … | | Sand (`minecraft:sand`) | Hippopotas (sunscorch, ×0-1); Hippowdon (sunscorch, ×0-2); Sandygast (shallows, ×0-1) | Break Sand; Loot in Desert Pyramid; Use c:tools/brush on your Hippopotas; Use c:tools/brush on your Hippowdon; Use c:tools/brush on your Palossand … | Black Concrete Powder, Blue Concrete Powder, Brown Concrete Powder, Cyan Concrete Powder, Glass, Gray Concrete Powder, Green Concrete Powder, Light Blue Concrete Powder … |
| Shiny Stone (`cobblemon:shiny_stone`) | Togekiss (frostpeak, 10%); Togetic (frostpeak, 5%) | Brush suspicious blocks in Deserted Gimmi Tower (cobblemon); Brush suspicious blocks in Deserted Gimmi Tower (cobblemon), Rooted Gimmi Tower (cobblemon), Temperate Gimmi Tower (cobblemon); Crafting (shapeless); Loot in Crumbling Arch (worldgen feature); Loot in Decaying Crypt Ruins (cobblemon), Deep Crypt (worldgen feature), Deserted Gimmi Tower (cobblemon), Frozen Gimmi Tower (cobblemon), Lush Gimmi Tower (cobblemon), Reclaimed Deserted Monument (cobblemon) and 5 more … | Rebirth Core, Shiny Stone Block | | Shiny Stone (`cobblemon:shiny_stone`) | Togekiss (frostpeak, 10%); Togetic (frostpeak, 5%) | Blast furnace; Break Deepslate Shiny Stone Ore; Break Shiny Stone Ore; Brush suspicious blocks in Deserted Gimmi Tower (cobblemon); Brush suspicious blocks in Deserted Gimmi Tower (cobblemon), Rooted Gimmi Tower (cobblemon), Temperate Gimmi Tower (cobblemon) … | Blank Sigil, Rebirth Core, Shiny Stone Block |
| Shuca Berry (`cobblemon:shuca_berry`) | Glimmora (deep_dark, 5%); Luxio (sunscorch, 5%); Luxray (sunscorch, 10%); Magnemite (southwold, 2.5%); Orthworm (dripstone, 5%); Ponyta (highlands, 2.5%); Revavroom (deep_dark, 5%); Salandit (frostpeak, 2.5%); Togedemaru (frostpeak, 5%); Toxel (southwold, 2.5%) | Break Shuca Berry; Wild berry trees in Badlands, Desert, Plains | Berry Juice, Brown Dye, Candied Berries | | Shuca Berry (`cobblemon:shuca_berry`) | Glimmora (deep_dark, 5%); Luxio (sunscorch, 5%); Luxray (sunscorch, 10%); Magnemite (southwold, 2.5%); Orthworm (dripstone, 5%); Ponyta (highlands, 2.5%); Revavroom (deep_dark, 5%); Salandit (frostpeak, 2.5%); Togedemaru (frostpeak, 5%); Toxel (southwold, 2.5%) | Break Shuca Berry; Wild berry trees in Badlands, Desert, Plains | Berry Juice, Brown Dye, Candied Berries |
| Shulker Shell (`minecraft:shulker_shell`) | Cloyster (deep_sea, 10%); Shuckle (lush_caves, 10%) | – | Master Ball, Shulker Box | | Shulker Shell (`minecraft:shulker_shell`) | Cloyster (deep_sea, 10%); Shuckle (lush_caves, 10%) | – | Master Ball, Shulker Box |
| Silk Scarf (`cobblemon:silk_scarf`) | Eevee (southwold, 5%); Furfrou (southwold, 5%); Furret (southwold, 5%); Minccino (southwold, 2.5%); Sentret (southwold, 2.5%); Skitty (button_isle, 2.5%); Trubbish (lush_caves, 2.5%) | Crafting | Choice Scarf | | Silk Scarf (`cobblemon:silk_scarf`) | Eevee (southwold, 5%); Furfrou (southwold, 5%); Furret (southwold, 5%); Minccino (southwold, 2.5%); Sentret (southwold, 2.5%); Skitty (button_isle, 2.5%); Trubbish (lush_caves, 2.5%) | Crafting | Choice Scarf |
| Slimeball (`minecraft:slime_ball`) | Duosion (dripstone, ×0-2); Goomy (westmarch, ×0-1); Grimer (southwold, ×0-1); Lickilicky (highlands, ×0-2); Lickitung (highlands, ×0-1); Mareanie (shallows, ×0-1); Pyukumuku (shallows, ×0-2); Solosis (dripstone, ×0-1); Tynamo (southwold, ×0-1) | Crafting (shapeless); Use c:tools/brush on your Goodra; Use c:tools/brush on your Goomy; Use c:tools/brush on your Sliggoo | Binding Band, Lead, Loaded Dice, Magma Cream, Slime Block, Sticky Piston | | Slimeball (`minecraft:slime_ball`) | Duosion (dripstone, ×0-2); Goomy (westmarch, ×0-1); Grimer (southwold, ×0-1); Lickilicky (highlands, ×0-2); Lickitung (highlands, ×0-1); Mareanie (shallows, ×0-1); Pyukumuku (shallows, ×0-2); Solosis (dripstone, ×0-1); Tynamo (southwold, ×0-1) | Crafting (shapeless); Use c:tools/brush on your Goodra; Use c:tools/brush on your Goomy; Use c:tools/brush on your Sliggoo | Binding Band, Lead, Loaded Dice, Magma Cream, Slime Block, Sticky Piston |
| Smithing Template (`minecraft:tide_armor_trim_smithing_template`) | none (cosmetic (an armour trim); elder guardians don't live on the island) | – | Smithing Template | | Smithing Template (`minecraft:tide_armor_trim_smithing_template`) | none (cosmetic (an armour trim); elder guardians don't live on the island) | – | Smithing Template |
| Snowball (`minecraft:snowball`) | Abomasnow (frostpeak, ×0-2); Froslass (frostpeak, ×0-2); Frosmoth (frostpeak, ×0-2); Glalie (frostpeak, ×0-2); Vanillish (frostpeak, ×0-2); Vanilluxe (frostpeak, ×0-3) | Break Snow; Break Snow Block; Loot in Ancient City; Loot in Trial Chambers; Use c:tools/brush on your Vanillish … | Casteliacone, Snow Block | | Snowball (`minecraft:snowball`) | Abomasnow (frostpeak, ×0-2); Beartic (frostpeak, ×0-2); Froslass (frostpeak, ×0-2); Frosmoth (frostpeak, ×0-2); Glalie (frostpeak, ×0-2); Vanillish (frostpeak, ×0-2); Vanilluxe (frostpeak, ×0-3) | Break Snow; Break Snow Block; Loot in Ancient City; Loot in Trial Chambers; Use c:tools/brush on your Vanillish … | Casteliacone, Snow Block |
| Soft Sand (`cobblemon:soft_sand`) | Dugtrio (basalt, 5%); Excadrill (basalt, 5%); Flygon (sunscorch, 10%); Hippopotas (sunscorch, 2.5%); Hippowdon (sunscorch, 5%); Nincada (button_isle, 2.5%); Sandaconda (sunscorch, 5%); Sandshrew (sunscorch, 2.5%); Sandslash (sunscorch, 5%); Sandygast (shallows, 2.5%); Silicobra (sunscorch, 2.5%); Vibrava (sunscorch, 5%) | Break Soft Sand; Crafting | Smooth Rock | | Soft Sand (`cobblemon:soft_sand`) | Diglett (highlands, 2.5%); Dugtrio (basalt, 5%); Excadrill (basalt, 5%); Flygon (sunscorch, 10%); Hippopotas (sunscorch, 2.5%); Hippowdon (sunscorch, 5%); Nincada (button_isle, 2.5%); Sandaconda (sunscorch, 5%); Sandshrew (frostpeak, sunscorch, 2.5%); Sandslash (sunscorch, 5%); Sandygast (shallows, 2.5%); Silicobra (sunscorch, 2.5%); Vibrava (sunscorch, 5%) | Break Soft Sand; Crafting | Smooth Rock |
| Spider Eye (`minecraft:spider_eye`) | Joltik (lush_caves, ×0-1); Spinarak (button_isle, ×0-1); Tarountula (button_isle, ×0-1) | Loot in Desert Pyramid | brewing: Poison, Fermented Spider Eye | | Spider Eye (`minecraft:spider_eye`) | Joltik (lush_caves, ×0-1); Spinarak (button_isle, ×0-1); Tarountula (button_isle, ×0-1) | Loot in Desert Pyramid | brewing: Poison, Fermented Spider Eye |
| Stick (`minecraft:stick`) | Bidoof (button_isle, ×0-1); Braixen (sunscorch, ×1); Brambleghast (sunscorch, ×0-2); Delphox (sunscorch, ×1); Grookey (jungle, ×0-1); Grovyle (jungle, ×0-2); Thwackey (jungle, ×0-2); Treecko (jungle, ×0-1) | Break Acacia Leaves; Break Apricorn Leaves; Break Azalea Leaves; Break Birch Leaves; Break Cherry Leaves … | Acacia Fence, Acacia Fence Gate, Acacia Sign, Activator Rail, Apricorn Fence, Apricorn Fence Gate, Apricorn Sign, Armor Stand … | | Stick (`minecraft:stick`) | Bidoof (button_isle, ×0-1); Braixen (sunscorch, ×1); Brambleghast (sunscorch, ×0-2); Delphox (sunscorch, ×1); Grookey (jungle, ×0-1); Grovyle (jungle, ×0-2); Thwackey (jungle, ×0-2); Treecko (jungle, ×0-1) | Break Acacia Leaves; Break Apricorn Leaves; Break Azalea Leaves; Break Birch Leaves; Break Cherry Leaves … | Acacia Fence, Acacia Fence Gate, Acacia Sign, Activator Rail, Apricorn Fence, Apricorn Fence Gate, Apricorn Sign, Armor Stand … |
| Stone (`minecraft:stone`) | Stonjourner (highlands, ×2) | Break Infested Stone; Break Stone; Smelting | Chiseled Stone Bricks, Hard Stone, Quest Book, Redstone Comparator, Redstone Repeater, Smooth Stone, Stone Brick Slab, Stone Brick Stairs … | | Stone (`minecraft:stone`) | Stonjourner (highlands, ×2) | Break Infested Stone; Break Stone; Smelting | Chiseled Stone Bricks, Hard Stone, Quest Book, Redstone Comparator, Redstone Repeater, Smooth Stone, Stone Brick Slab, Stone Brick Stairs … |
| String (`minecraft:string`) | Burmy (southwold, ×0-1); Cascoon (button_isle, ×0-2); Caterpie (button_isle, ×0-1); Grubbin (southwold, ×0-1); Joltik (lush_caves, ×0-1); Kakuna (button_isle, ×0-2); Larvesta (sunscorch, ×0-1); Metapod (button_isle, ×0-2); Scatterbug (button_isle, ×0-1); Sewaddle (westmarch, ×0-1); Silcoon (button_isle, ×0-2); Spewpa (button_isle, ×0-2); Spinarak (button_isle, ×0-1); Swadloon (westmarch, ×0-2); Tarountula (button_isle, ×0-1); Venonat (southwold, ×0-1); Weedle (button_isle, ×0-1); Wurmple (button_isle, ×0-1) | Break Cobweb; Break Tripwire; Brush suspicious blocks in Trail Ruins; Fishing; Fishing with a Poké Rod … | Air Balloon, Binding Band, Bow, Candle, Clear Amulet, Crossbow, Destiny Knot, Fishing Rod … | | String (`minecraft:string`) | Burmy (southwold, ×0-1); Cascoon (button_isle, ×0-2); Caterpie (button_isle, ×0-1); Grubbin (southwold, ×0-1); Joltik (lush_caves, ×0-1); Kakuna (button_isle, ×0-2); Larvesta (sunscorch, ×0-1); Metapod (button_isle, ×0-2); Pineco (westmarch, ×0-1); Scatterbug (button_isle, ×0-1); Sewaddle (westmarch, ×0-1); Silcoon (button_isle, ×0-2); Spewpa (button_isle, ×0-2); Spinarak (button_isle, ×0-1); Swadloon (westmarch, ×0-2); Tarountula (button_isle, ×0-1); Venonat (southwold, ×0-1); Weedle (button_isle, ×0-1); Wurmple (button_isle, ×0-1) | Break Cobweb; Break Tripwire; Brush suspicious blocks in Trail Ruins; Fishing; Fishing with a Poké Rod … | Air Balloon, Binding Band, Bow, Candle, Clear Amulet, Crossbow, Destiny Knot, Fishing Rod … |
| Sugar (`minecraft:sugar`) | Alcremie (dripstone, ×0-2); Milcery (dripstone, ×0-1); Slurpuff (dripstone, ×0-2); Swirlix (dripstone, ×0-1) | Crafting (shapeless); Use c:tools/brush on your Alcremie; Use c:tools/brush on your Slurpuff; Use c:tools/brush on your Swirlix | brewing: Swiftness, Berry Sweet, Big Malasada, Blunder Policy, Cake, Candied Apple, Candied Berries, Casteliacone … | | Sugar (`minecraft:sugar`) | Alcremie (dripstone, ×0-2); Milcery (dripstone, ×0-1); Slurpuff (dripstone, ×0-2); Swirlix (dripstone, ×0-1) | Crafting (shapeless); Use c:tools/brush on your Alcremie; Use c:tools/brush on your Slurpuff; Use c:tools/brush on your Swirlix | brewing: Swiftness, Berry Sweet, Big Malasada, Blunder Policy, Cake, Candied Apple, Candied Berries, Casteliacone … |
| Sun Stone (`cobblemon:sun_stone`) | Solrock (dripstone, 5%) | Brush suspicious blocks in Prehistoric Eroded Pillar (worldgen feature); Brush suspicious blocks in Prehistoric Sandy Den (worldgen feature); Brush suspicious blocks in Prehistoric Sunscorched Den (worldgen feature); Brush suspicious blocks in Prehistoric Sunscorched Remains (worldgen feature); Brush suspicious blocks in Sunscorched Gimmi Tower (cobblemon) … | Sun Stone Block | | Sun Stone (`cobblemon:sun_stone`) | Solrock (dripstone, 5%) | Blast furnace; Break Deepslate Sun Stone Ore; Break Sun Stone Ore; Brush suspicious blocks in Prehistoric Eroded Pillar (worldgen feature); Brush suspicious blocks in Prehistoric Sandy Den (worldgen feature) … | Blank Sigil, Sun Stone Block |
| Sunflower (`minecraft:sunflower`) | – | Break Sunflower; Use c:fertilizers on your Sunflora | Yellow Dye | | Sunflower (`minecraft:sunflower`) | – | Break Sunflower; Use c:fertilizers on your Sunflora | Yellow Dye |
| Sweet Berries (`minecraft:sweet_berries`) | Abomasnow (frostpeak, ×2-4); Cherrim (frostpeak, ×2-4); Grotle (highlands, ×2-4); Nickit (westmarch, ×1-3); Ninetales (highlands, ×2-4); Teddiursa (westmarch, ×1-3); Thievul (westmarch, ×2-4); Vulpix (highlands, ×1-3); Zoroark (highlands, ×2-4); Zorua (highlands, ×1-3) | Use c:fertilizers on your Grotle | Fine Remedy, Jubilife Muffin, Superb Remedy, Whipped Dream | | Sweet Berries (`minecraft:sweet_berries`) | Abomasnow (frostpeak, ×2-4); Cherrim (frostpeak, ×2-4); Grotle (highlands, ×2-4); Nickit (westmarch, ×1-3); Ninetales (highlands, ×2-4); Teddiursa (westmarch, ×1-3); Thievul (westmarch, ×2-4); Vulpix (frostpeak, highlands, ×1-3); Zoroark (highlands, ×2-4); Zorua (frostpeak, highlands, ×1-3) | Use c:fertilizers on your Grotle | Fine Remedy, Jubilife Muffin, Superb Remedy, Whipped Dream |
| Tanga Berry (`cobblemon:tanga_berry`) | Cacnea (sunscorch, 2.5%); Cacturne (sunscorch, 5%); Espathra (sunscorch, 5%); Exeggcute (jungle, 2.5%); Exeggutor (jungle, 5%); Fomantis (jungle, 2.5%); Grumpig (frostpeak, 5%); Inkay (shallows, 2.5%); Krokorok (sunscorch, 5%); Krookodile (sunscorch, 10%); Mabosstiff (deep_dark, 5%); Nuzleaf (westmarch, 5%); Seedot (westmarch, 2.5%) | Break Tanga Berry; Wild berry trees in Cherry Grove, Forest, Jungle, Mangrove Swamp | Berry Juice, Candied Berries, Green Dye | | Tanga Berry (`cobblemon:tanga_berry`) | Cacnea (sunscorch, 2.5%); Cacturne (sunscorch, 5%); Espathra (sunscorch, 5%); Exeggcute (jungle, 2.5%); Exeggutor (jungle, 5%); Fomantis (jungle, 2.5%); Grumpig (frostpeak, 5%); Krokorok (sunscorch, 5%); Krookodile (sunscorch, 10%); Mabosstiff (deep_dark, 5%); Malamar (deep_sea, the_end, 5%); Nuzleaf (westmarch, 5%); Seedot (westmarch, 2.5%) | Break Tanga Berry; Wild berry trees in Cherry Grove, Forest, Jungle, Mangrove Swamp | Berry Juice, Candied Berries, Green Dye |
| Tasty Tail (`cobblemon:tasty_tail`) | Slowpoke (jungle, mire, 10%) | – | Open-Faced Sandwich, Smoked-Tail Curry |
| Terracotta (`minecraft:terracotta`) | Crustle (sunscorch, ×0-2); Dwebble (sunscorch, ×0-1) | Break Terracotta; Smelting | Black Terracotta, Blue Terracotta, Brown Terracotta, Cyan Terracotta, Gray Terracotta, Green Terracotta, Light Blue Terracotta, Light Gray Terracotta … | | Terracotta (`minecraft:terracotta`) | Crustle (sunscorch, ×0-2); Dwebble (sunscorch, ×0-1) | Break Terracotta; Smelting | Black Terracotta, Blue Terracotta, Brown Terracotta, Cyan Terracotta, Gray Terracotta, Green Terracotta, Light Blue Terracotta, Light Gray Terracotta … |
| Thunder Stone (`cobblemon:thunder_stone`) | Pichu (westmarch, 2.5%); Pikachu (westmarch, 5%) | Crafting (shapeless); Loot in Crumbling Arch (worldgen feature); Loot in Decaying Crypt Ruins (cobblemon), Deep Crypt (worldgen feature), Deserted Gimmi Tower (cobblemon), Frozen Gimmi Tower (cobblemon), Lush Gimmi Tower (cobblemon), Reclaimed Deserted Monument (cobblemon) and 5 more; Loot in Decaying Crypt Ruins (cobblemon), Rooted Gimmi Tower (cobblemon); Loot in Deep Crypt (worldgen feature), Lush Gimmi Tower (cobblemon) … | Dynamo Core, Light Ball, Metal Alloy, Thunder Stone Block | | Thunder Stone (`cobblemon:thunder_stone`) | Pichu (westmarch, 2.5%); Pikachu (westmarch, 5%) | Blast furnace; Break Deepslate Thunder Stone Ore; Break Thunder Stone Ore; Crafting (shapeless); Loot in Crumbling Arch (worldgen feature) … | Blank Sigil, Dynamo Core, Light Ball, Metal Alloy, Thunder Stone Block |
| Turtle Scute (`minecraft:turtle_scute`) | Chewtle (highlands, ×0-1); Drednaw (highlands, ×0-2); Squirtle (highlands, ×0-1); Tirtouga (lush_caves, ×0-2); Turtonator (basalt, ×0-2); Wartortle (highlands, ×0-2) | – | Rocky Helmet, Safety Goggles, Turtle Shell | | Turtle Scute (`minecraft:turtle_scute`) | Chewtle (highlands, ×0-1); Drednaw (highlands, ×0-2); Squirtle (highlands, ×0-1); Tirtouga (lush_caves, ×0-2); Turtonator (basalt, ×0-2); Wartortle (highlands, ×0-2) | – | Rocky Helmet, Safety Goggles, Turtle Shell |
| Verdroot (`cobblemon:verdroot`) | Comfey (dripstone, 5%) | Break Verdroot | Bright Powder, Green Dye |
| Vines (`minecraft:vine`) | Tangela (jungle, ×0-1); Tangrowth (jungle, ×0-2) | Break Vines; Use c:fertilizers on your Tangela; Use c:fertilizers on your Tangrowth | Mossy Cobblestone, Mossy Stone Bricks | | Vines (`minecraft:vine`) | Tangela (jungle, ×0-1); Tangrowth (jungle, ×0-2) | Break Vines; Use c:fertilizers on your Tangela; Use c:fertilizers on your Tangrowth | Mossy Cobblestone, Mossy Stone Bricks |
| Wacan Berry (`cobblemon:wacan_berry`) | Buizel (highlands, 2.5%); Corviknight (deep_dark, 10%); Cramorant (shallows, 5%); Ducklett (mire, 2.5%); Floatzel (highlands, 5%); Goldeen (southwold, 2.5%); Gyarados (westmarch, 5%); Magikarp (westmarch, 2.5%); Mantine (deep_sea, 5%); Mantyke (deep_sea, 2.5%); Masquerain (mire, 5%); Surskit (mire, 2.5%); Swanna (mire, 5%); Wingull (shallows, 2.5%) | Break Wacan Berry; Wild berry trees in Cherry Grove, Plains, Windswept Hills | Berry Juice, Candied Berries, Yellow Dye | | Voltaconia (`cobblemon:voltaconia`) | Comfey (dripstone, 5%) | Break Voltaconia | Bright Powder, Light Blue Dye |
| Water Stone (`cobblemon:water_stone`) | Panpour (jungle, 2.5%); Simipour (jungle, 5%) | Blast furnace; Break Water Stone Ore; Brush suspicious blocks in Prehistoric Dripstone Oasis (worldgen feature); Brush suspicious blocks in Prehistoric Enhydro Agate (worldgen feature); Brush suspicious blocks in Prehistoric Mossy Pond (worldgen feature) … | Damp Rock, Water Stone Block | | Wacan Berry (`cobblemon:wacan_berry`) | Buizel (highlands, 2.5%); Corviknight (deep_dark, 10%); Cramorant (shallows, 5%); Dodrio (highlands, 5%); Doduo (highlands, 2.5%); Ducklett (mire, 2.5%); Floatzel (highlands, 5%); Goldeen (southwold, 2.5%); Gyarados (westmarch, 5%); Magikarp (westmarch, 2.5%); Mantine (deep_sea, 5%); Mantyke (deep_sea, 2.5%); Masquerain (mire, 5%); Surskit (mire, 2.5%); Swanna (mire, 5%); Wingull (shallows, 2.5%) | Break Wacan Berry; Wild berry trees in Cherry Grove, Plains, Windswept Hills | Berry Juice, Candied Berries, Yellow Dye |
| Water Stone (`cobblemon:water_stone`) | Panpour (jungle, 2.5%); Simipour (jungle, 5%) | Blast furnace; Break Deepslate Water Stone Ore; Break Water Stone Ore; Brush suspicious blocks in Prehistoric Dripstone Oasis (worldgen feature); Brush suspicious blocks in Prehistoric Enhydro Agate (worldgen feature) … | Blank Sigil, Damp Rock, Water Stone Block |
| Wepear Berry (`cobblemon:wepear_berry`) | Araquanid (westmarch, 5%); Bellibolt (mire, 5%); Bouffalant (highlands, 5%); Butterfree (button_isle, 5%); Caterpie (button_isle, 2.5%); Dewpider (westmarch, 2.5%); Grubbin (southwold, 2.5%); Machamp (frostpeak, 10%); Machoke (frostpeak, 5%); Metapod (button_isle, 2.5%); Scyther (westmarch, 2.5%); Tadbulb (mire, 2.5%); Yamper (southwold, 2.5%) | Break Wepear Berry; Wild berry trees in Plains | Berry Juice, Candied Berries, Lime Dye | | Wepear Berry (`cobblemon:wepear_berry`) | Araquanid (westmarch, 5%); Bellibolt (mire, 5%); Bouffalant (highlands, 5%); Butterfree (button_isle, 5%); Caterpie (button_isle, 2.5%); Dewpider (westmarch, 2.5%); Grubbin (southwold, 2.5%); Machamp (frostpeak, 10%); Machoke (frostpeak, 5%); Metapod (button_isle, 2.5%); Scyther (westmarch, 2.5%); Tadbulb (mire, 2.5%); Yamper (southwold, 2.5%) | Break Wepear Berry; Wild berry trees in Plains | Berry Juice, Candied Berries, Lime Dye |
| Wet Sponge (`minecraft:wet_sponge`) | – | Break Wet Sponge | Sponge | | Wet Sponge (`minecraft:wet_sponge`) | – | Break Wet Sponge | Sponge |
| Wheat Seeds (`minecraft:wheat_seeds`) | Maushold (westmarch, ×0-2); Sunkern (button_isle, ×1); Tandemaus (westmarch, ×0-1) | Break Fern; Break Large Fern; Break Short Grass; Break Tall Grass; Break Wheat … | Miracle Seed | | Wheat Seeds (`minecraft:wheat_seeds`) | Maushold (westmarch, ×0-2); Sunkern (button_isle, ×1); Tandemaus (westmarch, ×0-1) | Break Fern; Break Large Fern; Break Short Grass; Break Tall Grass; Break Wheat … | Miracle Seed |
| White Wool (`minecraft:white_wool`) | Cottonee (highlands, ×1); Dubwool (frostpeak, ×1-2); Eldegoss (frostpeak, ×1-2); Flaaffy (highlands, ×1); Furfrou (southwold, ×1-2); Jumpluff (highlands, ×1-3); Mareep (highlands, ×1-2); Swablu (southwold, ×0-1); Whimsicott (highlands, ×1-2) | Break White Wool; Crafting; Crafting (shapeless); Use c:tools/brush on your Altaria; Use c:tools/brush on your Swablu | Air Balloon, Black Wool, Blue Wool, Brown Wool, Choice Scarf, Covert Cloak, Cyan Wool, Destiny Knot … | | White Wool (`minecraft:white_wool`) | Cottonee (highlands, ×1); Dubwool (frostpeak, ×1-2); Eldegoss (frostpeak, ×1-2); Flaaffy (highlands, ×1); Furfrou (southwold, ×1-2); Jumpluff (highlands, ×1-3); Mareep (highlands, ×1-2); Swablu (southwold, ×0-1); Whimsicott (highlands, ×1-2) | Break White Wool; Crafting; Crafting (shapeless); Use c:tools/brush on your Altaria; Use c:tools/brush on your Swablu | Air Balloon, Black Wool, Blue Wool, Brown Wool, Choice Scarf, Covert Cloak, Cyan Wool, Destiny Knot … |
| Wise Glasses (`cobblemon:wise_glasses`) | Hoothoot (button_isle, 2.5%); Meditite (button_isle, 2.5%); Natu (jungle, 2.5%); Xatu (jungle, 5%) | Crafting | Choice Specs | | Wise Glasses (`cobblemon:wise_glasses`) | Hoothoot (button_isle, 2.5%); Meditite (button_isle, 2.5%); Natu (jungle, 2.5%); Xatu (jungle, 5%) | Crafting | Choice Specs |
| Wistensu (`cobblemon:wistensu`) | Cutiefly (lush_caves, 5%) | Break Wistensu | Purple Dye |
| Wither Skeleton Skull (`minecraft:wither_skeleton_skull`) | none (cosmetic here (the skull banner pattern); the Wither can't be built) | – | Banner Pattern | | Wither Skeleton Skull (`minecraft:wither_skeleton_skull`) | none (cosmetic here (the skull banner pattern); the Wither can't be built) | – | Banner Pattern |
| Yache Berry (`cobblemon:yache_berry`) | Appletun (westmarch, 10%); Applin (westmarch, 2.5%); Bagon (dripstone, 2.5%); Deerling (westmarch, 2.5%); Dratini (westmarch, 2.5%); Flapple (westmarch, 5%); Flygon (sunscorch, 10%); Gliscor (basalt, 5%); Hoppip (highlands, 2.5%); Jumpluff (highlands, 10%); Noibat (southwold, 2.5%); Shelgon (dripstone, 5%); Skiploom (highlands, 5%); Staraptor (frostpeak, 10%); Swablu (southwold, 2.5%); Vibrava (sunscorch, 5%) | Break Yache Berry; Wild berry trees in Jagged Peaks | Berry Juice, Candied Berries, Cyan Dye | | Yache Berry (`cobblemon:yache_berry`) | Appletun (westmarch, 10%); Applin (westmarch, 2.5%); Bagon (dripstone, 2.5%); Deerling (westmarch, 2.5%); Dratini (westmarch, 2.5%); Emolga (westmarch, 5%); Flapple (westmarch, 5%); Flygon (sunscorch, 10%); Gliscor (basalt, 5%); Hoppip (highlands, 2.5%); Jumpluff (highlands, 10%); Noibat (westmarch, 2.5%); Shelgon (dripstone, 5%); Skiploom (highlands, 5%); Staraptor (frostpeak, 10%); Swablu (southwold, 2.5%); Toedscool (mire, 2.5%); Toedscruel (mire, 5%); Vibrava (sunscorch, 5%) | Break Yache Berry; Wild berry trees in Jagged Peaks | Berry Juice, Candied Berries, Cyan Dye |
| Yellow Wool (`minecraft:yellow_wool`) | – | Break Yellow Wool; Crafting (shapeless) | Air Balloon, Black Wool, Blue Wool, Brown Wool, Choice Scarf, Covert Cloak, Cyan Wool, Destiny Knot … | | Yellow Wool (`minecraft:yellow_wool`) | – | Break Yellow Wool; Crafting (shapeless) | Air Balloon, Black Wool, Blue Wool, Brown Wool, Choice Scarf, Covert Cloak, Cyan Wool, Destiny Knot … |
+223 -20
View File
@@ -14,8 +14,10 @@
# event: zone/<zone> | guardian/<zone> | machine/<core> | end_boss the pack's own events (hidden advancements) # event: zone/<zone> | guardian/<zone> | machine/<core> | end_boss the pack's own events (hidden advancements)
# checkmark: true the player ticks it # checkmark: true the player ticks it
# A task may also have a title. A chapter with `zone: <id>` starts with the quests of `zone_chapter`, where # A task may also have a title. A chapter with `zone: <id>` starts with the quests of `zone_chapter`, where
# {zone}, {low}, {high}, {hazard_text}, {guardian}, {guardian_level}, {drops} and {ore_names} come from the # {zone}, {low}, {high}, {guardian}, {guardian_level}, {drops} and {ore_names} come from the zone's data, and
# zone's data; a template quest with `when:` is left out of zones that lack the thing named. A chapter with # {about}, {locals} and {guardian_note} from the chapter (Adrian, 2026-11-10: no boilerplate; what a zone needs to be
# safe is a quest of its own, like the Mire's waders); a template quest with `when:` is left out of zones that lack
# the thing named. A chapter with
# `summons: true` adds a quest per Sigil (world/summons.json), `columns: <n>` lays those out in a grid. # `summons: true` adds a quest per Sigil (world/summons.json), `columns: <n>` lays those out in a grid.
book: book:
@@ -28,8 +30,7 @@ zone_chapter:
subtitle: "Lv {low}–{high}" subtitle: "Lv {low}–{high}"
icon: minecraft:filled_map icon: minecraft:filled_map
text: | text: |
Wild Pokémon in {zone} are level {low} to {high}. Bring a team that can hold its own there. {hazard_text} {about}
A Pokémon far above a zone's levels learns less from battles there; Exp. Candy always works in full.
tasks: tasks:
- event: "zone/{zone_id}" - event: "zone/{zone_id}"
title: "Reach {zone}" title: "Reach {zone}"
@@ -39,8 +40,7 @@ zone_chapter:
icon: cobblemon:poke_ball icon: cobblemon:poke_ball
after: [arrive] after: [arrive]
text: | text: |
Each kind of Pokémon lives in one zone of the island. Catch three that call {zone} home. Catch three Pokémon that live here, such as {locals}.
Their drops are what this zone adds to your crafting: look an item up in JEI to see who drops it.
tasks: tasks:
- cobblemon: catch - cobblemon: catch
zone_species: "{zone_id}" zone_species: "{zone_id}"
@@ -51,8 +51,7 @@ zone_chapter:
icon: minecraft:iron_pickaxe icon: minecraft:iron_pickaxe
after: [arrive] after: [arrive]
text: | text: |
There is no ore anywhere except in each zone's own veins, and they grow back after you mine them. {zone}'s veins give {ore_names}.
{zone} has {ore_names}.
tasks: tasks:
- each: ores - each: ores
count: 8 count: 8
@@ -62,9 +61,7 @@ zone_chapter:
icon: minecraft:netherite_sword icon: minecraft:netherite_sword
after: [locals] after: [locals]
text: | text: |
{guardian}, Lv {guardian_level}, guards {zone}: a giant that takes at most a quarter of its health from any one attack. {guardian}, Lv {guardian_level}, guards {zone}. Beating it gives {drops}. {guardian_note}
Within 128 blocks its bar shows how far away it is. In the fight, watch the ground and step out of its area attacks; leaving the arena or dying loses the fight.
Beat it for {drops}. It returns 5 hours later.
tasks: tasks:
- event: "guardian/{zone_id}" - event: "guardian/{zone_id}"
title: "Beat {guardian}" title: "Beat {guardian}"
@@ -83,7 +80,7 @@ chapters:
This island has no zombies, no creepers and no cows: only Pokémon. Their drops are your food, string, leather and much more. This island has no zombies, no creepers and no cows: only Pokémon. Their drops are your food, string, leather and much more.
The island is split into zones, each with its own Pokémon, levels, ores and a guardian. You start on Button Isle; the further out you go, the stronger everything gets. The island is split into zones, each with its own Pokémon, levels, ores and a guardian. You start on Button Isle; the further out you go, the stronger everything gets.
This book suggests what to do next. Nothing in it is locked and it gives no rewards: do things in any order you like. This first page walks through how the island works; the next one lists every field move your Pokémon can lend you. This book suggests what to do next. Nothing in it is locked and it gives no rewards: do things in any order you like. This first page walks through how the island works; the next lists every field move your Pokémon can lend you, and the one after explains the bigger mods.
tasks: tasks:
- checkmark: true - checkmark: true
title: Read this title: Read this
@@ -118,6 +115,7 @@ chapters:
Look at a wild Pokémon and press R: your Pokémon goes out and the battle starts. Look at a wild Pokémon and press R: your Pokémon goes out and the battle starts.
Wild Pokémon can also come to you. One that attacks you starts a battle instead of hurting you, unless none of your Pokémon can fight: then you take the hit yourself. Wild Pokémon can also come to you. One that attacks you starts a battle instead of hurting you, unless none of your Pokémon can fight: then you take the hit yourself.
Pokémon stronger than your team hunt you; weaker ones keep their distance. In a battle you can run, and you get a few seconds' head start. Pokémon stronger than your team hunt you; weaker ones keep their distance. In a battle you can run, and you get a few seconds' head start.
Button Isle is safe ground: its Pokémon never attack you unless you hit them first. If you ever lose everything, start over there.
tasks: tasks:
- cobblemon: defeat - cobblemon: defeat
amount: 1 amount: 1
@@ -135,7 +133,7 @@ chapters:
icon: cobblemon:poke_ball icon: cobblemon:poke_ball
after: [welcome] after: [welcome]
text: | text: |
Poké Balls are crafted from apricorns, which grow on apricorn trees around the island. Look the recipe up in JEI. Poké Balls are crafted from apricorns, which grow on apricorn trees all over Button Isle. Four apricorns of any colour around a piece of coal or charcoal make one; a copper ingot from Southwold in the middle makes four, if the apricorns are red. Look the recipes up in JEI.
tasks: tasks:
- item: cobblemon:poke_ball - item: cobblemon:poke_ball
count: 16 count: 16
@@ -207,7 +205,8 @@ chapters:
after: [level_10] after: [level_10]
text: | text: |
Each zone has its own Pokémon and level range; the book has a page for each. The channels between the islands are gentle, the open sea around them is not. Each zone has its own Pokémon and level range; the book has a page for each. The channels between the islands are gentle, the open sea around them is not.
Most zones have a guardian: a giant Pokémon with a health bar at the top of your screen when you are near. Only a battle can hurt it, and it can lose at most a quarter of its health to one attack. Beat it for its rewards; it comes back hours later. Each kind of Pokémon lives in one zone. A Pokémon far above a zone's levels learns less from battles there; Exp. Candy always works in full.
Most zones have a guardian: a giant Pokémon with a health bar at the top of your screen when you are within 128 blocks. Only a battle can hurt it, and it can lose at most a quarter of its health to one attack. Step out of its area attacks; leaving the arena or dying loses the fight. A beaten guardian returns 5 hours later.
tasks: tasks:
- checkmark: true - checkmark: true
title: Read this title: Read this
@@ -372,79 +371,283 @@ chapters:
- checkmark: true - checkmark: true
title: Read this title: Read this
- id: mods
title: Mods in the Pack
subtitle: What the bigger mods add, and how they work here
icon: cold_sweat:thermometer
quests:
- id: cold_sweat
title: Cold Sweat
icon: cold_sweat:thermometer
size: 1.5
text: |
You have a body temperature. The face above your hotbar shows it: it turns red as you heat up and blue as you cool down. At either end you take damage every two seconds; cold also slows you, makes you mine slower and freezes away up to half your hearts, and heat fogs your view.
Where you stand decides which way it moves. The lowlands are mild; Sunscorch and the Basalt Furnace are hot, Frostpeak is cold, and nights are cooler everywhere. Water cools you down. Over time you get used to the climate you're in.
The flame or snowflake by your hotbar shows roughly how hot or cold the place is; carry a Thermometer to read it exactly. For five minutes after you first arrive or respawn you are immune.
To stay safe: wear Goat Fur armour against cold or Hoglin Hide armour against heat, or sew Goat Fur, Hoglin Hide, wool or leather onto any armour at a Sewing Table. Pour a Waterskin of water over yourself to cool off. A Hearth keeps the area around your base comfortable, and a Boiler or Icebox with a Smokestack on top warms or cools a room.
tasks:
- checkmark: true
title: Read this
- id: fight_or_flight
title: Fight or Flight
icon: minecraft:iron_sword
after: [cold_sweat]
text: |
Wild Pokémon don't just stand there: each one either flees from you or fights back when you hit it, depending on its nature, level and type. Dark and Ghost types grow bolder in the dark.
This pack adds two reasons to fight: a wild Pokémon stronger than your whole team hunts you, and one that breaks out of your ball attacks you. Either way, its attack starts a battle. While it is angry a thrown ball can't catch it, so battle it first.
On Button Isle none of this happens unless you hit a Pokémon first.
tasks:
- checkmark: true
title: Read this
- id: cobblebase
title: Cobblebase
icon: cobblemon:pasture
after: [cold_sweat]
text: |
Pokémon in a Pasture Block can work. Open the pasture and give a Pokémon a skill in its Skills tab: harvesting, producing, mining, finding items, buffs and more. K opens Cobblebase's settings.
Better skills open up as your Pokémon grow: a skill names a zone, and the Pokémon needs that zone's top level or to hold one of its materials. An idle Pokémon tells you what it's missing.
Mining and finding drop items at the Pokémon's feet. A second Pokémon in the same pasture with Item Gatherer puts them into the nearest chest. What a pasture finds depends on its zone: JEI's Pasture Finds pages list it.
tasks:
- checkmark: true
title: Read this
- id: breeding
title: Breeding
icon: cobblemon:pasture
after: [cobblebase]
text: |
Put two compatible Pokémon (or one and a Ditto) in a Pasture Block and switch breeding on with the pasture's button. Now and then an egg appears in its nest; it hatches in your inventory after a while.
Ditto only lives in the Deep Dark.
tasks:
- checkmark: true
title: Read this
- id: veins
title: Regenerating Ore Veins
icon: minecraft:raw_iron
after: [cold_sweat]
text: |
Ore only grows in veins: small nodes on the surface and bigger veins underground, each ore in its own zone. A mined ore block turns into faint glass and grows back after a while, from 20 minutes for coal to longer for rarer ores; JEI's Ore Veins pages give the times.
You can't break the glass, but you can aim and mine through it. Sneak and use it to see when it grows back.
A Vein Locator, made from a compass and a copper ingot and set to an ore block, points to the nearest vein of that ore. It may break with each use.
tasks:
- checkmark: true
title: Read this
- id: lootr
title: Shared Loot
icon: minecraft:chest
after: [cold_sweat]
text: |
Chests in villages, ruins and other structures are shared by everybody: one inventory per chest, rolled once. An hour after it is first opened, a chest fills up again with new loot.
tasks:
- checkmark: true
title: Read this
- id: maps
title: Maps and Info
icon: minecraft:filled_map
after: [cold_sweat]
text: |
The minimap in the corner shows the land and the Pokémon around you. J opens the world map; your death points are marked there.
JEI (the item list beside your inventory): R shows how to get an item, U what it's used for. Cobblemon Info adds a page for every Pokémon, with where it spawns and what it drops; the pack's own pages add the island's zones, guardians, machines, ore veins and pasture finds.
Looking at something shows its name at the top of your screen; V shows more. AppleSkin shows how filling food is, and the buttons beside your inventory sort it.
tasks:
- checkmark: true
title: Read this
- id: button_isle - id: button_isle
zone: button_isle zone: button_isle
title: Button Isle title: Button Isle
icon: cobblemon:poke_ball icon: cobblemon:poke_ball
about: |
The round island in the middle, where you arrive, with a channel all around it. Forest and plains, a little cherry grove and desert, and apricorn trees everywhere.
Its Pokémon never attack you unless you hit them first: if you ever lose everything, start over here.
locals: Rattata, Bidoof and Caterpie
- id: shallows - id: shallows
zone: shallows zone: shallows
title: Shallows title: Shallows
icon: minecraft:kelp icon: minecraft:kelp
about: |
The coasts, beaches and the calm channels between the islands. The open sea further out is the Deep Sea, and much stronger.
locals: Krabby, Wingull and Chinchou
- id: southwold - id: southwold
zone: southwold zone: southwold
title: Southwold title: Southwold
icon: minecraft:raw_copper icon: minecraft:raw_copper
about: |
The south of the big island, across the channel from Button Isle: forest, plains and windswept hills.
Its copper makes Poké Balls four at a time.
locals: Meowth, Voltorb and Pidove
- id: lush_caves - id: lush_caves
zone: lush_caves zone: lush_caves
title: Lush Caves title: Lush Caves
icon: minecraft:glow_berries icon: minecraft:glow_berries
about: |
Overgrown caves under the whole island. The fossil Pokémon live down here: Kabuto, Omanyte, Lileep and Anorith.
locals: Barboach, Joltik and Shuckle
- id: westmarch - id: westmarch
zone: westmarch zone: westmarch
title: Westmarch title: Westmarch
icon: cobblemon:thunder_stone icon: cobblemon:thunder_stone
about: |
The north-west of the big island: forest and windswept hills. The first iron on the island grows here.
locals: Magikarp, Goomy and Applin
guardian_note: The waders keep the Mangrove Mire's poison off.
- id: jungle - id: jungle
zone: jungle zone: jungle
title: Verdant Jungle title: Verdant Jungle
icon: cobblemon:leaf_stone icon: cobblemon:leaf_stone
about: |
The jungle in the east, on both sides of the channel across the middle. Warm and humid, but never too hot.
locals: Natu, Bellsprout and Pikipek
guardian_note: The waders keep the Mangrove Mire's poison off.
- id: dripstone - id: dripstone
zone: dripstone zone: dripstone
title: Dripstone Depths title: Dripstone Depths
icon: minecraft:pointed_dripstone icon: minecraft:pointed_dripstone
about: |
Dripstone caves under the whole island, deeper and stronger than the Lush Caves.
locals: Baltoy, Lunatone and Solrock
- id: highlands - id: highlands
zone: highlands zone: highlands
title: Highland Meadows title: Highland Meadows
icon: cobblemon:sun_stone icon: cobblemon:sun_stone
about: |
The meadows of the north: plains, forest and cherry groves at the foot of the peaks.
locals: Psyduck, Jigglypuff and Hoppip
guardian_note: An Icy Rock turns leather into Hoglin Hide, for armour against Sunscorch's heat.
- id: mire - id: mire
zone: mire zone: mire
title: Mangrove Mire title: Mangrove Mire
icon: cobblesurvival:mire_waders icon: cobblesurvival:mire_waders
hazard_text: "The Mire's water poisons you unless you wear Mire Waders: the guardians of Westmarch and the Verdant Jungle drop them." about: |
The mangrove swamp in the south-east. Its water poisons you unless you wear Mire Waders.
locals: Slowpoke, Mudkip and Ducklett
guardian_note: An Icy Rock turns leather into Hoglin Hide, for armour against Sunscorch's heat.
quests: quests:
- id: waders - id: waders
title: Mire Waders title: Mire Waders
icon: cobblesurvival:mire_waders icon: cobblesurvival:mire_waders
text: | text: |
Waders keep the Mire's poison off. Beat the guardian of Westmarch or the Verdant Jungle for a pair. The Mire keeps poisoning you while you're in it. Mire Waders on your feet keep the poison off.
The guardians of Westmarch and the Verdant Jungle each drop a pair.
tasks: tasks:
- item: cobblesurvival:mire_waders - item: cobblesurvival:mire_waders
- id: sunscorch - id: sunscorch
zone: sunscorch zone: sunscorch
title: Sunscorch title: Sunscorch
icon: cobblemon:fire_stone icon: cobblemon:fire_stone
hazard_text: "The desert heat hurts without heat insulation on your armor (Cold Sweat): look up insulation in JEI." about: |
The desert and badlands: a patch just north of Button Isle's channel, and stretches of the north-east and north-west coasts. At midday its heat overwhelms you in under a minute.
locals: Sandshrew, Cacnea and Larvesta
guardian_note: A Heat Rock turns wool into Goat Fur, for armour against Frostpeak's cold.
quests:
- id: hide
title: Hoglin Hide Armour
icon: cold_sweat:hoglin_chestplate
text: |
A full set of Hoglin Hide armour holds Sunscorch's midday heat off for at least ten minutes.
Eight leather around an Icy Rock make eight Hoglin Hide; the guardians of the Mangrove Mire and the Highland Meadows drop Icy Rocks.
An Ice type riding on your shoulder cools you too, once it passes the Verdant Jungle gate (see the HMs page).
tasks:
- item: cold_sweat:hoglin_helmet
- item: cold_sweat:hoglin_chestplate
- item: cold_sweat:hoglin_leggings
- item: cold_sweat:hoglin_boots
- id: deep_sea - id: deep_sea
zone: deep_sea zone: deep_sea
title: Deep Sea title: Deep Sea
icon: cobblemon:mystic_water icon: cobblemon:mystic_water
about: |
The open sea around the island, out beyond the coasts. There is no land to stand on out here.
locals: Horsea, Remoraid and Lapras
quests:
- id: dive
title: Breathing Underwater
icon: minecraft:turtle_helmet
text: |
A Pokémon with Dive lets you breathe, walk and mine underwater as if on land; it needs the Mangrove Mire gate.
A Water type riding on your shoulder lets you breathe underwater too, once it passes the same gate.
tasks:
- checkmark: true
title: Read this
- id: frostpeak - id: frostpeak
zone: frostpeak zone: frostpeak
title: Frostpeak Range title: Frostpeak Range
icon: cobblemon:ice_stone icon: cobblemon:ice_stone
hazard_text: "The cold hurts without wool insulation on your armor (Cold Sweat): look up insulation in JEI." about: |
The jagged peaks of the north-east and the hills around them. Even at midday the cold freezes you in under a minute.
locals: Sneasel, Delibird and Rhydon
guardian_note: An Icy Rock turns leather into Hoglin Hide, for armour against the Basalt Furnace's heat.
quests:
- id: fur
title: Goat Fur Armour
icon: cold_sweat:goat_fur_chestplate
text: |
A full set of Goat Fur armour keeps you warm in Frostpeak for at least ten minutes, even at midday.
Eight wool around a Heat Rock make eight Goat Fur; the guardian of Sunscorch drops Heat Rocks.
A Fire type riding on your shoulder warms you too, once it passes the Highland Meadows gate (see the HMs page).
tasks:
- item: cold_sweat:goat_fur_helmet
- item: cold_sweat:goat_fur_chestplate
- item: cold_sweat:goat_fur_leggings
- item: cold_sweat:goat_fur_boots
- id: deep_dark - id: deep_dark
zone: deep_dark zone: deep_dark
title: Deep Dark title: Deep Dark
icon: minecraft:sculk icon: minecraft:sculk
hazard_text: "Sculk darkens your sight down here. There is no Warden, but the ancient colossus sleeps in the ruins." about: |
The deepest caves, under the cold and temperate land, grown over with sculk. There is no Warden, but Regigigas sleeps in the ruins.
locals: Carbink, Bronzong and Ditto
guardian_note: An Icy Rock turns leather into Hoglin Hide, for armour against the Basalt Furnace's heat.
quests:
- id: flash
title: Flash
icon: minecraft:glow_ink_sac
text: |
The sculk shriekers here cloud your sight with Darkness.
A Pokémon with Flash lets you see in the dark; it needs the Dripstone Depths gate.
tasks:
- checkmark: true
title: Read this
- id: basalt - id: basalt
zone: basalt zone: basalt
title: Basalt Furnace title: Basalt Furnace
icon: minecraft:magma_block icon: minecraft:magma_block
hazard_text: "The heat of the furnace hurts without heat insulation on your armor (Cold Sweat)." about: |
Volcanic caves under the hottest land, reaching down to the bottom of the world.
locals: Torkoal, Heatmor and Durant
quests:
- id: heat
title: Lava and Heat
icon: minecraft:lava_bucket
text: |
Wear Hoglin Hide armour against the heat (see the Sunscorch page).
A Pokémon with Lava Plume lets you move through lava without burning; it needs the Deep Dark gate.
tasks:
- item: cold_sweat:hoglin_helmet
- item: cold_sweat:hoglin_chestplate
- item: cold_sweat:hoglin_leggings
- item: cold_sweat:hoglin_boots
- id: the_end - id: the_end
zone: the_end zone: the_end
title: The End title: The End
icon: minecraft:end_stone icon: minecraft:end_stone
about: |
Beyond a stronghold's portal. Eternatus has taken the dragon's place.
locals: Beheeyem, Reuniclus and Metagross
quests: quests:
- id: eyes - id: eyes
title: Eyes of Ender title: Eyes of Ender
@@ -0,0 +1,21 @@
package dev.cobblesurvival.mixin;
import com.cobblemon.mod.common.api.battles.model.PokemonBattle;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Pseudo;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
/**
* A battle between players never costs a Pokémon (Adrian, 2026-11-10). The pack's config switches CobbleHardcoreMon's
* tracking of player battles off, but a world keeps the server config it was created with: this holds in every world.
*/
@Pseudo
@Mixin(targets = "dev.matthiesen.cobblehardcoremon.common.handlers.PlayerBattles", remap = false)
abstract class HardcoreBattlesMixin {
@Inject(method = "battleTypeDisabled", at = @At("HEAD"), cancellable = true)
private static void cobblesurvival$ignorePlayerBattles(PokemonBattle battle, CallbackInfoReturnable<Boolean> result) {
if (battle.isPvP()) result.setReturnValue(true);
}
}
@@ -10,24 +10,25 @@ import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
/** /**
* A player's starter only faints, it is never removed (Adrian, 2026-11-09). CobbleHardcoreMon has no exception of its * A player's starter only faints, it is never removed (Adrian, 2026-11-09), and neither is a Pokémon that fainted in a
* own: this leaves its Revival Charm alone and skips its removal. Named by string, so the companion mod needs it only at run time. * battle between players (2026-11-10). CobbleHardcoreMon has no such exceptions, and also sweeps parties outside
* battles: this leaves their Revival Charm alone and skips the removal. Named by string, so the companion mod needs it only at run time.
*/ */
@Pseudo @Pseudo
@Mixin(targets = "dev.matthiesen.cobblehardcoremon.common.handlers.PlayerPokeParty", remap = false) @Mixin(targets = "dev.matthiesen.cobblehardcoremon.common.handlers.PlayerPokeParty", remap = false)
abstract class HardcorePartyMixin { abstract class HardcorePartyMixin {
@Inject(method = "popPokemonTotem", at = @At("HEAD"), cancellable = true) @Inject(method = "popPokemonTotem", at = @At("HEAD"), cancellable = true)
private void cobblesurvival$keepCharm(Pokemon pokemon, CallbackInfoReturnable<Boolean> result) { private void cobblesurvival$keepCharm(Pokemon pokemon, CallbackInfoReturnable<Boolean> result) {
if (Permadeath.INSTANCE.isStarter(pokemon)) result.setReturnValue(false); if (Permadeath.INSTANCE.isSpared(pokemon)) result.setReturnValue(false);
} }
@Inject(method = "alertPlayerAndRemovedPokemon(Lcom/cobblemon/mod/common/pokemon/Pokemon;)V", at = @At("HEAD"), cancellable = true) @Inject(method = "alertPlayerAndRemovedPokemon(Lcom/cobblemon/mod/common/pokemon/Pokemon;)V", at = @At("HEAD"), cancellable = true)
private void cobblesurvival$keepStarter(Pokemon pokemon, CallbackInfo info) { private void cobblesurvival$keepStarter(Pokemon pokemon, CallbackInfo info) {
if (Permadeath.INSTANCE.isStarter(pokemon)) info.cancel(); if (Permadeath.INSTANCE.isSpared(pokemon)) info.cancel();
} }
@Inject(method = "alertPlayerAndRemovedPokemon(Lcom/cobblemon/mod/common/pokemon/Pokemon;ZLjava/lang/String;)V", at = @At("HEAD"), cancellable = true) @Inject(method = "alertPlayerAndRemovedPokemon(Lcom/cobblemon/mod/common/pokemon/Pokemon;ZLjava/lang/String;)V", at = @At("HEAD"), cancellable = true)
private void cobblesurvival$keepStarter(Pokemon pokemon, boolean soulLink, String partner, CallbackInfo info) { private void cobblesurvival$keepStarter(Pokemon pokemon, boolean soulLink, String partner, CallbackInfo info) {
if (Permadeath.INSTANCE.isStarter(pokemon)) info.cancel(); if (Permadeath.INSTANCE.isSpared(pokemon)) info.cancel();
} }
} }
@@ -1,5 +1,6 @@
package dev.cobblesurvival package dev.cobblesurvival
import dev.cobblesurvival.zone.PeacefulZones
import dev.cobblesurvival.catching.AttackBattles import dev.cobblesurvival.catching.AttackBattles
import dev.cobblesurvival.jei.DropSources import dev.cobblesurvival.jei.DropSources
import net.neoforged.fml.loading.FMLPaths import net.neoforged.fml.loading.FMLPaths
@@ -111,6 +112,7 @@ class CobbleSurvival {
BaseLoot.register() BaseLoot.register()
Catching.register() Catching.register()
AttackBattles.register() AttackBattles.register()
PeacefulZones.register()
Wanderers.register() Wanderers.register()
SharedLoot.register() SharedLoot.register()
SpecialPokemon.register() SpecialPokemon.register()
@@ -24,6 +24,7 @@ object Tuning : SimpleJsonResourceReloadListener(Gson(), "tuning") {
val summon_spacing: Double = 96.0, val summon_spacing: Double = 96.0,
val wanderer_range: Double = 64.0, val wanderer_range: Double = 64.0,
val attack_battle_grace_ticks: Int = 100, val attack_battle_grace_ticks: Int = 100,
val peaceful_zones: List<String> = listOf("button_isle"),
) )
private val FILE = ResourceLocation.fromNamespaceAndPath(CobbleSurvival.MOD_ID, "server") private val FILE = ResourceLocation.fromNamespaceAndPath(CobbleSurvival.MOD_ID, "server")
@@ -7,6 +7,7 @@ import com.cobblemon.mod.common.battles.ErroredBattleStart
import com.cobblemon.mod.common.entity.pokemon.PokemonEntity import com.cobblemon.mod.common.entity.pokemon.PokemonEntity
import dev.cobblesurvival.Tuning import dev.cobblesurvival.Tuning
import dev.cobblesurvival.boss.BossToughness import dev.cobblesurvival.boss.BossToughness
import dev.cobblesurvival.zone.PeacefulZones
import net.minecraft.server.level.ServerPlayer import net.minecraft.server.level.ServerPlayer
import net.neoforged.neoforge.common.NeoForge import net.neoforged.neoforge.common.NeoForge
import net.neoforged.neoforge.event.entity.living.LivingIncomingDamageEvent import net.neoforged.neoforge.event.entity.living.LivingIncomingDamageEvent
@@ -16,7 +17,8 @@ import java.util.UUID
* A wild Pokémon that attacks a player starts a battle instead of hurting them (Adrian, 2026-11-09). A player with no * A wild Pokémon that attacks a player starts a battle instead of hurting them (Adrian, 2026-11-09). A player with no
* Pokémon able to fight still takes the hit, so the wilds stay dangerous to them. After fleeing, a moment's grace * Pokémon able to fight still takes the hit, so the wilds stay dangerous to them. After fleeing, a moment's grace
* (`tuning/server.json` → `attack_battle_grace_ticks`) to get away, or the same Pokémon would pull them straight back. * (`tuning/server.json` → `attack_battle_grace_ticks`) to get away, or the same Pokémon would pull them straight back.
* A boss in a battle hits through: those are its area attacks. * A boss in a battle hits through: those are its area attacks. On the start island an attack the player didn't provoke
* does nothing at all ([PeacefulZones]).
*/ */
object AttackBattles { object AttackBattles {
/** Game time until which a hit on this player does nothing: a battle is being set up, or they have just fled. */ /** Game time until which a hit on this player does nothing: a battle is being set up, or they have just fled. */
@@ -33,6 +35,11 @@ object AttackBattles {
val player = event.entity as? ServerPlayer ?: return val player = event.entity as? ServerPlayer ?: return
val attacker = event.source.entity as? PokemonEntity ?: return val attacker = event.source.entity as? PokemonEntity ?: return
if (attacker.pokemon.isPlayerOwned() || (attacker.isBattling && BossToughness.isBoss(attacker.pokemon))) return if (attacker.pokemon.isPlayerOwned() || (attacker.isBattling && BossToughness.isBoss(attacker.pokemon))) return
if (PeacefulZones.isPeaceful(player) && !PeacefulZones.provoked(attacker, player)) {
event.isCanceled = true
PeacefulZones.calmDown(attacker)
return
}
if (BattleRegistry.getBattleByParticipatingPlayer(player) != null) { if (BattleRegistry.getBattleByParticipatingPlayer(player) != null) {
event.isCanceled = true event.isCanceled = true
return return
@@ -10,6 +10,7 @@ import com.google.gson.Gson
import com.google.gson.JsonElement import com.google.gson.JsonElement
import dev.cobblesurvival.CobbleSurvival import dev.cobblesurvival.CobbleSurvival
import dev.cobblesurvival.world.SpecialPokemon import dev.cobblesurvival.world.SpecialPokemon
import dev.cobblesurvival.zone.PeacefulZones
import net.minecraft.resources.ResourceLocation import net.minecraft.resources.ResourceLocation
import net.minecraft.server.level.ServerPlayer import net.minecraft.server.level.ServerPlayer
import net.minecraft.server.packs.resources.ResourceManager import net.minecraft.server.packs.resources.ResourceManager
@@ -26,6 +27,7 @@ import net.neoforged.neoforge.event.tick.ServerTickEvent
* - a Pokémon that breaks out of a ball attacks the thrower instead of fleeing; * - a Pokémon that breaks out of a ball attacks the thrower instead of fleeing;
* - a wild Pokémon above a nearby player's strongest Pokémon is hostile to that player (not guardians and other * - a wild Pokémon above a nearby player's strongest Pokémon is hostile to that player (not guardians and other
* special Pokémon, see [SpecialPokemon]). * special Pokémon, see [SpecialPokemon]).
* None of this angers a Pokémon in a peaceful zone (the start island, [PeacefulZones]).
* *
* The attacking is Fight or Flight Reborn's: an angry Pokémon carries the aspect [ENRAGED], which the pack's Fight or * The attacking is Fight or Flight Reborn's: an angry Pokémon carries the aspect [ENRAGED], which the pack's Fight or
* Flight config lists in `always_aggro_aspects` (so it fights rather than flees), and its target is set through Fight * Flight config lists in `always_aggro_aspects` (so it fights rather than flees), and its target is set through Fight
@@ -88,13 +90,14 @@ object Catching : SimpleJsonResourceReloadListener(Gson(), "catching") {
private fun onCaptureCalculated(event: PokeBallCaptureCalculatedEvent) { private fun onCaptureCalculated(event: PokeBallCaptureCalculatedEvent) {
if (!rules.enrageOnFailedCatch || event.captureResult.isSuccessfulCapture) return if (!rules.enrageOnFailedCatch || event.captureResult.isSuccessfulCapture) return
enrage(event.pokemonEntity, event.thrower as? ServerPlayer ?: return) val player = event.thrower as? ServerPlayer ?: return
if (!PeacefulZones.isPeaceful(player)) enrage(event.pokemonEntity, player)
} }
private fun onServerTick(event: ServerTickEvent.Post) { private fun onServerTick(event: ServerTickEvent.Post) {
if (!rules.hostileWhenStronger || hostilityPaused || event.server.tickCount % SCAN_TICKS != 0) return if (!rules.hostileWhenStronger || hostilityPaused || event.server.tickCount % SCAN_TICKS != 0) return
for (player in event.server.playerList.players) { for (player in event.server.playerList.players) {
if (player.isCreative || player.isSpectator) continue if (player.isCreative || player.isSpectator || PeacefulZones.isPeaceful(player)) continue
val strongest = strongest(player) val strongest = strongest(player)
val near = player.boundingBox.inflate(rules.hostileRange) val near = player.boundingBox.inflate(rules.hostileRange)
player.serverLevel().getEntitiesOfClass(PokemonEntity::class.java, near) { player.serverLevel().getEntitiesOfClass(PokemonEntity::class.java, near) {
@@ -23,6 +23,11 @@ object FightOrFlight {
if (installed) setCapturedBy.invoke(wild, player.id) if (installed) setCapturedBy.invoke(wild, player.id)
} }
/** Takes Fight or Flight's mark off again (0 is its "nobody"). */
fun clearTarget(wild: PokemonEntity) {
if (installed) setCapturedBy.invoke(wild, 0)
}
fun aggression(wild: PokemonEntity): Double = coefficient.invoke(null, wild) as Double fun aggression(wild: PokemonEntity): Double = coefficient.invoke(null, wild) as Double
/** Fight or Flight's `neutral_threshold`: at or above it a provoked Pokémon fights. */ /** Fight or Flight's `neutral_threshold`: at or above it a provoked Pokémon fights. */
@@ -36,11 +36,14 @@ import java.util.concurrent.ConcurrentLinkedQueue
* Settling: a Pokémon holding an item from `#cobblesurvival:revival_charms` is healed and the charm is used up; * Settling: a Pokémon holding an item from `#cobblesurvival:revival_charms` is healed and the charm is used up;
* any other is removed from its party or PC. The one exception is the player's starter (Adrian, 2026-11-09): it only * any other is removed from its party or PC. The one exception is the player's starter (Adrian, 2026-11-09): it only
* faints, and can't be released or sacrificed either ([isStarter]; CobbleHardcoreMon's side is mixin/HardcorePartyMixin). * faints, and can't be released or sacrificed either ([isStarter]; CobbleHardcoreMon's side is mixin/HardcorePartyMixin).
* A battle between players never costs a Pokémon (Adrian, 2026-11-10): one that faints there is marked [PVP_FAINT] and
* stays fainted until it is healed. It loses the mark once it is seen healthy outside a battle, or faints in any other battle.
*/ */
object Permadeath { object Permadeath {
val REVIVAL_CHARMS: TagKey<Item> = val REVIVAL_CHARMS: TagKey<Item> =
TagKey.create(Registries.ITEM, ResourceLocation.fromNamespaceAndPath(CobbleSurvival.MOD_ID, "revival_charms")) TagKey.create(Registries.ITEM, ResourceLocation.fromNamespaceAndPath(CobbleSurvival.MOD_ID, "revival_charms"))
private const val SWEEP_TICKS = 20 private const val SWEEP_TICKS = 20
const val PVP_FAINT = "cobblesurvival_pvp_faint"
private val fainted = ConcurrentLinkedQueue<Pokemon>() private val fainted = ConcurrentLinkedQueue<Pokemon>()
private val faintedInBattle = HashMap<UUID, MutableSet<Pokemon>>() private val faintedInBattle = HashMap<UUID, MutableSet<Pokemon>>()
@@ -59,6 +62,9 @@ object Permadeath {
} }
} }
/** Never removed for fainting: the starter, and a Pokémon that fainted in a battle between players. */
fun isSpared(pokemon: Pokemon): Boolean = isStarter(pokemon) || pokemon.persistentData.getBoolean(PVP_FAINT)
/** The Pokémon this player chose as a starter, which Cobblemon remembers for each player. */ /** The Pokémon this player chose as a starter, which Cobblemon remembers for each player. */
fun isStarter(pokemon: Pokemon): Boolean { fun isStarter(pokemon: Pokemon): Boolean {
val owner = pokemon.getOwnerUUID() ?: return false val owner = pokemon.getOwnerUUID() ?: return false
@@ -69,6 +75,11 @@ object Permadeath {
val killed = event.killed val killed = event.killed
// In a battle on copies (exhibition rules) the real Pokémon is not hurt, so it does not count. // In a battle on copies (exhibition rules) the real Pokémon is not hurt, so it does not count.
if (killed.effectedPokemon !== killed.originalPokemon || !killed.originalPokemon.isPlayerOwned()) return if (killed.effectedPokemon !== killed.originalPokemon || !killed.originalPokemon.isPlayerOwned()) return
if (event.battle.isPvP) {
killed.originalPokemon.persistentData.putBoolean(PVP_FAINT, true)
return
}
killed.originalPokemon.persistentData.remove(PVP_FAINT)
faintedInBattle.getOrPut(event.battle.battleId) { HashSet() } += killed.originalPokemon faintedInBattle.getOrPut(event.battle.battleId) { HashSet() } += killed.originalPokemon
} }
@@ -91,16 +102,21 @@ object Permadeath {
for (player in event.server.playerList.players) { for (player in event.server.playerList.players) {
val party = Cobblemon.storage.getParty(player) val party = Cobblemon.storage.getParty(player)
val pc = Cobblemon.storage.getPC(player) val pc = Cobblemon.storage.getPC(player)
(party.filter { it.isFainted() } + pc.filter { it.isFainted() }).forEach { settle(player, it) } (party.filter { it.isFainted() || it.persistentData.contains(PVP_FAINT) } +
pc.filter { it.isFainted() || it.persistentData.contains(PVP_FAINT) }).forEach { settle(player, it) }
} }
} }
} }
private fun settle(player: ServerPlayer, pokemon: Pokemon) { private fun settle(player: ServerPlayer, pokemon: Pokemon) {
val store = pokemon.storeCoordinates.get()?.store val store = pokemon.storeCoordinates.get()?.store
if (!pokemon.isFainted() || isStarter(pokemon) || (store !is PlayerPartyStore && store !is PCStore)) return
// Faints during a battle are settled when it ends (above, and by CobbleHardcoreMon). // Faints during a battle are settled when it ends (above, and by CobbleHardcoreMon).
if (player.isInBattle()) return if (player.isInBattle()) return
if (!pokemon.isFainted()) {
pokemon.persistentData.remove(PVP_FAINT)
return
}
if (isStarter(pokemon) || pokemon.persistentData.getBoolean(PVP_FAINT) || (store !is PlayerPartyStore && store !is PCStore)) return
try { try {
val name = pokemon.getDisplayName(false) val name = pokemon.getDisplayName(false)
if (pokemon.heldItem().`is`(REVIVAL_CHARMS)) { if (pokemon.heldItem().`is`(REVIVAL_CHARMS)) {
@@ -1,5 +1,15 @@
package dev.cobblesurvival.selftest package dev.cobblesurvival.selftest
import net.minecraft.world.phys.Vec3
import net.minecraft.world.level.levelgen.Heightmap
import net.minecraft.gametest.framework.GameTestAssertException
import net.minecraft.world.item.crafting.RecipeType
import net.minecraft.world.item.crafting.CraftingInput
import net.minecraft.world.item.ItemStack
import net.minecraft.resources.ResourceLocation
import net.minecraft.core.registries.BuiltInRegistries
import dev.cobblesurvival.zone.Zones
import dev.cobblesurvival.zone.PeacefulZones
import com.cobblemon.mod.common.battles.BattleRegistry import com.cobblemon.mod.common.battles.BattleRegistry
import com.cobblemon.mod.common.api.events.CobblemonEvents import com.cobblemon.mod.common.api.events.CobblemonEvents
import com.cobblemon.mod.common.api.events.pokeball.PokeBallCaptureCalculatedEvent import com.cobblemon.mod.common.api.events.pokeball.PokeBallCaptureCalculatedEvent
@@ -26,6 +36,8 @@ object CatchingTests {
fun all() = listOf( fun all() = listOf(
SelfTestCase("catch_rate_falls_with_level_gap", 20, ::catchRate, batch = "catching"), SelfTestCase("catch_rate_falls_with_level_gap", 20, ::catchRate, batch = "catching"),
SelfTestCase("failed_catch_enrages", 400, ::failedCatch, batch = "catching"), SelfTestCase("failed_catch_enrages", 400, ::failedCatch, batch = "catching"),
SelfTestCase("button_isle_pokemon_leave_players_alone", 200, ::peaceful, islandOnly = true, batch = "peaceful"),
SelfTestCase("start_isle_materials_make_a_poke_ball", 20, ::startBall),
SelfTestCase("wild_attack_starts_a_battle", 300, ::attackBattle, batch = "attack_battle"), SelfTestCase("wild_attack_starts_a_battle", 300, ::attackBattle, batch = "attack_battle"),
SelfTestCase("wild_attack_hurts_without_a_party", 120, ::attackHurts, batch = "attack_battle"), SelfTestCase("wild_attack_hurts_without_a_party", 120, ::attackHurts, batch = "attack_battle"),
SelfTestCase("strong_wild_pokemon_hunt_weak_trainers", 400, { s -> hostility(s, strongest = 5, hostile = true) }, SelfTestCase("strong_wild_pokemon_hunt_weak_trainers", 400, { s -> hostility(s, strongest = 5, hostile = true) },
@@ -50,6 +62,57 @@ object CatchingTests {
s.helper.succeed() s.helper.succeed()
} }
/**
* Adrian, 2026-11-10: on Button Isle a wild Pokémon leaves a player alone, even
* one with no Pokémon whom it would otherwise hunt, unless the player hits it first.
*/
private fun peaceful(s: Scenario) {
PeacefulZones.paused = false
Catching.hostilityPaused = false
s.afterTest {
PeacefulZones.paused = true
Catching.hostilityPaused = true
}
// On the island's surface: the platform's height counts as a cave biome.
val sample = Zones.samples["button_isle"] ?: throw GameTestAssertException("no sample point for Button Isle")
s.level.getChunk(sample.x shr 4, sample.z shr 4)
val y = s.level.getHeight(Heightmap.Types.MOTION_BLOCKING_NO_LEAVES, sample.x, sample.z).toDouble()
val player = s.player()
s.moveTo(player, sample.x + 0.5, y, sample.z + 0.5)
val wild = s.wild(s.pokemon("primeape", 40, "karatechop"), Vec3(sample.x + 3.5, y, sample.z + 0.5))
s.check(Zones.at(s.level, player.blockPosition())?.id == "button_isle") { "the player isn't on Button Isle" }
val health = player.health
s.helper.startSequence()
.thenIdle(SPAWN_PROTECTION_TICKS)
.thenExecute {
s.check(Catching.ENRAGED !in wild.pokemon.forcedAspects) { "a stronger Pokémon was angered on Button Isle" }
Catching.enrage(wild, player) // as if something else had set it on the player
}
.thenIdle(25)
.thenExecute {
s.check(!PeacefulZones.targets(wild, player)) { "the wild Pokémon still goes for the player" }
s.check(!player.hurt(wild.damageSources().mobAttack(wild), 6f)) { "an unprovoked hit went through on Button Isle" }
s.check(player.health == health) { "the player lost health" }
wild.hurt(player.damageSources().playerAttack(player), 1f)
s.check(player.hurt(wild.damageSources().mobAttack(wild), 6f)) { "a Pokémon the player hit couldn't hit back" }
}
.thenSucceed()
}
/** Adrian, 2026-11-10: the start island can make a Poké Ball: four apricorns of any colour and coal or charcoal. */
private fun startBall(s: Scenario) {
val level = s.level
fun item(id: String) = ItemStack(BuiltInRegistries.ITEM.get(ResourceLocation.parse(id)))
for (fuel in listOf("minecraft:coal", "minecraft:charcoal")) {
val grid = listOf(ItemStack.EMPTY, item("cobblemon:white_apricorn"), ItemStack.EMPTY, item("cobblemon:red_apricorn"), item(fuel),
item("cobblemon:pink_apricorn"), ItemStack.EMPTY, item("cobblemon:green_apricorn"), ItemStack.EMPTY)
val input = CraftingInput.of(3, 3, grid)
val made = level.recipeManager.getRecipeFor(RecipeType.CRAFTING, input, level).map { it.value.assemble(input, level.registryAccess()) }.orElse(ItemStack.EMPTY)
s.check(made.`is`(item("cobblemon:poke_ball").item)) { "four apricorns and $fuel make ${made.hoverName.string}, not a Poké Ball" }
}
s.helper.succeed()
}
private fun attackBattle(s: Scenario) { private fun attackBattle(s: Scenario) {
val player = s.player() val player = s.player()
s.give(player, s.pokemon("charizard", 50, "ember")) s.give(player, s.pokemon("charizard", 50, "ember"))
@@ -1,5 +1,7 @@
package dev.cobblesurvival.selftest package dev.cobblesurvival.selftest
import net.minecraft.world.level.block.Blocks
import net.minecraft.core.BlockPos
import dev.cobblesurvival.CobbleSurvival import dev.cobblesurvival.CobbleSurvival
import dev.cobblesurvival.zone.ZoneSample import dev.cobblesurvival.zone.ZoneSample
import dev.cobblesurvival.zone.Zones import dev.cobblesurvival.zone.Zones
@@ -133,6 +135,7 @@ object HazardTests {
val bare = s.player() val bare = s.player()
val wading = s.player().also { it.setItemSlot(EquipmentSlot.FEET, ItemStack(waders)) } val wading = s.player().also { it.setItemSlot(EquipmentSlot.FEET, ItemStack(waders)) }
val outside = s.player() val outside = s.player()
val below = s.player()
fun surface(sample: ZoneSample): Double { fun surface(sample: ZoneSample): Double {
level.getChunk(sample.x shr 4, sample.z shr 4) level.getChunk(sample.x shr 4, sample.z shr 4)
return level.getHeight(Heightmap.Types.MOTION_BLOCKING_NO_LEAVES, sample.x, sample.z).toDouble() return level.getHeight(Heightmap.Types.MOTION_BLOCKING_NO_LEAVES, sample.x, sample.z).toDouble()
@@ -141,6 +144,10 @@ object HazardTests {
.thenExecute { .thenExecute {
for (player in listOf(bare, wading)) s.moveTo(player, mire.x + 0.5, surface(mire), mire.z + 0.5) for (player in listOf(bare, wading)) s.moveTo(player, mire.x + 0.5, surface(mire), mire.z + 0.5)
s.moveTo(outside, elsewhere.x + 0.5, surface(elsewhere), elsewhere.z + 0.5) s.moveTo(outside, elsewhere.x + 0.5, surface(elsewhere), elsewhere.z + 0.5)
// Deep in the rock under the Mire (a pocket cut for it), where the swamp's poison doesn't reach.
val deep = BlockPos(mire.x + 2, surface(mire).toInt() - 30, mire.z)
for (dy in 0..1) level.setBlockAndUpdate(deep.above(dy), Blocks.AIR.defaultBlockState())
s.moveTo(below, deep.x + 0.5, deep.y.toDouble(), deep.z + 0.5)
} }
.thenIdle(220) .thenIdle(220)
.thenExecute { .thenExecute {
@@ -148,6 +155,7 @@ object HazardTests {
s.check(bare.hasEffect(poison)) { "a player without waders in the Mire isn't poisoned" } s.check(bare.hasEffect(poison)) { "a player without waders in the Mire isn't poisoned" }
s.check(!wading.hasEffect(poison)) { "a player in Mire Waders got poisoned" } s.check(!wading.hasEffect(poison)) { "a player in Mire Waders got poisoned" }
s.check(!outside.hasEffect(poison)) { "a player on Button Isle got poisoned" } s.check(!outside.hasEffect(poison)) { "a player on Button Isle got poisoned" }
s.check(!below.hasEffect(poison)) { "a player deep under the Mire got poisoned" }
} }
.thenSucceed() .thenSucceed()
} }
@@ -1,5 +1,6 @@
package dev.cobblesurvival.selftest package dev.cobblesurvival.selftest
import dev.cobblesurvival.permadeath.Permadeath
import com.cobblemon.mod.common.Cobblemon import com.cobblemon.mod.common.Cobblemon
import com.cobblemon.mod.common.api.npc.NPCClasses import com.cobblemon.mod.common.api.npc.NPCClasses
import com.cobblemon.mod.common.api.pokemon.status.Statuses import com.cobblemon.mod.common.api.pokemon.status.Statuses
@@ -37,6 +38,7 @@ object PermadeathTests {
SelfTestCase("wild_battle_charm", BATTLE_TICKS, { wildBattle(it, charm = true) }), SelfTestCase("wild_battle_charm", BATTLE_TICKS, { wildBattle(it, charm = true) }),
SelfTestCase("revived_during_battle", BATTLE_TICKS, ::revivedDuringBattle), SelfTestCase("revived_during_battle", BATTLE_TICKS, ::revivedDuringBattle),
SelfTestCase("trainer_battle", BATTLE_TICKS, ::trainerBattle), SelfTestCase("trainer_battle", BATTLE_TICKS, ::trainerBattle),
SelfTestCase("player_battle_only_faints", BATTLE_TICKS, ::playerBattle),
) )
/** Cobblemon heals the party while the player sleeps and wakes fainted Pokémon after a while; both are off. */ /** Cobblemon heals the party while the player sleeps and wakes fainted Pokémon after a while; both are off. */
@@ -160,6 +162,32 @@ object PermadeathTests {
.thenSucceed() .thenSucceed()
} }
/** Adrian, 2026-11-10: a Pokémon that faints in a battle between players stays, fainted, until healed. */
private fun playerBattle(s: Scenario) {
val loser = s.player()
val winner = s.player()
val pokemon = s.give(loser, s.pokemon("bidoof", 5, "explosion"))
s.give(winner, s.pokemon("bidoof", 50, "splash"))
s.answerBattles(loser) { _, _ -> MoveActionResponse("explosion") }
s.answerBattles(winner) { _, _ -> MoveActionResponse("splash") }
var ended = -1L
s.helper.startSequence()
.thenExecute { s.started(BattleBuilder.pvp1v1(loser, winner)) }
.thenWaitUntil {
s.check(!loser.isInBattle()) { "the battle is still running: ${s.battleState(loser)}" }
if (ended < 0) ended = s.level.gameTime
s.check(s.level.gameTime - ended > 60) { "waiting for the permadeath sweeps" }
}
.thenExecute {
s.check(Cobblemon.storage.getParty(loser).any { it.uuid == pokemon.uuid }) { "the Pokémon that fainted in a player battle was removed" }
s.check(pokemon.isFainted()) { "it isn't fainted" }
pokemon.heal()
}
.thenIdle(30)
.thenExecute { s.check(!pokemon.persistentData.contains(Permadeath.PVP_FAINT)) { "healed, it still carries the player-battle mark" } }
.thenSucceed()
}
private fun wildBattle(s: Scenario, charm: Boolean) { private fun wildBattle(s: Scenario, charm: Boolean) {
val player = s.player() val player = s.player()
val pokemon = s.give(player, s.pokemon("bidoof", 5, "explosion")) val pokemon = s.give(player, s.pokemon("bidoof", 5, "explosion"))
@@ -1,5 +1,6 @@
package dev.cobblesurvival.selftest package dev.cobblesurvival.selftest
import dev.cobblesurvival.zone.PeacefulZones
import com.mojang.brigadier.builder.LiteralArgumentBuilder import com.mojang.brigadier.builder.LiteralArgumentBuilder
import dev.cobblesurvival.CobbleSurvival import dev.cobblesurvival.CobbleSurvival
import dev.cobblesurvival.catching.Catching import dev.cobblesurvival.catching.Catching
@@ -104,6 +105,7 @@ object SelfTest {
running = scenarios running = scenarios
Catching.hostilityPaused = true Catching.hostilityPaused = true
Wanderers.paused = true Wanderers.paused = true
PeacefulZones.paused = true
GameTestTicker.SINGLETON.clear() GameTestTicker.SINGLETON.clear()
GameTestRunner.Builder.fromInfo(infos, level) GameTestRunner.Builder.fromInfo(infos, level)
.newStructureSpawner(StructureGridSpawner(origin, TESTS_PER_ROW, false)) .newStructureSpawner(StructureGridSpawner(origin, TESTS_PER_ROW, false))
@@ -135,5 +137,6 @@ object SelfTest {
running = emptyList() running = emptyList()
Catching.hostilityPaused = false Catching.hostilityPaused = false
Wanderers.paused = false Wanderers.paused = false
PeacefulZones.paused = false
} }
} }
@@ -0,0 +1,57 @@
package dev.cobblesurvival.zone
import com.cobblemon.mod.common.entity.pokemon.PokemonEntity
import dev.cobblesurvival.Tuning
import dev.cobblesurvival.catching.FightOrFlight
import net.minecraft.server.level.ServerPlayer
import net.minecraft.world.entity.ai.memory.MemoryModuleType
import net.neoforged.neoforge.common.NeoForge
import net.neoforged.neoforge.event.tick.ServerTickEvent
/**
* Wild Pokémon leave players alone on the start island (Adrian, 2026-11-10): a player who has lost everything, with no
* tools, armour or Pokémon, can start over there. In a peaceful zone (`tuning/server.json` → `peaceful_zones`) a wild
* Pokémon only fights a player who has just hit it. Being stronger than the player's team doesn't anger it there, nor
* does a failed catch ([dev.cobblesurvival.catching.Catching]), and any other attack on a player there is called off
* and does nothing ([dev.cobblesurvival.catching.AttackBattles]).
*/
object PeacefulZones {
private const val CHECK_TICKS = 10
private const val SCAN_RANGE = 32.0
/** How long after being hit a Pokémon may hit back. */
private const val PROVOKED_TICKS = 200
/** The self-tests switch this off, except in their own batch: the platform they run on is above Button Isle. */
var paused = false
fun register() {
NeoForge.EVENT_BUS.addListener(::onServerTick)
}
fun isPeaceful(player: ServerPlayer): Boolean =
!paused && Zones.at(player.serverLevel(), player.blockPosition())?.id in Tuning.values.peaceful_zones
/** [player] hit [wild] lately, so it may hit back. */
fun provoked(wild: PokemonEntity, player: ServerPlayer): Boolean =
wild.lastHurtByMob === player && wild.tickCount - wild.lastHurtByMobTimestamp < PROVOKED_TICKS
fun targets(wild: PokemonEntity, player: ServerPlayer): Boolean =
wild.target === player ||
(wild.brain.hasMemoryValue(MemoryModuleType.ATTACK_TARGET) && wild.brain.getMemory(MemoryModuleType.ATTACK_TARGET).orElse(null) === player)
fun calmDown(wild: PokemonEntity) {
wild.target = null
wild.brain.eraseMemory(MemoryModuleType.ATTACK_TARGET)
FightOrFlight.clearTarget(wild)
}
private fun onServerTick(event: ServerTickEvent.Post) {
if (paused || event.server.tickCount % CHECK_TICKS != 0) return
for (player in event.server.playerList.players) {
if (!isPeaceful(player)) continue
player.serverLevel().getEntitiesOfClass(PokemonEntity::class.java, player.boundingBox.inflate(SCAN_RANGE)) {
it.pokemon.isWild() && !it.isBattling && targets(it, player) && !provoked(it, player)
}.forEach(::calmDown)
}
}
}
@@ -1,5 +1,6 @@
package dev.cobblesurvival.zone package dev.cobblesurvival.zone
import net.minecraft.world.level.levelgen.Heightmap
import com.google.gson.Gson import com.google.gson.Gson
import com.google.gson.JsonElement import com.google.gson.JsonElement
import dev.cobblesurvival.CobbleSurvival import dev.cobblesurvival.CobbleSurvival
@@ -39,6 +40,8 @@ object ZoneHazards : SimpleJsonResourceReloadListener(Gson(), "zone_hazards") {
val everyTicks: Int, val everyTicks: Int,
val protection: TagKey<Item>, val protection: TagKey<Item>,
val warning: String?, val warning: String?,
/** How far below the surface the hazard still reaches; null: everywhere in the zone. */
val maxDepth: Int?,
) )
var hazards: List<Hazard> = emptyList() var hazards: List<Hazard> = emptyList()
@@ -67,6 +70,7 @@ object ZoneHazards : SimpleJsonResourceReloadListener(Gson(), "zone_hazards") {
everyTicks = json.get("every_ticks").asInt, everyTicks = json.get("every_ticks").asInt,
protection = TagKey.create(Registries.ITEM, ResourceLocation.parse(json.get("protection").asString)), protection = TagKey.create(Registries.ITEM, ResourceLocation.parse(json.get("protection").asString)),
warning = json.get("warning")?.asString, warning = json.get("warning")?.asString,
maxDepth = json.get("max_depth")?.asInt,
) )
} }
CobbleSurvival.LOGGER.info("Loaded {} zone hazards", hazards.size) CobbleSurvival.LOGGER.info("Loaded {} zone hazards", hazards.size)
@@ -83,7 +87,7 @@ object ZoneHazards : SimpleJsonResourceReloadListener(Gson(), "zone_hazards") {
continue continue
} }
for (hazard in hazards) { for (hazard in hazards) {
if (hazard.zone != zone || isProtected(player, hazard)) continue if (hazard.zone != zone || isProtected(player, hazard) || tooDeep(player, hazard)) continue
// At once on entering the zone (Adrian, 2026-11-09), then renewed every every_ticks. // At once on entering the zone (Adrian, 2026-11-09), then renewed every every_ticks.
val current = player.getEffect(hazard.effect) val current = player.getEffect(hazard.effect)
if (current != null && current.duration > hazard.durationTicks - hazard.everyTicks) continue if (current != null && current.duration > hazard.durationTicks - hazard.everyTicks) continue
@@ -96,6 +100,13 @@ object ZoneHazards : SimpleJsonResourceReloadListener(Gson(), "zone_hazards") {
} }
} }
/** Adrian, 2026-11-10: the Mire's poison is the swamp's, not the rock's under it. Leaves don't count as surface, so the mangrove canopy doesn't shelter. */
fun tooDeep(player: ServerPlayer, hazard: Hazard): Boolean {
val depth = hazard.maxDepth ?: return false
val surface = player.serverLevel().getHeight(Heightmap.Types.MOTION_BLOCKING_NO_LEAVES, player.blockX, player.blockZ)
return player.blockY < surface - depth
}
fun isProtected(player: ServerPlayer, hazard: Hazard) = fun isProtected(player: ServerPlayer, hazard: Hazard) =
listOf(EquipmentSlot.HEAD, EquipmentSlot.CHEST, EquipmentSlot.LEGS, EquipmentSlot.FEET) listOf(EquipmentSlot.HEAD, EquipmentSlot.CHEST, EquipmentSlot.LEGS, EquipmentSlot.FEET)
.any { player.getItemBySlot(it).`is`(hazard.protection) } .any { player.getItemBySlot(it).`is`(hazard.protection) }
@@ -3,6 +3,6 @@
"minVersion": "0.8", "minVersion": "0.8",
"package": "dev.cobblesurvival.mixin", "package": "dev.cobblesurvival.mixin",
"compatibilityLevel": "JAVA_21", "compatibilityLevel": "JAVA_21",
"mixins": ["HardcorePartyMixin", "RegeneratorBlockMixin"], "mixins": ["HardcoreBattlesMixin", "HardcorePartyMixin", "RegeneratorBlockMixin"],
"injectors": {"defaultRequire": 1} "injectors": {"defaultRequire": 1}
} }
@@ -7,7 +7,7 @@
id: "minecraft:magma_block" id: "minecraft:magma_block"
} }
id: "1AB2113B8D294817" id: "1AB2113B8D294817"
order_index: 15 order_index: 16
quest_links: [ ] quest_links: [ ]
quests: [ quests: [
{ {
@@ -24,7 +24,7 @@
} }
] ]
x: 0.0d x: 0.0d
y: 0.0d y: -0.75d
} }
{ {
dependencies: ["347307113EAA43B7"] dependencies: ["347307113EAA43B7"]
@@ -104,5 +104,47 @@
x: 4.0d x: 4.0d
y: 0.0d y: 0.0d
} }
{
icon: {
id: "minecraft:lava_bucket"
}
id: "70A2F0F9ACD36738"
tasks: [
{
id: "609958974C170D9D"
item: {
count: 1
id: "cold_sweat:hoglin_helmet"
}
type: "item"
}
{
id: "42133BBF621A060D"
item: {
count: 1
id: "cold_sweat:hoglin_chestplate"
}
type: "item"
}
{
id: "415D4EA0FAF43211"
item: {
count: 1
id: "cold_sweat:hoglin_leggings"
}
type: "item"
}
{
id: "5D8186D5B25B7D91"
item: {
count: 1
id: "cold_sweat:hoglin_boots"
}
type: "item"
}
]
x: 0.0d
y: 0.75d
}
] ]
} }
@@ -7,7 +7,7 @@
id: "cobblemon:pasture" id: "cobblemon:pasture"
} }
id: "5B1F192C5A22F0B9" id: "5B1F192C5A22F0B9"
order_index: 19 order_index: 20
quest_links: [ ] quest_links: [ ]
quests: [ quests: [
{ {
@@ -7,7 +7,7 @@
id: "cobblemon:poke_ball" id: "cobblemon:poke_ball"
} }
id: "5B1E1FC28AA13DF0" id: "5B1E1FC28AA13DF0"
order_index: 2 order_index: 3
quest_links: [ ] quest_links: [ ]
quests: [ quests: [
{ {
@@ -7,7 +7,7 @@
id: "minecraft:sculk" id: "minecraft:sculk"
} }
id: "3D9DA7F91C127569" id: "3D9DA7F91C127569"
order_index: 14 order_index: 15
quest_links: [ ] quest_links: [ ]
quests: [ quests: [
{ {
@@ -24,7 +24,7 @@
} }
] ]
x: 0.0d x: 0.0d
y: 0.0d y: -0.75d
} }
{ {
dependencies: ["5C9CBA31D53F1574"] dependencies: ["5C9CBA31D53F1574"]
@@ -104,5 +104,19 @@
x: 4.0d x: 4.0d
y: 0.0d y: 0.0d
} }
{
icon: {
id: "minecraft:glow_ink_sac"
}
id: "693B293CFE0555AB"
tasks: [
{
id: "4FAC632DEE00EB83"
type: "checkmark"
}
]
x: 0.0d
y: 0.75d
}
] ]
} }
@@ -7,7 +7,7 @@
id: "cobblemon:mystic_water" id: "cobblemon:mystic_water"
} }
id: "720F052C0D14A813" id: "720F052C0D14A813"
order_index: 12 order_index: 13
quest_links: [ ] quest_links: [ ]
quests: [ quests: [
{ {
@@ -24,7 +24,7 @@
} }
] ]
x: 0.0d x: 0.0d
y: 0.0d y: -0.75d
} }
{ {
dependencies: ["731852EDB1EE12B7"] dependencies: ["731852EDB1EE12B7"]
@@ -75,5 +75,19 @@
x: 4.0d x: 4.0d
y: 0.0d y: 0.0d
} }
{
icon: {
id: "minecraft:turtle_helmet"
}
id: "7421E4AF4A12111C"
tasks: [
{
id: "38F8AD9CF938DB2E"
type: "checkmark"
}
]
x: 0.0d
y: 0.75d
}
] ]
} }
@@ -7,7 +7,7 @@
id: "minecraft:pointed_dripstone" id: "minecraft:pointed_dripstone"
} }
id: "1CC462D3533A24CB" id: "1CC462D3533A24CB"
order_index: 8 order_index: 9
quest_links: [ ] quest_links: [ ]
quests: [ quests: [
{ {
@@ -7,7 +7,7 @@
id: "cobblemon:ice_stone" id: "cobblemon:ice_stone"
} }
id: "5FFC982FA1DF927B" id: "5FFC982FA1DF927B"
order_index: 13 order_index: 14
quest_links: [ ] quest_links: [ ]
quests: [ quests: [
{ {
@@ -24,7 +24,7 @@
} }
] ]
x: 0.0d x: 0.0d
y: 0.0d y: -0.75d
} }
{ {
dependencies: ["5E3FC3FC950242DD"] dependencies: ["5E3FC3FC950242DD"]
@@ -113,5 +113,47 @@
x: 4.0d x: 4.0d
y: 0.0d y: 0.0d
} }
{
icon: {
id: "cold_sweat:goat_fur_chestplate"
}
id: "40D5079C4276CB64"
tasks: [
{
id: "091B6796490CB002"
item: {
count: 1
id: "cold_sweat:goat_fur_helmet"
}
type: "item"
}
{
id: "1A499668EE997B86"
item: {
count: 1
id: "cold_sweat:goat_fur_chestplate"
}
type: "item"
}
{
id: "05F476C634B26BEC"
item: {
count: 1
id: "cold_sweat:goat_fur_leggings"
}
type: "item"
}
{
id: "2847F3CEB00C5C26"
item: {
count: 1
id: "cold_sweat:goat_fur_boots"
}
type: "item"
}
]
x: 0.0d
y: 0.75d
}
] ]
} }
@@ -7,7 +7,7 @@
id: "cobblemon:sun_stone" id: "cobblemon:sun_stone"
} }
id: "26CC78ED0BC7D785" id: "26CC78ED0BC7D785"
order_index: 9 order_index: 10
quest_links: [ ] quest_links: [ ]
quests: [ quests: [
{ {
@@ -7,7 +7,7 @@
id: "cobblemon:leaf_stone" id: "cobblemon:leaf_stone"
} }
id: "0F763138AA0551CF" id: "0F763138AA0551CF"
order_index: 7 order_index: 8
quest_links: [ ] quest_links: [ ]
quests: [ quests: [
{ {
@@ -7,7 +7,7 @@
id: "cobblesurvival:summon_sigil" id: "cobblesurvival:summon_sigil"
} }
id: "0217ED8D82F11BE4" id: "0217ED8D82F11BE4"
order_index: 17 order_index: 18
quest_links: [ ] quest_links: [ ]
quests: [ quests: [
{ {
@@ -7,7 +7,7 @@
id: "minecraft:glow_berries" id: "minecraft:glow_berries"
} }
id: "5FD07FF070099857" id: "5FD07FF070099857"
order_index: 5 order_index: 6
quest_links: [ ] quest_links: [ ]
quests: [ quests: [
{ {
@@ -7,7 +7,7 @@
id: "cobblesurvival:heat_core" id: "cobblesurvival:heat_core"
} }
id: "5170190C30A58C4C" id: "5170190C30A58C4C"
order_index: 18 order_index: 19
quest_links: [ ] quest_links: [ ]
quests: [ quests: [
{ {
@@ -7,7 +7,7 @@
id: "cobblesurvival:mire_waders" id: "cobblesurvival:mire_waders"
} }
id: "44799AD1E5B5CCB8" id: "44799AD1E5B5CCB8"
order_index: 10 order_index: 11
quest_links: [ ] quest_links: [ ]
quests: [ quests: [
{ {
@@ -0,0 +1,119 @@
{
default_hide_dependency_lines: false
default_quest_shape: ""
filename: "mods"
group: ""
icon: {
id: "cold_sweat:thermometer"
}
id: "5674AE5774EAEDFB"
order_index: 2
quest_links: [ ]
quests: [
{
icon: {
id: "cold_sweat:thermometer"
}
id: "29FF77C5CBB4F81E"
size: 1.5d
tasks: [
{
id: "616D47AD41AA397A"
type: "checkmark"
}
]
x: 0.0d
y: 0.0d
}
{
dependencies: ["29FF77C5CBB4F81E"]
icon: {
id: "minecraft:iron_sword"
}
id: "570392C6B938A24A"
tasks: [
{
id: "6B4907BDEBE56419"
type: "checkmark"
}
]
x: 2.0d
y: -3.0d
}
{
dependencies: ["29FF77C5CBB4F81E"]
icon: {
id: "cobblemon:pasture"
}
id: "700BB636F6336DFA"
tasks: [
{
id: "53AC9F64ED1C2F4D"
type: "checkmark"
}
]
x: 2.0d
y: -1.5d
}
{
dependencies: ["700BB636F6336DFA"]
icon: {
id: "cobblemon:pasture"
}
id: "33852011B4D6F1C2"
tasks: [
{
id: "6A1DAA51E447DCD2"
type: "checkmark"
}
]
x: 4.0d
y: 0.0d
}
{
dependencies: ["29FF77C5CBB4F81E"]
icon: {
id: "minecraft:raw_iron"
}
id: "3AB07FD1508DD2D3"
tasks: [
{
id: "30A20C5F1D31BE32"
type: "checkmark"
}
]
x: 2.0d
y: 0.0d
}
{
dependencies: ["29FF77C5CBB4F81E"]
icon: {
id: "minecraft:chest"
}
id: "097D800AD2F9DDE2"
tasks: [
{
id: "75CAA4AD33916D83"
type: "checkmark"
}
]
x: 2.0d
y: 1.5d
}
{
dependencies: ["29FF77C5CBB4F81E"]
icon: {
id: "minecraft:filled_map"
}
id: "68E2F2E33EABE335"
tasks: [
{
id: "2CF8470A478C589A"
type: "checkmark"
}
]
x: 2.0d
y: 3.0d
}
]
}
@@ -7,7 +7,7 @@
id: "minecraft:kelp" id: "minecraft:kelp"
} }
id: "1B23BCD483E3F9CE" id: "1B23BCD483E3F9CE"
order_index: 3 order_index: 4
quest_links: [ ] quest_links: [ ]
quests: [ quests: [
{ {
@@ -7,7 +7,7 @@
id: "minecraft:raw_copper" id: "minecraft:raw_copper"
} }
id: "39B2B675E1F194C2" id: "39B2B675E1F194C2"
order_index: 4 order_index: 5
quest_links: [ ] quest_links: [ ]
quests: [ quests: [
{ {
@@ -7,7 +7,7 @@
id: "cobblemon:fire_stone" id: "cobblemon:fire_stone"
} }
id: "683F9A3EE54CFAEB" id: "683F9A3EE54CFAEB"
order_index: 11 order_index: 12
quest_links: [ ] quest_links: [ ]
quests: [ quests: [
{ {
@@ -24,7 +24,7 @@
} }
] ]
x: 0.0d x: 0.0d
y: 0.0d y: -0.75d
} }
{ {
dependencies: ["55ECFCF6F71DD9EA"] dependencies: ["55ECFCF6F71DD9EA"]
@@ -104,5 +104,47 @@
x: 4.0d x: 4.0d
y: 0.0d y: 0.0d
} }
{
icon: {
id: "cold_sweat:hoglin_chestplate"
}
id: "05D466130FD3E7AB"
tasks: [
{
id: "6FE926D5A400908F"
item: {
count: 1
id: "cold_sweat:hoglin_helmet"
}
type: "item"
}
{
id: "7BC0A94FCD84548D"
item: {
count: 1
id: "cold_sweat:hoglin_chestplate"
}
type: "item"
}
{
id: "11BD9B39423746E3"
item: {
count: 1
id: "cold_sweat:hoglin_leggings"
}
type: "item"
}
{
id: "4E055CF0795D1067"
item: {
count: 1
id: "cold_sweat:hoglin_boots"
}
type: "item"
}
]
x: 0.0d
y: 0.75d
}
] ]
} }
@@ -7,7 +7,7 @@
id: "minecraft:end_stone" id: "minecraft:end_stone"
} }
id: "523B743FE073F7FE" id: "523B743FE073F7FE"
order_index: 16 order_index: 17
quest_links: [ ] quest_links: [ ]
quests: [ quests: [
{ {
@@ -7,7 +7,7 @@
id: "cobblemon:thunder_stone" id: "cobblemon:thunder_stone"
} }
id: "59ECDC0F93A836A2" id: "59ECDC0F93A836A2"
order_index: 6 order_index: 7
quest_links: [ ] quest_links: [ ]
quests: [ quests: [
{ {
+138 -178
View File
@@ -16,6 +16,8 @@
"chapter.5170190C30A58C4C.chapter_subtitle": ["Five machines, each powered by a Pokémon inside it"] "chapter.5170190C30A58C4C.chapter_subtitle": ["Five machines, each powered by a Pokémon inside it"]
"chapter.5170190C30A58C4C.title": "Pokémon Machines" "chapter.5170190C30A58C4C.title": "Pokémon Machines"
"chapter.523B743FE073F7FE.title": "The End" "chapter.523B743FE073F7FE.title": "The End"
"chapter.5674AE5774EAEDFB.chapter_subtitle": ["What the bigger mods add, and how they work here"]
"chapter.5674AE5774EAEDFB.title": "Mods in the Pack"
"chapter.59ECDC0F93A836A2.title": "Westmarch" "chapter.59ECDC0F93A836A2.title": "Westmarch"
"chapter.5B1E1FC28AA13DF0.title": "Button Isle" "chapter.5B1E1FC28AA13DF0.title": "Button Isle"
"chapter.5B1F192C5A22F0B9.chapter_subtitle": ["Pokémon that work while you're away"] "chapter.5B1F192C5A22F0B9.chapter_subtitle": ["Pokémon that work while you're away"]
@@ -48,26 +50,28 @@
"Send your Pokémon out near the core and use the core with an empty hand: it walks in. Use the core again to take it back; sneak-use to see what the machine is doing." "Send your Pokémon out near the core and use the core with an empty hand: it walks in. Use the core again to take it back; sneak-use to see what the machine is doing."
] ]
"quest.0416CE46FDF992CF.title": "Building a Machine" "quest.0416CE46FDF992CF.title": "Building a Machine"
"quest.04E681E6F33D559E.quest_desc": [ "quest.04E681E6F33D559E.quest_desc": ["Button Isle's veins give Coal."]
"There is no ore anywhere except in each zone's own veins, and they grow back after you mine them."
"Button Isle has Coal."
]
"quest.04E681E6F33D559E.title": "Ores of Button Isle" "quest.04E681E6F33D559E.title": "Ores of Button Isle"
"quest.0512AD0A323B6CBF.quest_desc": [ "quest.0512AD0A323B6CBF.quest_desc": [
"Your PC holds every Pokémon not in your party. There is no remote access: you have to stand at a PC block." "Your PC holds every Pokémon not in your party. There is no remote access: you have to stand at a PC block."
] ]
"quest.0512AD0A323B6CBF.title": "A PC" "quest.0512AD0A323B6CBF.title": "A PC"
"quest.05B922BE6CEBAAC2.quest_desc": [ "quest.05B922BE6CEBAAC2.quest_desc": [
"Poké Balls are crafted from apricorns, which grow on apricorn trees around the island. Look the recipe up in JEI." "Poké Balls are crafted from apricorns, which grow on apricorn trees all over Button Isle. Four apricorns of any colour around a piece of coal or charcoal make one; a copper ingot from Southwold in the middle makes four, if the apricorns are red. Look the recipes up in JEI."
] ]
"quest.05B922BE6CEBAAC2.title": "Poké Balls" "quest.05B922BE6CEBAAC2.title": "Poké Balls"
"quest.05C2A740412D6FC6.quest_desc": [ "quest.05C2A740412D6FC6.quest_desc": [
"Craft the Mewtwo Sigil and use it in Deep Dark. Catch the Lv 90 Mewtwo that answers." "Craft the Mewtwo Sigil and use it in Deep Dark. Catch the Lv 90 Mewtwo that answers."
] ]
"quest.05C2A740412D6FC6.title": "Mewtwo" "quest.05C2A740412D6FC6.title": "Mewtwo"
"quest.05D466130FD3E7AB.quest_desc": [
"A full set of Hoglin Hide armour holds Sunscorch's midday heat off for at least ten minutes."
"Eight leather around an Icy Rock make eight Hoglin Hide; the guardians of the Mangrove Mire and the Highland Meadows drop Icy Rocks."
"An Ice type riding on your shoulder cools you too, once it passes the Verdant Jungle gate (see the HMs page)."
]
"quest.05D466130FD3E7AB.title": "Hoglin Hide Armour"
"quest.0644BAB8C69CE8D0.quest_desc": [ "quest.0644BAB8C69CE8D0.quest_desc": [
"Wild Pokémon in Westmarch are level 15 to 25. Bring a team that can hold its own there." "The north-west of the big island: forest and windswept hills. The first iron on the island grows here."
"A Pokémon far above a zone's levels learns less from battles there; Exp. Candy always works in full."
] ]
"quest.0644BAB8C69CE8D0.quest_subtitle": "Lv 15–25" "quest.0644BAB8C69CE8D0.quest_subtitle": "Lv 15–25"
"quest.0644BAB8C69CE8D0.title": "Westmarch" "quest.0644BAB8C69CE8D0.title": "Westmarch"
@@ -83,6 +87,10 @@
"Southwold, north of Button Isle, is the next step: Pokémon up to level 18 and the island's copper." "Southwold, north of Button Isle, is the next step: Pokémon up to level 18 and the island's copper."
] ]
"quest.0830DA072B96D6A8.title": "Beyond Button Isle" "quest.0830DA072B96D6A8.title": "Beyond Button Isle"
"quest.097D800AD2F9DDE2.quest_desc": [
"Chests in villages, ruins and other structures are shared by everybody: one inventory per chest, rolled once. An hour after it is first opened, a chest fills up again with new loot."
]
"quest.097D800AD2F9DDE2.title": "Shared Loot"
"quest.0BCD6F1DF120EEF0.quest_desc": [ "quest.0BCD6F1DF120EEF0.quest_desc": [
"Craft the Latios Sigil and use it in Highland Meadows. Catch the Lv 70 Latios that answers." "Craft the Latios Sigil and use it in Highland Meadows. Catch the Lv 70 Latios that answers."
] ]
@@ -97,26 +105,14 @@
"Endure: double the stamina." "Endure: double the stamina."
] ]
"quest.0C98431E89D63AA8.title": "Mount Toggles" "quest.0C98431E89D63AA8.title": "Mount Toggles"
"quest.0CA0C724D201B8A0.quest_desc": [ "quest.0CA0C724D201B8A0.quest_desc": ["Basalt Furnace's veins give Ancient Debris, Quartz."]
"There is no ore anywhere except in each zone's own veins, and they grow back after you mine them."
"Basalt Furnace has Ancient Debris, Quartz."
]
"quest.0CA0C724D201B8A0.title": "Ores of Basalt Furnace" "quest.0CA0C724D201B8A0.title": "Ores of Basalt Furnace"
"quest.0EFBAEBACB069D59.quest_desc": [ "quest.0EFBAEBACB069D59.quest_desc": ["Beyond a stronghold's portal. Eternatus has taken the dragon's place."]
"Wild Pokémon in The End are level 50 to 70. Bring a team that can hold its own there."
"A Pokémon far above a zone's levels learns less from battles there; Exp. Candy always works in full."
]
"quest.0EFBAEBACB069D59.quest_subtitle": "Lv 50–70" "quest.0EFBAEBACB069D59.quest_subtitle": "Lv 50–70"
"quest.0EFBAEBACB069D59.title": "The End" "quest.0EFBAEBACB069D59.title": "The End"
"quest.1066F4CF69C3BC3D.quest_desc": [ "quest.1066F4CF69C3BC3D.quest_desc": ["Catch three Pokémon that live here, such as Beheeyem, Reuniclus and Metagross."]
"Each kind of Pokémon lives in one zone of the island. Catch three that call The End home."
"Their drops are what this zone adds to your crafting: look an item up in JEI to see who drops it."
]
"quest.1066F4CF69C3BC3D.title": "Locals of The End" "quest.1066F4CF69C3BC3D.title": "Locals of The End"
"quest.1154E278D871A8CA.quest_desc": [ "quest.1154E278D871A8CA.quest_desc": ["Southwold's veins give Raw Copper."]
"There is no ore anywhere except in each zone's own veins, and they grow back after you mine them."
"Southwold has Raw Copper."
]
"quest.1154E278D871A8CA.title": "Ores of Southwold" "quest.1154E278D871A8CA.title": "Ores of Southwold"
"quest.1334D8BDB02D0027.quest_desc": [ "quest.1334D8BDB02D0027.quest_desc": [
"Craft the Zapdos Sigil and use it in Westmarch. Catch the Lv 70 Zapdos that answers." "Craft the Zapdos Sigil and use it in Westmarch. Catch the Lv 70 Zapdos that answers."
@@ -132,10 +128,7 @@
"Tail Whip: sweeps suspicious sand or gravel clean in one go." "Tail Whip: sweeps suspicious sand or gravel clean in one go."
] ]
"quest.136DBA5479235C7C.title": "Gathering and Building" "quest.136DBA5479235C7C.title": "Gathering and Building"
"quest.1391BDC3E21A671E.quest_desc": [ "quest.1391BDC3E21A671E.quest_desc": ["Catch three Pokémon that live here, such as Torkoal, Heatmor and Durant."]
"Each kind of Pokémon lives in one zone of the island. Catch three that call Basalt Furnace home."
"Their drops are what this zone adds to your crafting: look an item up in JEI to see who drops it."
]
"quest.1391BDC3E21A671E.title": "Locals of Basalt Furnace" "quest.1391BDC3E21A671E.title": "Locals of Basalt Furnace"
"quest.14426F35CDAB120B.quest_desc": [ "quest.14426F35CDAB120B.quest_desc": [
"Growth: makes the Pokémon you aim at one size bigger for good; aim elsewhere and you grow for 5 minutes." "Growth: makes the Pokémon you aim at one size bigger for good; aim elsewhere and you grow for 5 minutes."
@@ -158,30 +151,18 @@
"A gate means the Pokémon must have reached the top level of that zone, or hold one of its materials: its ore, evolution stone or guardian's drop." "A gate means the Pokémon must have reached the top level of that zone, or hold one of its materials: its ore, evolution stone or guardian's drop."
] ]
"quest.14A663D7085B96EF.title": "Exploring Auras" "quest.14A663D7085B96EF.title": "Exploring Auras"
"quest.15287B830F186D1D.quest_desc": [ "quest.15287B830F186D1D.quest_desc": ["Highland Meadows's veins give Lapis Lazuli, Sun Stone."]
"There is no ore anywhere except in each zone's own veins, and they grow back after you mine them."
"Highland Meadows has Lapis Lazuli, Sun Stone."
]
"quest.15287B830F186D1D.title": "Ores of Highland Meadows" "quest.15287B830F186D1D.title": "Ores of Highland Meadows"
"quest.160F8C59205DCFAB.quest_desc": [ "quest.160F8C59205DCFAB.quest_desc": ["Mangrove Mire's veins give Water Stone."]
"There is no ore anywhere except in each zone's own veins, and they grow back after you mine them."
"Mangrove Mire has Water Stone."
]
"quest.160F8C59205DCFAB.title": "Ores of Mangrove Mire" "quest.160F8C59205DCFAB.title": "Ores of Mangrove Mire"
"quest.176EAF7AF6072172.quest_desc": [ "quest.176EAF7AF6072172.quest_desc": ["Verdant Jungle's veins give Leaf Stone, Redstone."]
"There is no ore anywhere except in each zone's own veins, and they grow back after you mine them."
"Verdant Jungle has Leaf Stone, Redstone."
]
"quest.176EAF7AF6072172.title": "Ores of Verdant Jungle" "quest.176EAF7AF6072172.title": "Ores of Verdant Jungle"
"quest.18899F287B836AF9.quest_desc": [ "quest.18899F287B836AF9.quest_desc": [
"Swampert, Lv 43, guards Mangrove Mire: a giant that takes at most a quarter of its health from any one attack." "Swampert, Lv 43, guards Mangrove Mire. Beating it gives 3 Icy Rock, 4 Super Potion. An Icy Rock turns leather into Hoglin Hide, for armour against Sunscorch's heat."
"Within 128 blocks its bar shows how far away it is. In the fight, watch the ground and step out of its area attacks; leaving the arena or dying loses the fight."
"Beat it for 3 Icy Rock, 4 Super Potion. It returns 5 hours later."
] ]
"quest.18899F287B836AF9.title": "Guardian of Mangrove Mire" "quest.18899F287B836AF9.title": "Guardian of Mangrove Mire"
"quest.190884D7C1509137.quest_desc": [ "quest.190884D7C1509137.quest_desc": [
"Wild Pokémon in Verdant Jungle are level 18 to 30. Bring a team that can hold its own there." "The jungle in the east, on both sides of the channel across the middle. Warm and humid, but never too hot."
"A Pokémon far above a zone's levels learns less from battles there; Exp. Candy always works in full."
] ]
"quest.190884D7C1509137.quest_subtitle": "Lv 18–30" "quest.190884D7C1509137.quest_subtitle": "Lv 18–30"
"quest.190884D7C1509137.title": "Verdant Jungle" "quest.190884D7C1509137.title": "Verdant Jungle"
@@ -189,10 +170,7 @@
"A Fire-type Pokémon in a Heat Core shell of bricks heats furnaces placed against the shell: they burn without fuel and cook much faster. Hoppers work as usual." "A Fire-type Pokémon in a Heat Core shell of bricks heats furnaces placed against the shell: they burn without fuel and cook much faster. Hoppers work as usual."
] ]
"quest.19F164637025FA56.title": "Large Furnace" "quest.19F164637025FA56.title": "Large Furnace"
"quest.1CC49658829D508F.quest_desc": [ "quest.1CC49658829D508F.quest_desc": ["Catch three Pokémon that live here, such as Natu, Bellsprout and Pikipek."]
"Each kind of Pokémon lives in one zone of the island. Catch three that call Verdant Jungle home."
"Their drops are what this zone adds to your crafting: look an item up in JEI to see who drops it."
]
"quest.1CC49658829D508F.title": "Locals of Verdant Jungle" "quest.1CC49658829D508F.title": "Locals of Verdant Jungle"
"quest.1DADE103D473A8DB.quest_desc": [ "quest.1DADE103D473A8DB.quest_desc": [
"Craft the Galarian Moltres Sigil and use it in Deep Dark. Catch the Lv 80 Galarian Moltres that answers." "Craft the Galarian Moltres Sigil and use it in Deep Dark. Catch the Lv 80 Galarian Moltres that answers."
@@ -213,9 +191,7 @@
] ]
"quest.20A91DB2D922F503.title": "Your First Partner" "quest.20A91DB2D922F503.title": "Your First Partner"
"quest.20F77357783CD1BD.quest_desc": [ "quest.20F77357783CD1BD.quest_desc": [
"Flygon, Lv 50, guards Sunscorch: a giant that takes at most a quarter of its health from any one attack." "Flygon, Lv 50, guards Sunscorch. Beating it gives 3 Heat Rock, 2 Exp Candy L. A Heat Rock turns wool into Goat Fur, for armour against Frostpeak's cold."
"Within 128 blocks its bar shows how far away it is. In the fight, watch the ground and step out of its area attacks; leaving the arena or dying loses the fight."
"Beat it for 3 Heat Rock, 2 Exp Candy L. It returns 5 hours later."
] ]
"quest.20F77357783CD1BD.title": "Guardian of Sunscorch" "quest.20F77357783CD1BD.title": "Guardian of Sunscorch"
"quest.22D0F5E8ADD14B3C.quest_desc": [ "quest.22D0F5E8ADD14B3C.quest_desc": [
@@ -225,14 +201,12 @@
] ]
"quest.22D0F5E8ADD14B3C.title": "Helping Auras" "quest.22D0F5E8ADD14B3C.title": "Helping Auras"
"quest.234A59E2E707A288.quest_desc": [ "quest.234A59E2E707A288.quest_desc": [
"Wild Pokémon in Dripstone Depths are level 22 to 38. Bring a team that can hold its own there." "Dripstone caves under the whole island, deeper and stronger than the Lush Caves."
"A Pokémon far above a zone's levels learns less from battles there; Exp. Candy always works in full."
] ]
"quest.234A59E2E707A288.quest_subtitle": "Lv 22–38" "quest.234A59E2E707A288.quest_subtitle": "Lv 22–38"
"quest.234A59E2E707A288.title": "Dripstone Depths" "quest.234A59E2E707A288.title": "Dripstone Depths"
"quest.23A088BCF63BF446.quest_desc": [ "quest.23A088BCF63BF446.quest_desc": [
"Wild Pokémon in Lush Caves are level 12 to 28. Bring a team that can hold its own there." "Overgrown caves under the whole island. The fossil Pokémon live down here: Kabuto, Omanyte, Lileep and Anorith."
"A Pokémon far above a zone's levels learns less from battles there; Exp. Candy always works in full."
] ]
"quest.23A088BCF63BF446.quest_subtitle": "Lv 12–28" "quest.23A088BCF63BF446.quest_subtitle": "Lv 12–28"
"quest.23A088BCF63BF446.title": "Lush Caves" "quest.23A088BCF63BF446.title": "Lush Caves"
@@ -244,25 +218,25 @@
"Craft the Regice Sigil and use it in Frostpeak Range. Catch the Lv 70 Regice that answers." "Craft the Regice Sigil and use it in Frostpeak Range. Catch the Lv 70 Regice that answers."
] ]
"quest.2732EB3DCE5B837B.title": "Regice" "quest.2732EB3DCE5B837B.title": "Regice"
"quest.28873C8A3FDC26C6.quest_desc": [ "quest.28873C8A3FDC26C6.quest_desc": ["Dripstone Depths's veins give Amethyst Shard, Moon Stone."]
"There is no ore anywhere except in each zone's own veins, and they grow back after you mine them."
"Dripstone Depths has Amethyst Shard, Moon Stone."
]
"quest.28873C8A3FDC26C6.title": "Ores of Dripstone Depths" "quest.28873C8A3FDC26C6.title": "Ores of Dripstone Depths"
"quest.28B36D465013F4FC.quest_desc": [ "quest.28B36D465013F4FC.quest_desc": [
"Craft the Articuno Sigil and use it in Frostpeak Range. Catch the Lv 70 Articuno that answers." "Craft the Articuno Sigil and use it in Frostpeak Range. Catch the Lv 70 Articuno that answers."
] ]
"quest.28B36D465013F4FC.title": "Articuno" "quest.28B36D465013F4FC.title": "Articuno"
"quest.29FF77C5CBB4F81E.quest_desc": [
"You have a body temperature. The face above your hotbar shows it: it turns red as you heat up and blue as you cool down. At either end you take damage every two seconds; cold also slows you, makes you mine slower and freezes away up to half your hearts, and heat fogs your view."
"Where you stand decides which way it moves. The lowlands are mild; Sunscorch and the Basalt Furnace are hot, Frostpeak is cold, and nights are cooler everywhere. Water cools you down. Over time you get used to the climate you're in."
"The flame or snowflake by your hotbar shows roughly how hot or cold the place is; carry a Thermometer to read it exactly. For five minutes after you first arrive or respawn you are immune."
""
"To stay safe: wear Goat Fur armour against cold or Hoglin Hide armour against heat, or sew Goat Fur, Hoglin Hide, wool or leather onto any armour at a Sewing Table. Pour a Waterskin of water over yourself to cool off. A Hearth keeps the area around your base comfortable, and a Boiler or Icebox with a Smokestack on top warms or cools a room."
]
"quest.29FF77C5CBB4F81E.title": "Cold Sweat"
"quest.2AAB6A47FDDD9D21.quest_desc": [ "quest.2AAB6A47FDDD9D21.quest_desc": [
"Regigigas, Lv 65, guards Deep Dark: a giant that takes at most a quarter of its health from any one attack." "Regigigas, Lv 65, guards Deep Dark. Beating it gives 3 Icy Rock, 2 Exp Candy L. An Icy Rock turns leather into Hoglin Hide, for armour against the Basalt Furnace's heat."
"Within 128 blocks its bar shows how far away it is. In the fight, watch the ground and step out of its area attacks; leaving the arena or dying loses the fight."
"Beat it for 3 Icy Rock, 2 Exp Candy L. It returns 5 hours later."
] ]
"quest.2AAB6A47FDDD9D21.title": "Guardian of Deep Dark" "quest.2AAB6A47FDDD9D21.title": "Guardian of Deep Dark"
"quest.2B50212FDAA429C2.quest_desc": [ "quest.2B50212FDAA429C2.quest_desc": ["Catch three Pokémon that live here, such as Krabby, Wingull and Chinchou."]
"Each kind of Pokémon lives in one zone of the island. Catch three that call Shallows home."
"Their drops are what this zone adds to your crafting: look an item up in JEI to see who drops it."
]
"quest.2B50212FDAA429C2.title": "Locals of Shallows" "quest.2B50212FDAA429C2.title": "Locals of Shallows"
"quest.2CD942BD947AD220.quest_desc": [ "quest.2CD942BD947AD220.quest_desc": [
"Some zones hurt to be in. Sunscorch is hot and Frostpeak is cold: your body temperature climbs or falls quickly there, so wear hide against heat and fur against cold." "Some zones hurt to be in. Sunscorch is hot and Frostpeak is cold: your body temperature climbs or falls quickly there, so wear hide against heat and fur against cold."
@@ -282,8 +256,7 @@
] ]
"quest.2E30721826656889.title": "Ore Comes from Veins" "quest.2E30721826656889.title": "Ore Comes from Veins"
"quest.2F51067D3773786B.quest_desc": [ "quest.2F51067D3773786B.quest_desc": [
"Wild Pokémon in Shallows are level 5 to 20. Bring a team that can hold its own there." "The coasts, beaches and the calm channels between the islands. The open sea further out is the Deep Sea, and much stronger."
"A Pokémon far above a zone's levels learns less from battles there; Exp. Candy always works in full."
] ]
"quest.2F51067D3773786B.quest_subtitle": "Lv 5–20" "quest.2F51067D3773786B.quest_subtitle": "Lv 5–20"
"quest.2F51067D3773786B.title": "Shallows" "quest.2F51067D3773786B.title": "Shallows"
@@ -291,35 +264,36 @@
"Craft the Regieleki Sigil and use it in Westmarch. Catch the Lv 70 Regieleki that answers." "Craft the Regieleki Sigil and use it in Westmarch. Catch the Lv 70 Regieleki that answers."
] ]
"quest.32265A879257CF62.title": "Regieleki" "quest.32265A879257CF62.title": "Regieleki"
"quest.33052810B8325006.quest_desc": [ "quest.33052810B8325006.quest_desc": ["Frostpeak Range's veins give Dawn Stone, Emerald, Ice Stone."]
"There is no ore anywhere except in each zone's own veins, and they grow back after you mine them."
"Frostpeak Range has Dawn Stone, Emerald, Ice Stone."
]
"quest.33052810B8325006.title": "Ores of Frostpeak Range" "quest.33052810B8325006.title": "Ores of Frostpeak Range"
"quest.33109004C52AD664.quest_desc": [ "quest.33109004C52AD664.quest_desc": [
"The way to the End is through a stronghold's portal. Ender pearls come from Abra and its evolutions; blaze powder from Fire types such as Magmar." "The way to the End is through a stronghold's portal. Ender pearls come from Abra and its evolutions; blaze powder from Fire types such as Magmar."
] ]
"quest.33109004C52AD664.title": "Eyes of Ender" "quest.33109004C52AD664.title": "Eyes of Ender"
"quest.33852011B4D6F1C2.quest_desc": [
"Put two compatible Pokémon (or one and a Ditto) in a Pasture Block and switch breeding on with the pasture's button. Now and then an egg appears in its nest; it hatches in your inventory after a while."
"Ditto only lives in the Deep Dark."
]
"quest.33852011B4D6F1C2.title": "Breeding"
"quest.347307113EAA43B7.quest_desc": [ "quest.347307113EAA43B7.quest_desc": [
"Wild Pokémon in Basalt Furnace are level 55 to 70. Bring a team that can hold its own there. The heat of the furnace hurts without heat insulation on your armor (Cold Sweat)." "Volcanic caves under the hottest land, reaching down to the bottom of the world."
"A Pokémon far above a zone's levels learns less from battles there; Exp. Candy always works in full."
] ]
"quest.347307113EAA43B7.quest_subtitle": "Lv 55–70" "quest.347307113EAA43B7.quest_subtitle": "Lv 55–70"
"quest.347307113EAA43B7.title": "Basalt Furnace" "quest.347307113EAA43B7.title": "Basalt Furnace"
"quest.35B82AF57D59FD63.quest_desc": [ "quest.35B82AF57D59FD63.quest_desc": ["Catch three Pokémon that live here, such as Meowth, Voltorb and Pidove."]
"Each kind of Pokémon lives in one zone of the island. Catch three that call Southwold home."
"Their drops are what this zone adds to your crafting: look an item up in JEI to see who drops it."
]
"quest.35B82AF57D59FD63.title": "Locals of Southwold" "quest.35B82AF57D59FD63.title": "Locals of Southwold"
"quest.38D974F9298EC54A.quest_desc": [ "quest.38D974F9298EC54A.quest_desc": ["Catch three Pokémon that live here, such as Horsea, Remoraid and Lapras."]
"Each kind of Pokémon lives in one zone of the island. Catch three that call Deep Sea home."
"Their drops are what this zone adds to your crafting: look an item up in JEI to see who drops it."
]
"quest.38D974F9298EC54A.title": "Locals of Deep Sea" "quest.38D974F9298EC54A.title": "Locals of Deep Sea"
"quest.3A7416794209F29E.quest_desc": [ "quest.3A7416794209F29E.quest_desc": [
"Craft the Moltres Sigil and use it in Basalt Furnace. Catch the Lv 70 Moltres that answers." "Craft the Moltres Sigil and use it in Basalt Furnace. Catch the Lv 70 Moltres that answers."
] ]
"quest.3A7416794209F29E.title": "Moltres" "quest.3A7416794209F29E.title": "Moltres"
"quest.3AB07FD1508DD2D3.quest_desc": [
"Ore only grows in veins: small nodes on the surface and bigger veins underground, each ore in its own zone. A mined ore block turns into faint glass and grows back after a while, from 20 minutes for coal to longer for rarer ores; JEI's Ore Veins pages give the times."
"You can't break the glass, but you can aim and mine through it. Sneak and use it to see when it grows back."
"A Vein Locator, made from a compass and a copper ingot and set to an ore block, points to the nearest vein of that ore. It may break with each use."
]
"quest.3AB07FD1508DD2D3.title": "Regenerating Ore Veins"
"quest.3B2B92B85F91AABA.quest_desc": [ "quest.3B2B92B85F91AABA.quest_desc": [
"Craft the Galarian Articuno Sigil and use it in Highland Meadows. Catch the Lv 80 Galarian Articuno that answers." "Craft the Galarian Articuno Sigil and use it in Highland Meadows. Catch the Lv 80 Galarian Articuno that answers."
] ]
@@ -334,9 +308,7 @@
] ]
"quest.3D4FF7751561B88E.title": "A Pasture" "quest.3D4FF7751561B88E.title": "A Pasture"
"quest.3D8B1B2FA845C406.quest_desc": [ "quest.3D8B1B2FA845C406.quest_desc": [
"Tangrowth, Lv 35, guards Verdant Jungle: a giant that takes at most a quarter of its health from any one attack." "Tangrowth, Lv 35, guards Verdant Jungle. Beating it gives 1 Mire Waders, 4 Pecha Berry, 2 Exp Candy M. The waders keep the Mangrove Mire's poison off."
"Within 128 blocks its bar shows how far away it is. In the fight, watch the ground and step out of its area attacks; leaving the arena or dying loses the fight."
"Beat it for 1 Mire Waders, 4 Pecha Berry, 2 Exp Candy M. It returns 5 hours later."
] ]
"quest.3D8B1B2FA845C406.title": "Guardian of Verdant Jungle" "quest.3D8B1B2FA845C406.title": "Guardian of Verdant Jungle"
"quest.3E981E279A76CEC0.quest_desc": [ "quest.3E981E279A76CEC0.quest_desc": [
@@ -347,24 +319,26 @@
] ]
"quest.3E981E279A76CEC0.title": "Keys Worth Knowing" "quest.3E981E279A76CEC0.title": "Keys Worth Knowing"
"quest.3F61AFD873C3F8EE.quest_desc": [ "quest.3F61AFD873C3F8EE.quest_desc": [
"Abomasnow, Lv 60, guards Frostpeak Range: a giant that takes at most a quarter of its health from any one attack." "Abomasnow, Lv 60, guards Frostpeak Range. Beating it gives 3 Icy Rock, 2 Exp Candy L. An Icy Rock turns leather into Hoglin Hide, for armour against the Basalt Furnace's heat."
"Within 128 blocks its bar shows how far away it is. In the fight, watch the ground and step out of its area attacks; leaving the arena or dying loses the fight."
"Beat it for 3 Icy Rock, 2 Exp Candy L. It returns 5 hours later."
] ]
"quest.3F61AFD873C3F8EE.title": "Guardian of Frostpeak Range" "quest.3F61AFD873C3F8EE.title": "Guardian of Frostpeak Range"
"quest.40D5079C4276CB64.quest_desc": [
"A full set of Goat Fur armour keeps you warm in Frostpeak for at least ten minutes, even at midday."
"Eight wool around a Heat Rock make eight Goat Fur; the guardian of Sunscorch drops Heat Rocks."
"A Fire type riding on your shoulder warms you too, once it passes the Highland Meadows gate (see the HMs page)."
]
"quest.40D5079C4276CB64.title": "Goat Fur Armour"
"quest.44BC987FF615F811.quest_desc": [ "quest.44BC987FF615F811.quest_desc": [
"Craft the Xerneas Sigil and use it in Verdant Jungle. Catch the Lv 80 Xerneas that answers." "Craft the Xerneas Sigil and use it in Verdant Jungle. Catch the Lv 80 Xerneas that answers."
] ]
"quest.44BC987FF615F811.title": "Xerneas" "quest.44BC987FF615F811.title": "Xerneas"
"quest.4508548D257AA751.quest_desc": [ "quest.4508548D257AA751.quest_desc": ["Catch three Pokémon that live here, such as Baltoy, Lunatone and Solrock."]
"Each kind of Pokémon lives in one zone of the island. Catch three that call Dripstone Depths home."
"Their drops are what this zone adds to your crafting: look an item up in JEI to see who drops it."
]
"quest.4508548D257AA751.title": "Locals of Dripstone Depths" "quest.4508548D257AA751.title": "Locals of Dripstone Depths"
"quest.47A58B466F15469C.quest_desc": [ "quest.47A58B466F15469C.quest_desc": [
"Look at a wild Pokémon and press R: your Pokémon goes out and the battle starts." "Look at a wild Pokémon and press R: your Pokémon goes out and the battle starts."
"Wild Pokémon can also come to you. One that attacks you starts a battle instead of hurting you, unless none of your Pokémon can fight: then you take the hit yourself." "Wild Pokémon can also come to you. One that attacks you starts a battle instead of hurting you, unless none of your Pokémon can fight: then you take the hit yourself."
"Pokémon stronger than your team hunt you; weaker ones keep their distance. In a battle you can run, and you get a few seconds' head start." "Pokémon stronger than your team hunt you; weaker ones keep their distance. In a battle you can run, and you get a few seconds' head start."
"Button Isle is safe ground: its Pokémon never attack you unless you hit them first. If you ever lose everything, start over there."
] ]
"quest.47A58B466F15469C.title": "Battling" "quest.47A58B466F15469C.title": "Battling"
"quest.47CC5F3E473D3ADA.quest_desc": [ "quest.47CC5F3E473D3ADA.quest_desc": [
@@ -375,14 +349,10 @@
"Craft the Walking Wake Sigil and use it in Mangrove Mire. Catch the Lv 70 Walking Wake that answers." "Craft the Walking Wake Sigil and use it in Mangrove Mire. Catch the Lv 70 Walking Wake that answers."
] ]
"quest.492E2A0DB2875211.title": "Walking Wake" "quest.492E2A0DB2875211.title": "Walking Wake"
"quest.496174D8AF114AE5.quest_desc": [ "quest.496174D8AF114AE5.quest_desc": ["Lush Caves's veins give Shiny Stone."]
"There is no ore anywhere except in each zone's own veins, and they grow back after you mine them."
"Lush Caves has Shiny Stone."
]
"quest.496174D8AF114AE5.title": "Ores of Lush Caves" "quest.496174D8AF114AE5.title": "Ores of Lush Caves"
"quest.498A85F2039AF3BB.quest_desc": [ "quest.498A85F2039AF3BB.quest_desc": [
"Wild Pokémon in Highland Meadows are level 25 to 35. Bring a team that can hold its own there." "The meadows of the north: plains, forest and cherry groves at the foot of the peaks."
"A Pokémon far above a zone's levels learns less from battles there; Exp. Candy always works in full."
] ]
"quest.498A85F2039AF3BB.quest_subtitle": "Lv 25–35" "quest.498A85F2039AF3BB.quest_subtitle": "Lv 25–35"
"quest.498A85F2039AF3BB.title": "Highland Meadows" "quest.498A85F2039AF3BB.title": "Highland Meadows"
@@ -391,8 +361,8 @@
] ]
"quest.4AC2A700F404BD2F.title": "Mew" "quest.4AC2A700F404BD2F.title": "Mew"
"quest.4C0B4F1365903D23.quest_desc": [ "quest.4C0B4F1365903D23.quest_desc": [
"Wild Pokémon in Southwold are level 8 to 18. Bring a team that can hold its own there." "The south of the big island, across the channel from Button Isle: forest, plains and windswept hills."
"A Pokémon far above a zone's levels learns less from battles there; Exp. Candy always works in full." "Its copper makes Poké Balls four at a time."
] ]
"quest.4C0B4F1365903D23.quest_subtitle": "Lv 8–18" "quest.4C0B4F1365903D23.quest_subtitle": "Lv 8–18"
"quest.4C0B4F1365903D23.title": "Southwold" "quest.4C0B4F1365903D23.title": "Southwold"
@@ -410,29 +380,20 @@
"quest.4D8A9AAC3492BF6A.title": "What Pokémon Leave Behind" "quest.4D8A9AAC3492BF6A.title": "What Pokémon Leave Behind"
"quest.4E95F2B6B144DACB.quest_desc": ["Six Pokémon of different types handle more than one strong one."] "quest.4E95F2B6B144DACB.quest_desc": ["Six Pokémon of different types handle more than one strong one."]
"quest.4E95F2B6B144DACB.title": "A Full Team" "quest.4E95F2B6B144DACB.title": "A Full Team"
"quest.51641292C7351094.quest_desc": [ "quest.51641292C7351094.quest_desc": ["Sunscorch's veins give Fire Stone, Raw Gold."]
"There is no ore anywhere except in each zone's own veins, and they grow back after you mine them."
"Sunscorch has Fire Stone, Raw Gold."
]
"quest.51641292C7351094.title": "Ores of Sunscorch" "quest.51641292C7351094.title": "Ores of Sunscorch"
"quest.51F4867542A2849E.quest_desc": [ "quest.51F4867542A2849E.quest_desc": [
"Scyther, Lv 30, guards Westmarch: a giant that takes at most a quarter of its health from any one attack." "Scyther, Lv 30, guards Westmarch. Beating it gives 1 Mire Waders, 4 Pecha Berry, 2 Exp Candy M. The waders keep the Mangrove Mire's poison off."
"Within 128 blocks its bar shows how far away it is. In the fight, watch the ground and step out of its area attacks; leaving the arena or dying loses the fight."
"Beat it for 1 Mire Waders, 4 Pecha Berry, 2 Exp Candy M. It returns 5 hours later."
] ]
"quest.51F4867542A2849E.title": "Guardian of Westmarch" "quest.51F4867542A2849E.title": "Guardian of Westmarch"
"quest.55A04905BAB11C0B.quest_desc": [ "quest.55A04905BAB11C0B.quest_desc": [
"Craft the Ho-Oh Sigil and use it in Highland Meadows. Catch the Lv 80 Ho-Oh that answers." "Craft the Ho-Oh Sigil and use it in Highland Meadows. Catch the Lv 80 Ho-Oh that answers."
] ]
"quest.55A04905BAB11C0B.title": "Ho-Oh" "quest.55A04905BAB11C0B.title": "Ho-Oh"
"quest.55E9777C26CA6D8B.quest_desc": [ "quest.55E9777C26CA6D8B.quest_desc": ["Deep Dark's veins give Diamond, Dusk Stone."]
"There is no ore anywhere except in each zone's own veins, and they grow back after you mine them."
"Deep Dark has Diamond, Dusk Stone."
]
"quest.55E9777C26CA6D8B.title": "Ores of Deep Dark" "quest.55E9777C26CA6D8B.title": "Ores of Deep Dark"
"quest.55ECFCF6F71DD9EA.quest_desc": [ "quest.55ECFCF6F71DD9EA.quest_desc": [
"Wild Pokémon in Sunscorch are level 30 to 45. Bring a team that can hold its own there. The desert heat hurts without heat insulation on your armor (Cold Sweat): look up insulation in JEI." "The desert and badlands: a patch just north of Button Isle's channel, and stretches of the north-east and north-west coasts. At midday its heat overwhelms you in under a minute."
"A Pokémon far above a zone's levels learns less from battles there; Exp. Candy always works in full."
] ]
"quest.55ECFCF6F71DD9EA.quest_subtitle": "Lv 30–45" "quest.55ECFCF6F71DD9EA.quest_subtitle": "Lv 30–45"
"quest.55ECFCF6F71DD9EA.title": "Sunscorch" "quest.55ECFCF6F71DD9EA.title": "Sunscorch"
@@ -447,48 +408,40 @@
"Working makes a Pokémon hungry. Right-click it with any berry to feed it. If it works on an empty stomach it loses friendship, and at none it refuses." "Working makes a Pokémon hungry. Right-click it with any berry to feed it. If it works on an empty stomach it loses friendship, and at none it refuses."
] ]
"quest.5662DCFF3C494207.title": "How HMs Work" "quest.5662DCFF3C494207.title": "How HMs Work"
"quest.5A9BD54AA3CCF992.quest_desc": [ "quest.570392C6B938A24A.quest_desc": [
"Each kind of Pokémon lives in one zone of the island. Catch three that call Sunscorch home." "Wild Pokémon don't just stand there: each one either flees from you or fights back when you hit it, depending on its nature, level and type. Dark and Ghost types grow bolder in the dark."
"Their drops are what this zone adds to your crafting: look an item up in JEI to see who drops it." "This pack adds two reasons to fight: a wild Pokémon stronger than your whole team hunts you, and one that breaks out of your ball attacks you. Either way, its attack starts a battle. While it is angry a thrown ball can't catch it, so battle it first."
"On Button Isle none of this happens unless you hit a Pokémon first."
] ]
"quest.570392C6B938A24A.title": "Fight or Flight"
"quest.5A9BD54AA3CCF992.quest_desc": ["Catch three Pokémon that live here, such as Sandshrew, Cacnea and Larvesta."]
"quest.5A9BD54AA3CCF992.title": "Locals of Sunscorch" "quest.5A9BD54AA3CCF992.title": "Locals of Sunscorch"
"quest.5C9CBA31D53F1574.quest_desc": [ "quest.5C9CBA31D53F1574.quest_desc": [
"Wild Pokémon in Deep Dark are level 45 to 60. Bring a team that can hold its own there. Sculk darkens your sight down here. There is no Warden, but the ancient colossus sleeps in the ruins." "The deepest caves, under the cold and temperate land, grown over with sculk. There is no Warden, but Regigigas sleeps in the ruins."
"A Pokémon far above a zone's levels learns less from battles there; Exp. Candy always works in full."
] ]
"quest.5C9CBA31D53F1574.quest_subtitle": "Lv 45–60" "quest.5C9CBA31D53F1574.quest_subtitle": "Lv 45–60"
"quest.5C9CBA31D53F1574.title": "Deep Dark" "quest.5C9CBA31D53F1574.title": "Deep Dark"
"quest.5E3FC3FC950242DD.quest_desc": [ "quest.5E3FC3FC950242DD.quest_desc": [
"Wild Pokémon in Frostpeak Range are level 40 to 55. Bring a team that can hold its own there. The cold hurts without wool insulation on your armor (Cold Sweat): look up insulation in JEI." "The jagged peaks of the north-east and the hills around them. Even at midday the cold freezes you in under a minute."
"A Pokémon far above a zone's levels learns less from battles there; Exp. Candy always works in full."
] ]
"quest.5E3FC3FC950242DD.quest_subtitle": "Lv 40–55" "quest.5E3FC3FC950242DD.quest_subtitle": "Lv 40–55"
"quest.5E3FC3FC950242DD.title": "Frostpeak Range" "quest.5E3FC3FC950242DD.title": "Frostpeak Range"
"quest.5F224979C849BDB1.quest_desc": [ "quest.5F224979C849BDB1.quest_desc": ["Westmarch's veins give Raw Iron, Thunder Stone."]
"There is no ore anywhere except in each zone's own veins, and they grow back after you mine them."
"Westmarch has Raw Iron, Thunder Stone."
]
"quest.5F224979C849BDB1.title": "Ores of Westmarch" "quest.5F224979C849BDB1.title": "Ores of Westmarch"
"quest.60D115B2A0C801B7.quest_desc": [ "quest.60D115B2A0C801B7.quest_desc": ["Catch three Pokémon that live here, such as Psyduck, Jigglypuff and Hoppip."]
"Each kind of Pokémon lives in one zone of the island. Catch three that call Highland Meadows home."
"Their drops are what this zone adds to your crafting: look an item up in JEI to see who drops it."
]
"quest.60D115B2A0C801B7.title": "Locals of Highland Meadows" "quest.60D115B2A0C801B7.title": "Locals of Highland Meadows"
"quest.60FEC6A879706B6D.quest_desc": [ "quest.60FEC6A879706B6D.quest_desc": [
"Each zone has its own Pokémon and level range; the book has a page for each. The channels between the islands are gentle, the open sea around them is not." "Each zone has its own Pokémon and level range; the book has a page for each. The channels between the islands are gentle, the open sea around them is not."
"Most zones have a guardian: a giant Pokémon with a health bar at the top of your screen when you are near. Only a battle can hurt it, and it can lose at most a quarter of its health to one attack. Beat it for its rewards; it comes back hours later." "Each kind of Pokémon lives in one zone. A Pokémon far above a zone's levels learns less from battles there; Exp. Candy always works in full."
"Most zones have a guardian: a giant Pokémon with a health bar at the top of your screen when you are within 128 blocks. Only a battle can hurt it, and it can lose at most a quarter of its health to one attack. Step out of its area attacks; leaving the arena or dying loses the fight. A beaten guardian returns 5 hours later."
] ]
"quest.60FEC6A879706B6D.title": "Zones and Guardians" "quest.60FEC6A879706B6D.title": "Zones and Guardians"
"quest.6293CDFC2970C810.quest_desc": [ "quest.6293CDFC2970C810.quest_desc": [
"Kingdra, Lv 55, guards Deep Sea: a giant that takes at most a quarter of its health from any one attack." "Kingdra, Lv 55, guards Deep Sea. Beating it gives 1 Mystic Water, 3 Exp Candy M."
"Within 128 blocks its bar shows how far away it is. In the fight, watch the ground and step out of its area attacks; leaving the arena or dying loses the fight."
"Beat it for 1 Mystic Water, 3 Exp Candy M. It returns 5 hours later."
] ]
"quest.6293CDFC2970C810.title": "Guardian of Deep Sea" "quest.6293CDFC2970C810.title": "Guardian of Deep Sea"
"quest.64893157D81592CD.quest_desc": [ "quest.64893157D81592CD.quest_desc": [
"Moltres, Lv 75, guards Basalt Furnace: a giant that takes at most a quarter of its health from any one attack." "Moltres, Lv 75, guards Basalt Furnace. Beating it gives 3 Exp Candy Xl, 2 Netherite Scrap."
"Within 128 blocks its bar shows how far away it is. In the fight, watch the ground and step out of its area attacks; leaving the arena or dying loses the fight."
"Beat it for 3 Exp Candy Xl, 2 Netherite Scrap. It returns 5 hours later."
] ]
"quest.64893157D81592CD.title": "Guardian of Basalt Furnace" "quest.64893157D81592CD.title": "Guardian of Basalt Furnace"
"quest.64D6151FAA5792B2.quest_desc": [ "quest.64D6151FAA5792B2.quest_desc": [
@@ -509,32 +462,35 @@
"Weaken a wild Pokémon in battle, then throw a Poké Ball at it. The weaker it is, the easier it is to catch, and a Pokémon far above your team's level is much harder." "Weaken a wild Pokémon in battle, then throw a Poké Ball at it. The weaker it is, the easier it is to catch, and a Pokémon far above your team's level is much harder."
] ]
"quest.662D0BC3B032EA6A.title": "Your First Catch" "quest.662D0BC3B032EA6A.title": "Your First Catch"
"quest.66F360A95FD42556.quest_desc": [ "quest.66F360A95FD42556.quest_desc": ["Catch three Pokémon that live here, such as Magikarp, Goomy and Applin."]
"Each kind of Pokémon lives in one zone of the island. Catch three that call Westmarch home."
"Their drops are what this zone adds to your crafting: look an item up in JEI to see who drops it."
]
"quest.66F360A95FD42556.title": "Locals of Westmarch" "quest.66F360A95FD42556.title": "Locals of Westmarch"
"quest.673147FA87104942.quest_desc": [ "quest.673147FA87104942.quest_desc": [
"Mudsdale, Lv 40, guards Highland Meadows: a giant that takes at most a quarter of its health from any one attack." "Mudsdale, Lv 40, guards Highland Meadows. Beating it gives 3 Icy Rock, 4 Super Potion. An Icy Rock turns leather into Hoglin Hide, for armour against Sunscorch's heat."
"Within 128 blocks its bar shows how far away it is. In the fight, watch the ground and step out of its area attacks; leaving the arena or dying loses the fight."
"Beat it for 3 Icy Rock, 4 Super Potion. It returns 5 hours later."
] ]
"quest.673147FA87104942.title": "Guardian of Highland Meadows" "quest.673147FA87104942.title": "Guardian of Highland Meadows"
"quest.683AFA47A4D71DAD.quest_desc": [ "quest.683AFA47A4D71DAD.quest_desc": [
"Craft the Iron Leaves Sigil and use it in Verdant Jungle. Catch the Lv 70 Iron Leaves that answers." "Craft the Iron Leaves Sigil and use it in Verdant Jungle. Catch the Lv 70 Iron Leaves that answers."
] ]
"quest.683AFA47A4D71DAD.title": "Iron Leaves" "quest.683AFA47A4D71DAD.title": "Iron Leaves"
"quest.68E2F2E33EABE335.quest_desc": [
"The minimap in the corner shows the land and the Pokémon around you. J opens the world map; your death points are marked there."
"JEI (the item list beside your inventory): R shows how to get an item, U what it's used for. Cobblemon Info adds a page for every Pokémon, with where it spawns and what it drops; the pack's own pages add the island's zones, guardians, machines, ore veins and pasture finds."
"Looking at something shows its name at the top of your screen; V shows more. AppleSkin shows how filling food is, and the buttons beside your inventory sort it."
]
"quest.68E2F2E33EABE335.title": "Maps and Info"
"quest.692C224D099307BA.quest_desc": [ "quest.692C224D099307BA.quest_desc": [
"This island has no zombies, no creepers and no cows: only Pokémon. Their drops are your food, string, leather and much more." "This island has no zombies, no creepers and no cows: only Pokémon. Their drops are your food, string, leather and much more."
"The island is split into zones, each with its own Pokémon, levels, ores and a guardian. You start on Button Isle; the further out you go, the stronger everything gets." "The island is split into zones, each with its own Pokémon, levels, ores and a guardian. You start on Button Isle; the further out you go, the stronger everything gets."
"" ""
"This book suggests what to do next. Nothing in it is locked and it gives no rewards: do things in any order you like. This first page walks through how the island works; the next one lists every field move your Pokémon can lend you." "This book suggests what to do next. Nothing in it is locked and it gives no rewards: do things in any order you like. This first page walks through how the island works; the next lists every field move your Pokémon can lend you, and the one after explains the bigger mods."
] ]
"quest.692C224D099307BA.title": "Welcome to the Island" "quest.692C224D099307BA.title": "Welcome to the Island"
"quest.69D3A6622A0EE729.quest_desc": [ "quest.693B293CFE0555AB.quest_desc": [
"Each kind of Pokémon lives in one zone of the island. Catch three that call Frostpeak Range home." "The sculk shriekers here cloud your sight with Darkness."
"Their drops are what this zone adds to your crafting: look an item up in JEI to see who drops it." "A Pokémon with Flash lets you see in the dark; it needs the Dripstone Depths gate."
] ]
"quest.693B293CFE0555AB.title": "Flash"
"quest.69D3A6622A0EE729.quest_desc": ["Catch three Pokémon that live here, such as Sneasel, Delibird and Rhydon."]
"quest.69D3A6622A0EE729.title": "Locals of Frostpeak Range" "quest.69D3A6622A0EE729.title": "Locals of Frostpeak Range"
"quest.69D61BD349921400.quest_desc": [ "quest.69D61BD349921400.quest_desc": [
"Craft the Poipole Sigil and use it in The End. Catch the Lv 70 Poipole that answers." "Craft the Poipole Sigil and use it in The End. Catch the Lv 70 Poipole that answers."
@@ -544,13 +500,11 @@
"An Electric-type Pokémon in a Dynamo Core shell of copper makes Forge Energy for cables and other machines." "An Electric-type Pokémon in a Dynamo Core shell of copper makes Forge Energy for cables and other machines."
] ]
"quest.6B424DADFF959A58.title": "Generator" "quest.6B424DADFF959A58.title": "Generator"
"quest.6C03647CB1240A88.quest_desc": [ "quest.6C03647CB1240A88.quest_desc": ["Catch three Pokémon that live here, such as Rattata, Bidoof and Caterpie."]
"Each kind of Pokémon lives in one zone of the island. Catch three that call Button Isle home."
"Their drops are what this zone adds to your crafting: look an item up in JEI to see who drops it."
]
"quest.6C03647CB1240A88.title": "Locals of Button Isle" "quest.6C03647CB1240A88.title": "Locals of Button Isle"
"quest.6D67BB02A856BDF9.quest_desc": [ "quest.6D67BB02A856BDF9.quest_desc": [
"Waders keep the Mire's poison off. Beat the guardian of Westmarch or the Verdant Jungle for a pair." "The Mire keeps poisoning you while you're in it. Mire Waders on your feet keep the poison off."
"The guardians of Westmarch and the Verdant Jungle each drop a pair."
] ]
"quest.6D67BB02A856BDF9.title": "Mire Waders" "quest.6D67BB02A856BDF9.title": "Mire Waders"
"quest.6EB4CFA7061556F9.quest_desc": [ "quest.6EB4CFA7061556F9.quest_desc": [
@@ -562,23 +516,27 @@
"Craft the Regigigas Sigil and use it in Deep Dark. Catch the Lv 80 Regigigas that answers." "Craft the Regigigas Sigil and use it in Deep Dark. Catch the Lv 80 Regigigas that answers."
] ]
"quest.6F2260E7AF1E93B6.title": "Regigigas" "quest.6F2260E7AF1E93B6.title": "Regigigas"
"quest.6F4F5AFD500EF638.quest_desc": [ "quest.6F4F5AFD500EF638.quest_desc": ["Catch three Pokémon that live here, such as Slowpoke, Mudkip and Ducklett."]
"Each kind of Pokémon lives in one zone of the island. Catch three that call Mangrove Mire home."
"Their drops are what this zone adds to your crafting: look an item up in JEI to see who drops it."
]
"quest.6F4F5AFD500EF638.title": "Locals of Mangrove Mire" "quest.6F4F5AFD500EF638.title": "Locals of Mangrove Mire"
"quest.70FDBAB56079AA17.quest_desc": [ "quest.700BB636F6336DFA.quest_desc": [
"Each kind of Pokémon lives in one zone of the island. Catch three that call Lush Caves home." "Pokémon in a Pasture Block can work. Open the pasture and give a Pokémon a skill in its Skills tab: harvesting, producing, mining, finding items, buffs and more. K opens Cobblebase's settings."
"Their drops are what this zone adds to your crafting: look an item up in JEI to see who drops it." "Better skills open up as your Pokémon grow: a skill names a zone, and the Pokémon needs that zone's top level or to hold one of its materials. An idle Pokémon tells you what it's missing."
"Mining and finding drop items at the Pokémon's feet. A second Pokémon in the same pasture with Item Gatherer puts them into the nearest chest. What a pasture finds depends on its zone: JEI's Pasture Finds pages list it."
] ]
"quest.700BB636F6336DFA.title": "Cobblebase"
"quest.70A2F0F9ACD36738.quest_desc": [
"Wear Hoglin Hide armour against the heat (see the Sunscorch page)."
"A Pokémon with Lava Plume lets you move through lava without burning; it needs the Deep Dark gate."
]
"quest.70A2F0F9ACD36738.title": "Lava and Heat"
"quest.70FDBAB56079AA17.quest_desc": ["Catch three Pokémon that live here, such as Barboach, Joltik and Shuckle."]
"quest.70FDBAB56079AA17.title": "Locals of Lush Caves" "quest.70FDBAB56079AA17.title": "Locals of Lush Caves"
"quest.7286E3D8F9A6BC2A.quest_desc": [ "quest.7286E3D8F9A6BC2A.quest_desc": [
"Craft the Lugia Sigil and use it in Deep Sea. Catch the Lv 80 Lugia that answers." "Craft the Lugia Sigil and use it in Deep Sea. Catch the Lv 80 Lugia that answers."
] ]
"quest.7286E3D8F9A6BC2A.title": "Lugia" "quest.7286E3D8F9A6BC2A.title": "Lugia"
"quest.731852EDB1EE12B7.quest_desc": [ "quest.731852EDB1EE12B7.quest_desc": [
"Wild Pokémon in Deep Sea are level 30 to 50. Bring a team that can hold its own there." "The open sea around the island, out beyond the coasts. There is no land to stand on out here."
"A Pokémon far above a zone's levels learns less from battles there; Exp. Candy always works in full."
] ]
"quest.731852EDB1EE12B7.quest_subtitle": "Lv 30–50" "quest.731852EDB1EE12B7.quest_subtitle": "Lv 30–50"
"quest.731852EDB1EE12B7.title": "Deep Sea" "quest.731852EDB1EE12B7.title": "Deep Sea"
@@ -592,11 +550,16 @@
] ]
"quest.73A150C1A7221BD0.title": "Calling a Legend" "quest.73A150C1A7221BD0.title": "Calling a Legend"
"quest.74149A0BF939C15E.quest_desc": [ "quest.74149A0BF939C15E.quest_desc": [
"Wild Pokémon in Button Isle are level 2 to 10. Bring a team that can hold its own there." "The round island in the middle, where you arrive, with a channel all around it. Forest and plains, a little cherry grove and desert, and apricorn trees everywhere."
"A Pokémon far above a zone's levels learns less from battles there; Exp. Candy always works in full." "Its Pokémon never attack you unless you hit them first: if you ever lose everything, start over here."
] ]
"quest.74149A0BF939C15E.quest_subtitle": "Lv 2–10" "quest.74149A0BF939C15E.quest_subtitle": "Lv 2–10"
"quest.74149A0BF939C15E.title": "Button Isle" "quest.74149A0BF939C15E.title": "Button Isle"
"quest.7421E4AF4A12111C.quest_desc": [
"A Pokémon with Dive lets you breathe, walk and mine underwater as if on land; it needs the Mangrove Mire gate."
"A Water type riding on your shoulder lets you breathe underwater too, once it passes the same gate."
]
"quest.7421E4AF4A12111C.title": "Breathing Underwater"
"quest.7426375BD8FE75B4.quest_desc": [ "quest.7426375BD8FE75B4.quest_desc": [
"A PC holds the Pokémon that don't fit in your party. A Pasture Block lets them out to roam around your base." "A PC holds the Pokémon that don't fit in your party. A Pasture Block lets them out to roam around your base."
"Pastured Pokémon also work: open the pasture and give them a skill, such as mining or gathering, and they bring in items. What they can find depends on the zone the pasture stands in, and JEI's Pasture Finds pages list it." "Pastured Pokémon also work: open the pasture and give them a skill, such as mining or gathering, and they bring in items. What they can find depends on the zone the pasture stands in, and JEI's Pasture Finds pages list it."
@@ -606,28 +569,16 @@
"Evolve a Pokémon. Some need a level, some an evolution stone: the stones come from ore veins in particular zones." "Evolve a Pokémon. Some need a level, some an evolution stone: the stones come from ore veins in particular zones."
] ]
"quest.7B60BB7EF06BE4E4.title": "Evolution" "quest.7B60BB7EF06BE4E4.title": "Evolution"
"quest.7D3AE59367CE04F7.quest_desc": [ "quest.7D3AE59367CE04F7.quest_desc": ["Catch three Pokémon that live here, such as Carbink, Bronzong and Ditto."]
"Each kind of Pokémon lives in one zone of the island. Catch three that call Deep Dark home."
"Their drops are what this zone adds to your crafting: look an item up in JEI to see who drops it."
]
"quest.7D3AE59367CE04F7.title": "Locals of Deep Dark" "quest.7D3AE59367CE04F7.title": "Locals of Deep Dark"
"quest.7D6694B8BDAB6CC3.quest_desc": [ "quest.7D6694B8BDAB6CC3.quest_desc": ["Morpeko, Lv 15, guards Button Isle. Beating it gives 10 Poke Ball, 4 Potion."]
"Morpeko, Lv 15, guards Button Isle: a giant that takes at most a quarter of its health from any one attack."
"Within 128 blocks its bar shows how far away it is. In the fight, watch the ground and step out of its area attacks; leaving the arena or dying loses the fight."
"Beat it for 10 Poke Ball, 4 Potion. It returns 5 hours later."
]
"quest.7D6694B8BDAB6CC3.title": "Guardian of Button Isle" "quest.7D6694B8BDAB6CC3.title": "Guardian of Button Isle"
"quest.7EE0590D4FE1CF15.quest_desc": [ "quest.7EE0590D4FE1CF15.quest_desc": [
"Wild Pokémon in Mangrove Mire are level 25 to 38. Bring a team that can hold its own there. The Mire's water poisons you unless you wear Mire Waders: the guardians of Westmarch and the Verdant Jungle drop them." "The mangrove swamp in the south-east. Its water poisons you unless you wear Mire Waders."
"A Pokémon far above a zone's levels learns less from battles there; Exp. Candy always works in full."
] ]
"quest.7EE0590D4FE1CF15.quest_subtitle": "Lv 25–38" "quest.7EE0590D4FE1CF15.quest_subtitle": "Lv 25–38"
"quest.7EE0590D4FE1CF15.title": "Mangrove Mire" "quest.7EE0590D4FE1CF15.title": "Mangrove Mire"
"quest.7F9137726771D1B4.quest_desc": [ "quest.7F9137726771D1B4.quest_desc": ["Pinsir, Lv 23, guards Southwold. Beating it gives 6 Great Ball, 4 Exp Candy S."]
"Pinsir, Lv 23, guards Southwold: a giant that takes at most a quarter of its health from any one attack."
"Within 128 blocks its bar shows how far away it is. In the fight, watch the ground and step out of its area attacks; leaving the arena or dying loses the fight."
"Beat it for 6 Great Ball, 4 Exp Candy S. It returns 5 hours later."
]
"quest.7F9137726771D1B4.title": "Guardian of Southwold" "quest.7F9137726771D1B4.title": "Guardian of Southwold"
"task.011FDF522119676D.title": "Beat Eternatus" "task.011FDF522119676D.title": "Beat Eternatus"
"task.03F5C5D2587C6503.title": "Reach Westmarch" "task.03F5C5D2587C6503.title": "Reach Westmarch"
@@ -647,13 +598,16 @@
"task.27978949A669D5C5.title": "Read this" "task.27978949A669D5C5.title": "Read this"
"task.29BC1DB51DDFA453.title": "Put an Electric type into a Generator" "task.29BC1DB51DDFA453.title": "Put an Electric type into a Generator"
"task.2B27F35809CBDD44.title": "Read this" "task.2B27F35809CBDD44.title": "Read this"
"task.2CF8470A478C589A.title": "Read this"
"task.2D2320863A33D6F6.title": "Reach Highland Meadows" "task.2D2320863A33D6F6.title": "Reach Highland Meadows"
"task.30A20C5F1D31BE32.title": "Read this"
"task.330E52B7A4CDB749.title": "Read this" "task.330E52B7A4CDB749.title": "Read this"
"task.34B8D43E572277D5.title": "Reach The End" "task.34B8D43E572277D5.title": "Reach The End"
"task.3733FBDB6C485FA5.title": "Start a rebirth" "task.3733FBDB6C485FA5.title": "Start a rebirth"
"task.3760C53D7E826E9F.title": "Beat Moltres" "task.3760C53D7E826E9F.title": "Beat Moltres"
"task.37E7DC548E1504B2.title": "Read this" "task.37E7DC548E1504B2.title": "Read this"
"task.37E84BF7E0830965.title": "Reach Button Isle" "task.37E84BF7E0830965.title": "Reach Button Isle"
"task.38F8AD9CF938DB2E.title": "Read this"
"task.3DDCEC8895708D8B.title": "Reach Frostpeak Range" "task.3DDCEC8895708D8B.title": "Reach Frostpeak Range"
"task.400C02B8A2511867.title": "Reach Shallows" "task.400C02B8A2511867.title": "Reach Shallows"
"task.40450EFE21BCC6AC.title": "Beat Kingdra" "task.40450EFE21BCC6AC.title": "Beat Kingdra"
@@ -661,6 +615,8 @@
"task.44F75B6501B37EE0.title": "Read this" "task.44F75B6501B37EE0.title": "Read this"
"task.48FAAD6D76831C55.title": "Beat Swampert" "task.48FAAD6D76831C55.title": "Beat Swampert"
"task.4F3BC1526B0D54EB.title": "Read this" "task.4F3BC1526B0D54EB.title": "Read this"
"task.4FAC632DEE00EB83.title": "Read this"
"task.53AC9F64ED1C2F4D.title": "Read this"
"task.541704C98A1EFEFD.title": "Reach Dripstone Depths" "task.541704C98A1EFEFD.title": "Reach Dripstone Depths"
"task.54E90B9B1AF4C46C.title": "Read this" "task.54E90B9B1AF4C46C.title": "Read this"
"task.574F9217F1F28CA1.title": "Reach Deep Sea" "task.574F9217F1F28CA1.title": "Reach Deep Sea"
@@ -668,15 +624,19 @@
"task.601AABB55A476514.title": "Beat Morpeko" "task.601AABB55A476514.title": "Beat Morpeko"
"task.60EA09356932EC73.title": "Reach Mangrove Mire" "task.60EA09356932EC73.title": "Reach Mangrove Mire"
"task.6120ECDE48C04063.title": "Read this" "task.6120ECDE48C04063.title": "Read this"
"task.616D47AD41AA397A.title": "Read this"
"task.63B77EE998527582.title": "Beat Flygon" "task.63B77EE998527582.title": "Beat Flygon"
"task.643C68559D41888A.title": "Beat Pinsir" "task.643C68559D41888A.title": "Beat Pinsir"
"task.66630E973B974C93.title": "Read this" "task.66630E973B974C93.title": "Read this"
"task.68A914F71CB2AC6B.title": "Read this" "task.68A914F71CB2AC6B.title": "Read this"
"task.6A1DAA51E447DCD2.title": "Read this"
"task.6B4907BDEBE56419.title": "Read this"
"task.6D2ED8A178EE3B43.title": "Reach Verdant Jungle" "task.6D2ED8A178EE3B43.title": "Reach Verdant Jungle"
"task.6EC304EEC3D8E6C3.title": "Put a Pokémon on a Sacrifice Altar" "task.6EC304EEC3D8E6C3.title": "Put a Pokémon on a Sacrifice Altar"
"task.6F3A4DD1B1D796C0.title": "Reach Deep Dark" "task.6F3A4DD1B1D796C0.title": "Reach Deep Dark"
"task.6FC8CBBD36184562.title": "Beat Regigigas" "task.6FC8CBBD36184562.title": "Beat Regigigas"
"task.72EC56D3618A6550.title": "Read this" "task.72EC56D3618A6550.title": "Read this"
"task.75CAA4AD33916D83.title": "Read this"
"task.79A62C2E20551202.title": "Got it" "task.79A62C2E20551202.title": "Got it"
"task.7AF22D9FB20998A9.title": "Read this" "task.7AF22D9FB20998A9.title": "Read this"
} }
@@ -7,6 +7,10 @@
# Health Link stays off (roadmap Phase 2). # Health Link stays off (roadmap Phase 2).
globalHealthLinkEnabled = false globalHealthLinkEnabled = false
# A battle between players never costs a Pokémon (Adrian, 2026-11-10); the companion mod holds to this in older worlds too.
[server.battles]
trackPlayerBattles = false
# Same wording as the companion mod, which settles faints outside battles. # Same wording as the companion mod, which settles faints outside battles.
[server.messages] [server.messages]
totemConsumed = "{pokemon}'s Revival Charm saved it and crumbled to dust." totemConsumed = "{pokemon}'s Revival Charm saved it and crumbled to dust."
+24 -20
View File
@@ -38,31 +38,31 @@ hash = "e57d8311aec9f524911ed1313cabf138bb7fa5a2d3ba985a00a2a267ff35ef78"
[[files]] [[files]]
file = "config/ftbquests/quests/chapters/basalt.snbt" file = "config/ftbquests/quests/chapters/basalt.snbt"
hash = "8512f3134b0ec73b5732f28be63daadae5104871e038daf59f2fc84ab4b3bef2" hash = "c8a88c04f30e0bed5c47558c2c0536a566b3e72bf743d3d0ba716164af8a3a37"
[[files]] [[files]]
file = "config/ftbquests/quests/chapters/base.snbt" file = "config/ftbquests/quests/chapters/base.snbt"
hash = "1a450cd4303cb834b43c8df30b07d59bbaa8e2e0c590497cf998ba3264d018fd" hash = "ed90f1dd672bc567d0aaff7b2f1446654d4f26744b4d245cd5cca91d38c5d38a"
[[files]] [[files]]
file = "config/ftbquests/quests/chapters/button_isle.snbt" file = "config/ftbquests/quests/chapters/button_isle.snbt"
hash = "73bcbcacc9df9b445912857a97983a31e7ee1e858d794c36d1f52f577c334da3" hash = "2365d3b5173892b7c202264e7be6d1e01031a1539ab32b049cf13636b7ac2ba6"
[[files]] [[files]]
file = "config/ftbquests/quests/chapters/deep_dark.snbt" file = "config/ftbquests/quests/chapters/deep_dark.snbt"
hash = "f5527a20dbc9b3ab1ab78d50cb37b95142d39fce1f2f7d7a64f94d00307da3a1" hash = "3f0e8d0c40a21ddeb075e884c52b7854a6879c1fa567d2a8195c72060862b462"
[[files]] [[files]]
file = "config/ftbquests/quests/chapters/deep_sea.snbt" file = "config/ftbquests/quests/chapters/deep_sea.snbt"
hash = "25222720545d502779d409898de568d96d52e200b6eca4920a81c30ee6c3ef2c" hash = "a10fede198afe3941d2f8e9c166de331d7edad926b013c1dbadeda7cae78e67f"
[[files]] [[files]]
file = "config/ftbquests/quests/chapters/dripstone.snbt" file = "config/ftbquests/quests/chapters/dripstone.snbt"
hash = "851c5514d74e3c88f28cb02f3f0dce2ca68986e99de26dbde4c5b097e82a985f" hash = "2aa618e3f4ef33ee9d726689ef73e27b1bd8724d1435d2f6a59b1205f44e943b"
[[files]] [[files]]
file = "config/ftbquests/quests/chapters/frostpeak.snbt" file = "config/ftbquests/quests/chapters/frostpeak.snbt"
hash = "314b8c10c1179cefb7b3b17d0c5354b21939423a08ccdc91f25eef018908a8f1" hash = "9de3b93a1cb5ad30ab6ebdcf4508b0becb5ea8e62158d15aa59b0962e583b229"
[[files]] [[files]]
file = "config/ftbquests/quests/chapters/getting_started.snbt" file = "config/ftbquests/quests/chapters/getting_started.snbt"
@@ -70,7 +70,7 @@ hash = "408f1fc46e46edef88e1b1f86bd72789d7e9a7d1e1fb1e623d1856bb0051be96"
[[files]] [[files]]
file = "config/ftbquests/quests/chapters/highlands.snbt" file = "config/ftbquests/quests/chapters/highlands.snbt"
hash = "d98f934be41c10efe0031af1cb387e856600db161fe16d2860f3a7b21f4df75a" hash = "c33b16693e73a0ce3f9be5c8876439f9eebaa72e6d7a542a8c49c7a71f5bdc31"
[[files]] [[files]]
file = "config/ftbquests/quests/chapters/hms.snbt" file = "config/ftbquests/quests/chapters/hms.snbt"
@@ -78,43 +78,47 @@ hash = "a2843ac93232699b771ad0d6075089d843a875227e7b0be048c04101963f95c6"
[[files]] [[files]]
file = "config/ftbquests/quests/chapters/jungle.snbt" file = "config/ftbquests/quests/chapters/jungle.snbt"
hash = "77b87b15cf25f406e520c8f7f4e262ae7387ff096c16ea0fe476c4094f6ace2d" hash = "e733a02f3e6f6ee5b6e56863542679583ab9a5e01a810e9440019af56a084154"
[[files]] [[files]]
file = "config/ftbquests/quests/chapters/legends.snbt" file = "config/ftbquests/quests/chapters/legends.snbt"
hash = "d9b802768540907ff80f4e48fcfe0e7f1dd0486d4490bd902e81c714a226b51a" hash = "8e7f81e7d02142fc302faad662685e9172b7ced44380b3295d81219aa252c930"
[[files]] [[files]]
file = "config/ftbquests/quests/chapters/lush_caves.snbt" file = "config/ftbquests/quests/chapters/lush_caves.snbt"
hash = "6a5c517410bce3d986999bb308d918eff32bae092000ff1a2c6db125ba251eab" hash = "eb801c47af7637da99f338abc5543d0b7c8944019e0c05359c666ade943d31f7"
[[files]] [[files]]
file = "config/ftbquests/quests/chapters/machines.snbt" file = "config/ftbquests/quests/chapters/machines.snbt"
hash = "a9fa3e034e86942e6aba2fde08d09592c6c9a81b2740ffda64c99d209ffe8f01" hash = "6ab07b29984d679d7bc8bb031b5038ab38657e178dbca849c40f895386674eb6"
[[files]] [[files]]
file = "config/ftbquests/quests/chapters/mire.snbt" file = "config/ftbquests/quests/chapters/mire.snbt"
hash = "97415b060f9fe611d9a58015e16e926d7ef4f2aa80ef12f486d84ea9520e40db" hash = "53bc1af44a732c89d7a2c4a4150a3f40b2f7d465409e17e2b087b4d3a9112286"
[[files]]
file = "config/ftbquests/quests/chapters/mods.snbt"
hash = "79906e6352505f253911de14ff5ef454c125ad8f070d07a274dfb79e2440d62e"
[[files]] [[files]]
file = "config/ftbquests/quests/chapters/shallows.snbt" file = "config/ftbquests/quests/chapters/shallows.snbt"
hash = "ccb4c5c9bc33ea741aa820937fe6820bb05529109c90884765585b51e615e987" hash = "7a9dc03bf1943078c18edd38c956755a9720c5a5137a90930c53e49105996221"
[[files]] [[files]]
file = "config/ftbquests/quests/chapters/southwold.snbt" file = "config/ftbquests/quests/chapters/southwold.snbt"
hash = "a3e4f9446c94e415c5d9c02b5d2bd0d00bff42b6565b44d49cd26ad37edc2e37" hash = "256bacde0262f2e1593c68f2e7d942cbc01f86445c325453d49d1c41ff61011d"
[[files]] [[files]]
file = "config/ftbquests/quests/chapters/sunscorch.snbt" file = "config/ftbquests/quests/chapters/sunscorch.snbt"
hash = "59a029a71dc6aa522cdfe60edaee9454656b46d1db42c91c1e0b159bf903ed61" hash = "b6a1ea5e0aa6029db4b160525c8ce68db9b87840826b77cad6c8632ad8415218"
[[files]] [[files]]
file = "config/ftbquests/quests/chapters/the_end.snbt" file = "config/ftbquests/quests/chapters/the_end.snbt"
hash = "6bda6a06b81c15ed441fe0a02b024d70346a9c64cc92154dac74d299ca9fbb8c" hash = "23889cf099fb52af45c10ee18a3df7700d3609a6a02c0dd25d7071a72f315ed0"
[[files]] [[files]]
file = "config/ftbquests/quests/chapters/westmarch.snbt" file = "config/ftbquests/quests/chapters/westmarch.snbt"
hash = "7fb9777ca66f93688606fdc51aab7cc5e402078e6fce84b7de3e197bd8b8c23a" hash = "bb83c7873f108b0bcd7e60d60ea6ca23bcbb54269f6ae478e9865a19fe082abf"
[[files]] [[files]]
file = "config/ftbquests/quests/data.snbt" file = "config/ftbquests/quests/data.snbt"
@@ -122,7 +126,7 @@ hash = "35b6760d4c56b02f2ff77dd5ba2f0e634c7f68238ce2809cddb22d9c61c6f943"
[[files]] [[files]]
file = "config/ftbquests/quests/lang/en_us.snbt" file = "config/ftbquests/quests/lang/en_us.snbt"
hash = "aa487a7deeac4d0d693804c6efc5f0a09ea3dad0081c88cf932f142e9f1bf6c3" hash = "f8388078a56b502d5db0e7af08e4a21f7ea4165c9d6e14a78ceaa448b8858176"
[[files]] [[files]]
file = "config/lootr-common.toml" file = "config/lootr-common.toml"
@@ -166,7 +170,7 @@ hash = "e0a234797b1063dd91a6fec8ebdd3828b93dc39ee4c134d11175aa6d1f26fc20"
[[files]] [[files]]
file = "defaultconfigs/cobblehardcoremon/server.toml" file = "defaultconfigs/cobblehardcoremon/server.toml"
hash = "5e68c4bc93fcc06f85cabc6c587c1b70cb2a22da01ad9653d678ac9131c0003b" hash = "a7de5141e4418be46a19f4b3f430f0dc79096d3d395bbb4dcbef20df36956d4f"
[[files]] [[files]]
file = "kubejs/assets/cobblesurvival/textures/item/mire_waders.png" file = "kubejs/assets/cobblesurvival/textures/item/mire_waders.png"
+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 = "54a1e96b8b1da6cfc3ed545e05acd730dce5d34a3080f186ad1447c8708d5fe3" hash = "1ef71be8524f3c1ec790e878d3f77a7988490f42b5bf45cd6364ee2d0445d43a"
[versions] [versions]
minecraft = "1.21.1" minecraft = "1.21.1"
+3 -2
View File
@@ -1,6 +1,7 @@
{ {
"mod/gradle.properties": "981e881361121f4109d87b3292eadec054fd73945e24249a29134dcc174045c1", "mod/gradle.properties": "981e881361121f4109d87b3292eadec054fd73945e24249a29134dcc174045c1",
"mod/src/main/java/dev/cobblesurvival/mixin/HardcorePartyMixin.java": "7dc3158882fa6baf04409493505d5e91f56c6e112f69bd9f095772a72b31e6e4", "mod/src/main/java/dev/cobblesurvival/mixin/HardcoreBattlesMixin.java": "0d82820f331f6e8e97045287f27f2d2b1860139fabc5661831cb4e2ef126120f",
"mod/src/main/java/dev/cobblesurvival/mixin/HardcorePartyMixin.java": "d04c1ef392a98f903b981635fcd13e121b67cce4358a0e256769fbd1b7909e7a",
"mod/src/main/java/dev/cobblesurvival/mixin/RegeneratorBlockMixin.java": "84706a42b2a6d5359993831e17f886680decb76e027c451c64463d009e36acae", "mod/src/main/java/dev/cobblesurvival/mixin/RegeneratorBlockMixin.java": "84706a42b2a6d5359993831e17f886680decb76e027c451c64463d009e36acae",
"mod/src/main/kotlin/dev/cobblesurvival/jei/DropSources.kt": "9437c1dac38c1c236067d661379b02b04657cee231ccdf4035183c6639c2e0f9", "mod/src/main/kotlin/dev/cobblesurvival/jei/DropSources.kt": "9437c1dac38c1c236067d661379b02b04657cee231ccdf4035183c6639c2e0f9",
"mod/src/main/kotlin/dev/cobblesurvival/jei/DropSourcesJei.kt": "89e7e6dc3b8ef4aac3e095887c63ceb95f3214270e2d91e0322074c09f41ac55", "mod/src/main/kotlin/dev/cobblesurvival/jei/DropSourcesJei.kt": "89e7e6dc3b8ef4aac3e095887c63ceb95f3214270e2d91e0322074c09f41ac55",
@@ -57,7 +58,7 @@
"mod/src/main/resources/assets/cobblesurvival/textures/block/synthesis_core_side.png": "b7d289800824b16a0e1a961c042b40d688ae33d64bc5c7081d16d3d2d3a0825f", "mod/src/main/resources/assets/cobblesurvival/textures/block/synthesis_core_side.png": "b7d289800824b16a0e1a961c042b40d688ae33d64bc5c7081d16d3d2d3a0825f",
"mod/src/main/resources/assets/cobblesurvival/textures/block/synthesis_core_top.png": "fd1ee6c550f0a7fe7ea97022b32a046ad69563727dc05e31aa339c9b8647aa64", "mod/src/main/resources/assets/cobblesurvival/textures/block/synthesis_core_top.png": "fd1ee6c550f0a7fe7ea97022b32a046ad69563727dc05e31aa339c9b8647aa64",
"mod/src/main/resources/assets/cobblesurvival/textures/item/summon_sigil.png": "8b7e9bea51f529c250f03fcd8816aadf1e6b9cf4a53a439c16650b6767c71f56", "mod/src/main/resources/assets/cobblesurvival/textures/item/summon_sigil.png": "8b7e9bea51f529c250f03fcd8816aadf1e6b9cf4a53a439c16650b6767c71f56",
"mod/src/main/resources/cobblesurvival.mixins.json": "aae2a4db2673be681e3b8389682a89b79a60462a3e157ab11e1dd70b48e79f95", "mod/src/main/resources/cobblesurvival.mixins.json": "8a35ca950a03a393f7aa17cdba7352da14bc023ce16c3f0841efd6fb571db06c",
"pack/config/defaultoptions/extra/config/iris.properties": "3866233ba2035bd6ffe6e06cf74c7b1f16869184c274276ca0bd546f1e8bf003", "pack/config/defaultoptions/extra/config/iris.properties": "3866233ba2035bd6ffe6e06cf74c7b1f16869184c274276ca0bd546f1e8bf003",
"pack/config/defaultoptions/keybindings.txt": "515362c7a71b203b8ba3ea9d125c6b8cafc2abdb480df5936b9af6a3632d865b", "pack/config/defaultoptions/keybindings.txt": "515362c7a71b203b8ba3ea9d125c6b8cafc2abdb480df5936b9af6a3632d865b",
"pack/config/xaero/minimap/default_radar_categories_client.json": "e0a234797b1063dd91a6fec8ebdd3828b93dc39ee4c134d11175aa6d1f26fc20", "pack/config/xaero/minimap/default_radar_categories_client.json": "e0a234797b1063dd91a6fec8ebdd3828b93dc39ee4c134d11175aa6d1f26fc20",
-1
View File
@@ -45,7 +45,6 @@ BREWING = {
} }
# Audited items that may stay without a source, and why. # Audited items that may stay without a source, and why.
NO_SOURCE_OK = { NO_SOURCE_OK = {
"cold_sweat:chameleon_molt": "Cold Sweat's chameleon armour and Thermolith are not part of the pack's progression",
"minecraft:dragon_breath": "the End's dragon is the only source by design (the End is reachable)", "minecraft:dragon_breath": "the End's dragon is the only source by design (the End is reachable)",
"minecraft:tide_armor_trim_smithing_template": "cosmetic (an armour trim); elder guardians don't live on the island", "minecraft:tide_armor_trim_smithing_template": "cosmetic (an armour trim); elder guardians don't live on the island",
"minecraft:wither_skeleton_skull": "cosmetic here (the skull banner pattern); the Wither can't be built", "minecraft:wither_skeleton_skull": "cosmetic here (the skull banner pattern); the Wither can't be built",
+406 -16
View File
@@ -1,21 +1,411 @@
{ {
"_comment": "Item sources that Minecraft decides in code, so no data file shows them. Each entry: item, how (shown in the guide), needs (list of groups; each group is satisfied by any one of its keys: item:<id>, mob:<id>, block:<id>). Keep this list short and add only well-known mechanics; Phase 4 sources (ore veins, KubeJS recipes) go in an --extra file instead (see docs/field-guide.md).", "_comment": "Item sources that Minecraft decides in code, so no data file shows them. Each entry: item, how (shown in the guide), needs (list of groups; each group is satisfied by any one of its keys: item:<id>, mob:<id>, block:<id>). Keep this list short and add only well-known mechanics; Phase 4 sources (ore veins, KubeJS recipes) go in an --extra file instead (see docs/field-guide.md). 'pattern' instead of 'item' matches several items (fnmatch). Below the vanilla ones: what the pack's own rules give (Adrian, 2026-11-10: every item with a use is obtainable; tools/item_audit.py).",
"sources": [ "sources": [
{"item": "minecraft:emerald", "how": "Trade with villagers", "needs": [["mob:minecraft:villager"]]}, {
{"item": "minecraft:milk_bucket", "how": "Milk a cow or goat with a bucket", "needs": [["mob:minecraft:cow", "mob:minecraft:goat", "mob:minecraft:mooshroom"], ["item:minecraft:bucket"]]}, "item": "minecraft:emerald",
{"item": "minecraft:egg", "how": "Laid by chickens", "needs": [["mob:minecraft:chicken"]]}, "how": "Trade with villagers",
{"item": "minecraft:white_wool", "how": "Shear a sheep", "needs": [["mob:minecraft:sheep"], ["item:minecraft:shears"]]}, "needs": [
{"item": "minecraft:honeycomb", "how": "Shear a full bee nest", "needs": [["block:minecraft:bee_nest", "block:minecraft:beehive"], ["item:minecraft:shears"]]}, [
{"item": "minecraft:honey_bottle", "how": "Use a glass bottle on a full bee nest", "needs": [["block:minecraft:bee_nest", "block:minecraft:beehive"], ["item:minecraft:glass_bottle"]]}, "mob:minecraft:villager"
{"item": "minecraft:turtle_scute", "how": "Dropped when a baby turtle grows up", "needs": [["mob:minecraft:turtle"]]}, ]
{"item": "minecraft:water_bucket", "how": "Fill a bucket with water", "needs": [["item:minecraft:bucket"]]}, ]
{"item": "minecraft:lava_bucket", "how": "Fill a bucket with lava", "needs": [["item:minecraft:bucket"], ["block:minecraft:lava"]]}, },
{"item": "minecraft:obsidian", "how": "Pour water on a lava source", "needs": [["item:minecraft:water_bucket"], ["block:minecraft:lava"]]}, {
{"item": "minecraft:dragon_breath", "how": "Collect the Ender Dragon's breath with a glass bottle", "needs": [["mob:minecraft:ender_dragon"], ["item:minecraft:glass_bottle"]]}, "item": "minecraft:milk_bucket",
{"item": "minecraft:dragon_egg", "how": "Left by the first Ender Dragon", "needs": [["mob:minecraft:ender_dragon"]]}, "how": "Milk a cow or goat with a bucket",
{"item": "minecraft:pumpkin_seeds", "how": "Craft from a pumpkin", "needs": [["item:minecraft:pumpkin"]]}, "needs": [
{"item": "minecraft:mud", "how": "Use a water bottle on dirt", "needs": [["item:minecraft:glass_bottle"]]}, [
{"item": "minecraft:ominous_bottle", "how": "Dropped by raid captains", "needs": [["mob:minecraft:pillager"]]} "mob:minecraft:cow",
"mob:minecraft:goat",
"mob:minecraft:mooshroom"
],
[
"item:minecraft:bucket"
]
]
},
{
"item": "minecraft:egg",
"how": "Laid by chickens",
"needs": [
[
"mob:minecraft:chicken"
]
]
},
{
"item": "minecraft:white_wool",
"how": "Shear a sheep",
"needs": [
[
"mob:minecraft:sheep"
],
[
"item:minecraft:shears"
]
]
},
{
"item": "minecraft:honeycomb",
"how": "Shear a full bee nest",
"needs": [
[
"block:minecraft:bee_nest",
"block:minecraft:beehive"
],
[
"item:minecraft:shears"
]
]
},
{
"item": "minecraft:honey_bottle",
"how": "Use a glass bottle on a full bee nest",
"needs": [
[
"block:minecraft:bee_nest",
"block:minecraft:beehive"
],
[
"item:minecraft:glass_bottle"
]
]
},
{
"item": "minecraft:turtle_scute",
"how": "Dropped when a baby turtle grows up",
"needs": [
[
"mob:minecraft:turtle"
]
]
},
{
"item": "minecraft:water_bucket",
"how": "Fill a bucket with water",
"needs": [
[
"item:minecraft:bucket"
]
]
},
{
"item": "minecraft:lava_bucket",
"how": "Fill a bucket with lava",
"needs": [
[
"item:minecraft:bucket"
],
[
"block:minecraft:lava"
]
]
},
{
"item": "minecraft:obsidian",
"how": "Pour water on a lava source",
"needs": [
[
"item:minecraft:water_bucket"
],
[
"block:minecraft:lava"
]
]
},
{
"item": "minecraft:dragon_breath",
"how": "Collect the Ender Dragon's breath with a glass bottle",
"needs": [
[
"mob:minecraft:ender_dragon"
],
[
"item:minecraft:glass_bottle"
]
]
},
{
"item": "minecraft:dragon_egg",
"how": "Left by the first Ender Dragon",
"needs": [
[
"mob:minecraft:ender_dragon"
]
]
},
{
"item": "minecraft:pumpkin_seeds",
"how": "Craft from a pumpkin",
"needs": [
[
"item:minecraft:pumpkin"
]
]
},
{
"item": "minecraft:mud",
"how": "Use a water bottle on dirt",
"needs": [
[
"item:minecraft:glass_bottle"
]
]
},
{
"item": "minecraft:ominous_bottle",
"how": "Dropped by raid captains",
"needs": [
[
"mob:minecraft:pillager"
]
]
},
{
"pattern": "cobbreeding:*_egg",
"how": "Laid in a Pasture Block by two compatible Pokémon (Cobbreeding)",
"needs": [
[
"item:cobblemon:pasture"
]
]
},
{
"item": "cobblesurvival:mire_waders",
"how": "Dropped by the guardians of Westmarch and the Verdant Jungle",
"needs": []
},
{
"item": "cobblemon:ability_patch",
"how": "The Sacrifice Altar (Lv 90 or more) and the Rebirth Chamber",
"needs": []
},
{
"item": "cobblemon_hms:hm_case",
"how": "A Trainer Ditto's gift the first time you meet one",
"needs": []
},
{
"item": "regenerating_ore_veins:vein_locator",
"how": "Crafted from a compass and a copper ingot (Regenerating Ore Veins' config)",
"needs": [
[
"item:minecraft:compass"
],
[
"item:minecraft:copper_ingot"
]
]
},
{
"item": "cold_sweat:filled_waterskin",
"how": "Use an empty Waterskin on water",
"needs": [
[
"item:cold_sweat:waterskin"
]
]
},
{
"item": "cobblemon:dawn_stone_ore",
"how": "Mine its regenerating vein with Silk Touch",
"needs": []
},
{
"item": "cobblemon:deepslate_dawn_stone_ore",
"how": "Mine its regenerating vein with Silk Touch",
"needs": []
},
{
"item": "cobblemon:deepslate_dusk_stone_ore",
"how": "Mine its regenerating vein with Silk Touch",
"needs": []
},
{
"item": "cobblemon:deepslate_fire_stone_ore",
"how": "Mine its regenerating vein with Silk Touch",
"needs": []
},
{
"item": "cobblemon:deepslate_ice_stone_ore",
"how": "Mine its regenerating vein with Silk Touch",
"needs": []
},
{
"item": "cobblemon:deepslate_leaf_stone_ore",
"how": "Mine its regenerating vein with Silk Touch",
"needs": []
},
{
"item": "cobblemon:deepslate_moon_stone_ore",
"how": "Mine its regenerating vein with Silk Touch",
"needs": []
},
{
"item": "cobblemon:deepslate_shiny_stone_ore",
"how": "Mine its regenerating vein with Silk Touch",
"needs": []
},
{
"item": "cobblemon:deepslate_sun_stone_ore",
"how": "Mine its regenerating vein with Silk Touch",
"needs": []
},
{
"item": "cobblemon:deepslate_thunder_stone_ore",
"how": "Mine its regenerating vein with Silk Touch",
"needs": []
},
{
"item": "cobblemon:deepslate_water_stone_ore",
"how": "Mine its regenerating vein with Silk Touch",
"needs": []
},
{
"item": "cobblemon:dripstone_moon_stone_ore",
"how": "Mine its regenerating vein with Silk Touch",
"needs": []
},
{
"item": "cobblemon:fire_stone_ore",
"how": "Mine its regenerating vein with Silk Touch",
"needs": []
},
{
"item": "cobblemon:ice_stone_ore",
"how": "Mine its regenerating vein with Silk Touch",
"needs": []
},
{
"item": "cobblemon:leaf_stone_ore",
"how": "Mine its regenerating vein with Silk Touch",
"needs": []
},
{
"item": "cobblemon:moon_stone_ore",
"how": "Mine its regenerating vein with Silk Touch",
"needs": []
},
{
"item": "cobblemon:shiny_stone_ore",
"how": "Mine its regenerating vein with Silk Touch",
"needs": []
},
{
"item": "cobblemon:sun_stone_ore",
"how": "Mine its regenerating vein with Silk Touch",
"needs": []
},
{
"item": "cobblemon:thunder_stone_ore",
"how": "Mine its regenerating vein with Silk Touch",
"needs": []
},
{
"item": "cobblemon:water_stone_ore",
"how": "Mine its regenerating vein with Silk Touch",
"needs": []
},
{
"item": "minecraft:amethyst_block",
"how": "Mine its regenerating vein with Silk Touch",
"needs": []
},
{
"item": "minecraft:ancient_debris",
"how": "Mine its regenerating vein with Silk Touch",
"needs": []
},
{
"item": "minecraft:budding_amethyst",
"how": "Mine its regenerating vein with Silk Touch",
"needs": []
},
{
"item": "minecraft:coal_ore",
"how": "Mine its regenerating vein with Silk Touch",
"needs": []
},
{
"item": "minecraft:copper_ore",
"how": "Mine its regenerating vein with Silk Touch",
"needs": []
},
{
"item": "minecraft:deepslate_coal_ore",
"how": "Mine its regenerating vein with Silk Touch",
"needs": []
},
{
"item": "minecraft:deepslate_copper_ore",
"how": "Mine its regenerating vein with Silk Touch",
"needs": []
},
{
"item": "minecraft:deepslate_diamond_ore",
"how": "Mine its regenerating vein with Silk Touch",
"needs": []
},
{
"item": "minecraft:deepslate_emerald_ore",
"how": "Mine its regenerating vein with Silk Touch",
"needs": []
},
{
"item": "minecraft:deepslate_gold_ore",
"how": "Mine its regenerating vein with Silk Touch",
"needs": []
},
{
"item": "minecraft:deepslate_iron_ore",
"how": "Mine its regenerating vein with Silk Touch",
"needs": []
},
{
"item": "minecraft:deepslate_lapis_ore",
"how": "Mine its regenerating vein with Silk Touch",
"needs": []
},
{
"item": "minecraft:deepslate_redstone_ore",
"how": "Mine its regenerating vein with Silk Touch",
"needs": []
},
{
"item": "minecraft:emerald_ore",
"how": "Mine its regenerating vein with Silk Touch",
"needs": []
},
{
"item": "minecraft:gold_ore",
"how": "Mine its regenerating vein with Silk Touch",
"needs": []
},
{
"item": "minecraft:iron_ore",
"how": "Mine its regenerating vein with Silk Touch",
"needs": []
},
{
"item": "minecraft:lapis_ore",
"how": "Mine its regenerating vein with Silk Touch",
"needs": []
},
{
"item": "minecraft:nether_quartz_ore",
"how": "Mine its regenerating vein with Silk Touch",
"needs": []
},
{
"item": "minecraft:redstone_ore",
"how": "Mine its regenerating vein with Silk Touch",
"needs": []
},
{
"item": "minecraft:chorus_fruit",
"how": "Break chorus plants on the End's outer islands (vanilla End generation)",
"needs": []
}
], ],
"concrete_from_powder": true "concrete_from_powder": true
} }
+4 -1
View File
@@ -531,9 +531,12 @@ class Model:
def _manual(self): def _manual(self):
from pathlib import Path from pathlib import Path
import fnmatch
cfg = json.loads((Path(__file__).parent / "manual_sources.json").read_text()) cfg = json.loads((Path(__file__).parent / "manual_sources.json").read_text())
known = self.vanilla_items | set(self.stack.ids("models/item", root="assets"))
for s in cfg["sources"]: for s in cfg["sources"]:
self.add(f"item:{s['item']}", "manual", s["how"], needs=s.get("needs", [])) for item in sorted(fnmatch.filter(known, s["pattern"])) if "pattern" in s else [s["item"]]:
self.add(f"item:{item}", "manual", s["how"], needs=s.get("needs", []))
axes = [f"item:{i}" for i in self.itags.resolve("#minecraft:axes")] axes = [f"item:{i}" for i in self.itags.resolve("#minecraft:axes")]
for item in sorted(self.vanilla_items | {k for k in self.stack.ids("models/item", root="assets")}): for item in sorted(self.vanilla_items | {k for k in self.stack.ids("models/item", root="assets")}):
ns, path = split_id(item) ns, path = split_id(item)
+64
View File
@@ -0,0 +1,64 @@
#!/usr/bin/env python3
"""Every item in the pack that has a use can be had on the island (Adrian, 2026-11-10).
Reads the field guide (build/field-guide/fieldguide.json; run tools/fieldguide/build.py first), which works out what
the island can provide from the pack's data: worldgen, loot, recipes, Pokémon drops, and what Minecraft and the
pack's own rules give in code (tools/fieldguide/manual_sources.json). Every item still without a source must be listed
in NO_USE below, with the reason it needs none; anything else fails.
Usage: tools/item_audit.py
"""
import fnmatch
import json
import sys
from pathlib import Path
ROOT = Path(__file__).resolve().parent.parent
GUIDE = ROOT / "build/field-guide/fieldguide.json"
# Items that may stay without a source, and why (fnmatch patterns).
NO_USE = {
"cobblemon_hms:hm_*": "left over from Cobblemon HMs before 4.0: the items do nothing now (the HM Case has a source)",
"lootr:*": "Lootr's own containers: structures place them, nobody uses them as items",
"regenerating_ore_veins:regenerator_block": "the block a mined vein turns into; it can't be broken",
"cold_sweat:chameleon_spawn_egg": "a creative-mode spawn egg",
"minecraft:infested_*": "silverfish blocks; the island has no silverfish",
"minecraft:crimson_*": "Nether wood for decoration; the island has no Nether",
"cobblemon:*tumblestone_cluster": "tumblestone itself comes from the ruins; clusters are decoration",
"cobblemon:*_budding_*tumblestone": "tumblestone itself comes from the ruins; buds are decoration",
"cobblemon:damaged_monitor": "a decoration block in Cobblemon's ruins",
"cobblemon:gimmighoul_chest": "the chest Gimmighoul hides in",
"cobblemon:lectern": "Cobblemon's decorative lectern, with no recipe in Cobblemon",
"cobblemon:bugwort": "a decoration plant with no recipe, seasoning or other use in Cobblemon",
"cobblemon:poke_puff": "Cobblemon 1.8.4 has no way to make Poké Puffs yet",
"cobblemon:shalour_sable": "Cobblemon 1.8.4 has no way to make it yet",
"cobblemon:scroll_of_*": "they evolve Kubfu, which Cobblemon 1.8.4 doesn't have",
"cobblemon:saccharine_log_slathered": "only gives planks and charcoal, which other logs give too",
"cobblemon:nether_fire_stone_ore": "an ore the island's veins don't use; Fire Stones come from Sunscorch's veins",
"cobblemon:terracotta_sun_stone_ore": "an ore the island's veins don't use; Sun Stones come from the Highlands' veins",
"cobblemon:dusk_stone_ore": "an ore the island's veins don't use; Dusk Stones come from the Deep Dark's veins",
"cold_sweat:slush_bucket": "slush is a cold fuel for the Hearth and Icebox; ice and snow do the same",
}
def main():
if not GUIDE.exists():
sys.exit(f"{GUIDE} is missing: run tools/fieldguide/build.py first")
guide = json.loads(GUIDE.read_text())
entries = {**guide["vanilla"], **guide["items"]}
missing = sorted(k for k, v in entries.items() if v.get("status") != "available" and not v.get("technical"))
unexplained = [k for k in missing if not any(fnmatch.fnmatch(k, pattern) for pattern in NO_USE)]
stale = [p for p in NO_USE if not any(fnmatch.fnmatch(k, p) for k in missing)]
print(f"{len(entries)} items, {len(missing)} without a source on the island, {len(missing) - len(unexplained)} of them with no use")
for pattern in stale:
print(f" note: nothing matches NO_USE {pattern!r} any more; remove it")
if unexplained:
for k in unexplained:
uses = ", ".join(u.get("text", "") for u in entries[k].get("uses", [])[:3]) or "no recipe uses"
print(f" - {k}: {entries[k].get('reason', '')} (uses: {uses})")
sys.exit("ITEM AUDIT FAILED: give these a source, or list them in NO_USE with the reason they need none")
print("ITEM AUDIT PASSED")
if __name__ == "__main__":
main()
+8 -1
View File
@@ -194,11 +194,18 @@ def title_case(item):
def zone_fields(zone, chapter, book): def zone_fields(zone, chapter, book):
"""What the zone template fills in. A zone chapter says what is particular about it (Adrian, 2026-11-10: no
boilerplate): `about`, the `locals` named as examples (they must spawn there), and a `guardian_note`."""
g = zone["guardian_data"] g = zone["guardian_data"]
ores = zone["ore_items"] ores = zone["ore_items"]
if not chapter.get("about"):
sys.exit(f"zone chapter {chapter['id']} has no 'about'")
for name in re.split(r", | and ", chapter.get("locals", "")):
if name and f"cobblemon:{re.sub(r'[^a-z0-9]', '', name.lower())}" not in zone["species"]:
sys.exit(f"{chapter['id']}: {name} is named as a local but doesn't spawn in {zone['name']}")
return { return {
"zone": zone["name"], "zone_id": zone["id"], "low": zone["levels"][0], "high": zone["levels"][1], "zone": zone["name"], "zone_id": zone["id"], "low": zone["levels"][0], "high": zone["levels"][1],
"hazard_text": chapter.get("hazard_text", ""), "about": chapter["about"].strip(), "locals": chapter.get("locals", ""), "guardian_note": chapter.get("guardian_note", ""),
"guardian": g["pokemon"].split()[0].title() if g else "", "guardian": g["pokemon"].split()[0].title() if g else "",
"guardian_level": re.search(r"level=(\d+)", g["pokemon"])[1] if g else "", "guardian_level": re.search(r"level=(\d+)", g["pokemon"])[1] if g else "",
"drops": ", ".join(f"{d['count']} {title_case(d['item'])}" for d in g["drops"]) if g else "", "drops": ", ".join(f"{d['count']} {title_case(d['item'])}" for d in g["drops"]) if g else "",
+38
View File
@@ -14,6 +14,8 @@
the check, and so (except with --sample) do an ore tier without nodes, a the check, and so (except with --sample) do an ore tier without nodes, a
surface tier without underground veins, and a chunk that never got its surface tier without underground veins, and a chunk that never got its
veins and nodes. veins and nodes.
* Start island: Button Isle has enough apricorns and coal ore for Poké Balls
(four apricorns and coal or charcoal make one; Adrian, 2026-11-10).
* Biome set: every biome stored in any chunk section (surface and caves) * Biome set: every biome stored in any chunk section (surface and caves)
must be listed in world/biomes.json ("allowed" or "water"). must be listed in world/biomes.json ("allowed" or "water").
* End access: at least one stronghold must start inside the world border. * End access: at least one stronghold must start inside the world border.
@@ -42,6 +44,7 @@ import math
import os import os
import re import re
import sys import sys
from collections import defaultdict
from concurrent.futures import ProcessPoolExecutor from concurrent.futures import ProcessPoolExecutor
from pathlib import Path from pathlib import Path
@@ -331,6 +334,38 @@ def island_mask(data, cell=16, min_share=0.01):
return out return out
# Adrian, 2026-11-10: the start island alone makes Poké Balls (four apricorns and coal or charcoal, the pack's
# poke_ball_from_coal recipe), with some exploring. Coal grows back in its veins; apricorns grow back on their trees.
START_MINIMUM = {"apricorns": 100, "coal ore": 500}
def check_start_isle(world):
"""Apricorns and coal ore on Button Isle (the zone within world/zones.json's radius of 0,0), from its stored chunks."""
plan = json.loads((ROOT / "world/zones.json").read_text())
radius = next(z for z in plan["zones"] if z["id"] == "button_isle")["rule"]["within"]
found = defaultdict(int)
span = range(-((radius + 511) // 512), (radius + 511) // 512)
for rx in span:
for rz in span:
path = world / "region" / f"r.{rx}.{rz}.mca"
if not path.exists():
continue
for cx, cz, chunk in anvil.region_chunks(path):
x0, z0 = cx * 16, cz * 16
if math.hypot(x0 + 8, z0 + 8) > radius + 12:
continue
inside = np.hypot(np.arange(16)[None, :] + x0 + .5, np.arange(16)[:, None] + z0 + .5) <= radius
for section in chunk.get("sections", []):
palette, indices = anvil.section_blocks(section)
wanted = [i for i, name in enumerate(palette) if name.endswith("_apricorn") or name.endswith("coal_ore")]
cube = indices.reshape(16, 16, 16)
for i in wanted:
kind = "apricorns" if palette[i].endswith("_apricorn") else "coal ore"
found[kind] += int(((cube == i) & inside[None, :, :]).sum())
problems = [f"Button Isle has {found[k]} {k}, fewer than {n}" for k, n in START_MINIMUM.items() if found[k] < n]
return dict(found), problems
def check_border(data, level, margin): def check_border(data, level, margin):
zs, xs = np.nonzero(island_mask(data)) zs, xs = np.nonzero(island_mask(data))
ox, oz = data["origin"] ox, oz = data["origin"]
@@ -479,10 +514,12 @@ def main():
listed = set(biomes["allowed"]) | set(biomes["water"]) listed = set(biomes["allowed"]) | set(biomes["water"])
unlisted = {b: n for b, n in data["sections_per_biome"].items() if b not in listed} unlisted = {b: n for b, n in data["sections_per_biome"].items() if b not in listed}
vein_counts, vein_problems = check_veins(args.world, data["ore_at"], data["full_chunks"], args.sample) vein_counts, vein_problems = check_veins(args.world, data["ore_at"], data["full_chunks"], args.sample)
start_isle, start_problems = check_start_isle(args.world)
report = { report = {
"chunks_scanned": data["chunks"], "chunks_scanned": data["chunks"],
"ore_blocks": {k: v for k, v in data["ores"].items() if ORE.search(k) or k in VEIN_BLOCKS}, "ore_blocks": {k: v for k, v in data["ores"].items() if ORE.search(k) or k in VEIN_BLOCKS},
"vein_blocks_per_tier_and_zone": vein_counts, "vein_blocks_per_tier_and_zone": vein_counts,
"start_isle_ball_materials": start_isle,
"mob_source_blocks": {k: v for k, v in data["ores"].items() if MOB_BLOCK.search(k) or "shrieker" in k}, "mob_source_blocks": {k: v for k, v in data["ores"].items() if MOB_BLOCK.search(k) or "shrieker" in k},
"unlisted_biomes": unlisted, "unlisted_biomes": unlisted,
"gamerules_not_as_recipe": wrong_rules, "gamerules_not_as_recipe": wrong_rules,
@@ -502,6 +539,7 @@ def main():
failures = ([f"{n} {name}" for name, n in data["ores"].items() if MOB_BLOCK.search(name) or "shrieker" in name] failures = ([f"{n} {name}" for name, n in data["ores"].items() if MOB_BLOCK.search(name) or "shrieker" in name]
+ vein_problems + vein_problems
+ ([] if args.sample else start_problems)
+ border["problems"] + border["problems"]
+ [f"unlisted biome {b} in {n} chunk sections" for b, n in unlisted.items()] + [f"unlisted biome {b} in {n} chunk sections" for b, n in unlisted.items()]
+ [f"gamerule {r} is {v}, recipe says {recipe['gamerules'][r]}" for r, v in wrong_rules.items()] + [f"gamerule {r} is {v}, recipe says {recipe['gamerules'][r]}" for r, v in wrong_rules.items()]