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:
1 parent
6ace26e012
commit
d29e177f9d
65 files changed
+1920
-364
No files matched your search
@@ -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": [
|
||||
{"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: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"]]}
|
||||
{
|
||||
"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: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
|
||||
}
|
||||
@@ -531,9 +531,12 @@ class Model:
|
||||
|
||||
def _manual(self):
|
||||
from pathlib import Path
|
||||
import fnmatch
|
||||
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"]:
|
||||
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")]
|
||||
for item in sorted(self.vanilla_items | {k for k in self.stack.ids("models/item", root="assets")}):
|
||||
ns, path = split_id(item)
|
||||
|
||||
Reference in new issue
Block a user