Phase 5: Cobblebase jobs take back gated work, dig only zone ores

From Adrian's Mining test (2026-10-31):

- A gated job assigned to a pastured Pokemon that doesn't pass its gate
  is taken back at once (BaseManager assignment cleared, Cobblebase's
  assignment sync sent, owner told what the Pokemon needs), so it no
  longer sticks or shows under Buffs -> Active.
- Mining, Ore Finder and Evolution-item Finder only give the ores and
  evolution stones of the pasture's zone: new loot condition
  cobblesurvival:in_zone, the pack's versions of the 12 Cobblebase
  tables (tools/cobblebase_loot.py), Cobblebase's built-in copies
  removed at server start (ore/BaseLoot.kt). Mining adds quartz and the
  evolution stones, drops the type gems.
- Mining's loot reaching the chest needs an Item Gatherer in the same
  pasture (Cobblebase's design); documented, not changed.
- Self-tests gated_jobs_are_taken_back, base_jobs_dig_their_zones_ores;
  docs, balance table, licenses, Phase 5 checklist.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
claudeandClaude Opus 5.5 committed 2026-10-31 18:56:00 +01:00
1 parent 70cc2cad50
commit 11a583db01
27 files changed
+1458 -28

No files matched your search

@@ -0,0 +1,88 @@
{
"type": "minecraft:chest",
"pools": [
{
"rolls": 1,
"entries": [
{
"type": "minecraft:item",
"name": "cobblemon:fire_stone",
"weight": 10,
"conditions": [
{
"condition": "cobblesurvival:in_zone",
"zones": [
"sunscorch"
]
}
]
},
{
"type": "minecraft:item",
"name": "cobblemon:water_stone",
"weight": 10,
"conditions": [
{
"condition": "cobblesurvival:in_zone",
"zones": [
"mire"
]
}
]
},
{
"type": "minecraft:item",
"name": "cobblemon:thunder_stone",
"weight": 10,
"conditions": [
{
"condition": "cobblesurvival:in_zone",
"zones": [
"westmarch"
]
}
]
},
{
"type": "minecraft:item",
"name": "cobblemon:leaf_stone",
"weight": 10,
"conditions": [
{
"condition": "cobblesurvival:in_zone",
"zones": [
"jungle"
]
}
]
},
{
"type": "minecraft:item",
"name": "cobblemon:moon_stone",
"weight": 10,
"conditions": [
{
"condition": "cobblesurvival:in_zone",
"zones": [
"dripstone"
]
}
]
},
{
"type": "minecraft:item",
"name": "cobblemon:sun_stone",
"weight": 10,
"conditions": [
{
"condition": "cobblesurvival:in_zone",
"zones": [
"highlands"
]
}
]
}
]
}
]
}
@@ -0,0 +1,60 @@
{
"type": "minecraft:chest",
"pools": [
{
"rolls": 1,
"entries": [
{
"type": "minecraft:item",
"name": "cobblemon:metal_coat",
"weight": 6
},
{
"type": "minecraft:item",
"name": "cobblemon:kings_rock",
"weight": 6
},
{
"type": "minecraft:item",
"name": "cobblemon:dragon_scale",
"weight": 6
},
{
"type": "minecraft:item",
"name": "cobblemon:upgrade",
"weight": 5
},
{
"type": "minecraft:item",
"name": "cobblemon:dubious_disc",
"weight": 5
},
{
"type": "minecraft:item",
"name": "cobblemon:prism_scale",
"weight": 5
},
{
"type": "minecraft:item",
"name": "cobblemon:protector",
"weight": 5
},
{
"type": "minecraft:item",
"name": "cobblemon:reaper_cloth",
"weight": 5
},
{
"type": "minecraft:item",
"name": "cobblemon:deep_sea_tooth",
"weight": 4
},
{
"type": "minecraft:item",
"name": "cobblemon:deep_sea_scale",
"weight": 4
}
]
}
]
}
@@ -0,0 +1,42 @@
{
"type": "minecraft:chest",
"pools": [
{
"rolls": 1,
"entries": [
{
"type": "minecraft:item",
"name": "cobblemon:rare_candy",
"weight": 5,
"functions": [
{
"function": "set_count",
"count": 2
}
]
},
{
"type": "minecraft:item",
"name": "cobblemon:exp_candy_xl",
"weight": 5,
"functions": [
{
"function": "set_count",
"count": 3
}
]
},
{
"type": "minecraft:item",
"name": "cobblemon:ability_patch",
"weight": 3
},
{
"type": "minecraft:item",
"name": "cobblemon:ability_capsule",
"weight": 3
}
]
}
]
}
@@ -0,0 +1,67 @@
{
"type": "minecraft:chest",
"pools": [
{
"rolls": 1,
"entries": [
{
"type": "minecraft:item",
"name": "cobblemon:dusk_stone",
"weight": 10,
"conditions": [
{
"condition": "cobblesurvival:in_zone",
"zones": [
"deep_dark"
]
}
]
},
{
"type": "minecraft:item",
"name": "cobblemon:dawn_stone",
"weight": 10,
"conditions": [
{
"condition": "cobblesurvival:in_zone",
"zones": [
"frostpeak"
]
}
]
},
{
"type": "minecraft:item",
"name": "cobblemon:shiny_stone",
"weight": 10,
"conditions": [
{
"condition": "cobblesurvival:in_zone",
"zones": [
"lush_caves"
]
}
]
},
{
"type": "minecraft:item",
"name": "cobblemon:ice_stone",
"weight": 10,
"conditions": [
{
"condition": "cobblesurvival:in_zone",
"zones": [
"frostpeak"
]
}
]
},
{
"type": "minecraft:item",
"name": "cobblemon:link_cable",
"weight": 8
}
]
}
]
}
@@ -0,0 +1,76 @@
{
"type": "minecraft:chest",
"pools": [
{
"rolls": 1,
"entries": [
{
"type": "minecraft:item",
"name": "minecraft:raw_copper",
"weight": 10,
"functions": [
{
"function": "set_count",
"count": {
"min": 2,
"max": 4
}
}
],
"conditions": [
{
"condition": "cobblesurvival:in_zone",
"zones": [
"southwold"
]
}
]
},
{
"type": "minecraft:item",
"name": "minecraft:raw_iron",
"weight": 8,
"functions": [
{
"function": "set_count",
"count": {
"min": 1,
"max": 2
}
}
],
"conditions": [
{
"condition": "cobblesurvival:in_zone",
"zones": [
"westmarch"
]
}
]
},
{
"type": "minecraft:item",
"name": "minecraft:coal",
"weight": 10,
"functions": [
{
"function": "set_count",
"count": {
"min": 2,
"max": 4
}
}
],
"conditions": [
{
"condition": "cobblesurvival:in_zone",
"zones": [
"button_isle"
]
}
]
}
]
}
]
}
@@ -0,0 +1,98 @@
{
"type": "minecraft:chest",
"pools": [
{
"rolls": 1,
"entries": [
{
"type": "minecraft:item",
"name": "minecraft:raw_gold",
"weight": 10,
"functions": [
{
"function": "set_count",
"count": {
"min": 2,
"max": 4
}
}
],
"conditions": [
{
"condition": "cobblesurvival:in_zone",
"zones": [
"sunscorch"
]
}
]
},
{
"type": "minecraft:item",
"name": "minecraft:diamond",
"weight": 6,
"functions": [
{
"function": "set_count",
"count": {
"min": 1,
"max": 1
}
}
],
"conditions": [
{
"condition": "cobblesurvival:in_zone",
"zones": [
"deep_dark"
]
}
]
},
{
"type": "minecraft:item",
"name": "minecraft:emerald",
"weight": 7,
"functions": [
{
"function": "set_count",
"count": {
"min": 1,
"max": 2
}
}
],
"conditions": [
{
"condition": "cobblesurvival:in_zone",
"zones": [
"frostpeak"
]
}
]
},
{
"type": "minecraft:item",
"name": "minecraft:amethyst_shard",
"weight": 8,
"functions": [
{
"function": "set_count",
"count": {
"min": 2,
"max": 4
}
}
],
"conditions": [
{
"condition": "cobblesurvival:in_zone",
"zones": [
"dripstone"
]
}
]
}
]
}
]
}
@@ -0,0 +1,80 @@
{
"type": "minecraft:chest",
"pools": [
{
"rolls": 1,
"entries": [
{
"type": "minecraft:item",
"name": "minecraft:diamond",
"weight": 8,
"functions": [
{
"function": "set_count",
"count": {
"min": 1,
"max": 2
}
}
],
"conditions": [
{
"condition": "cobblesurvival:in_zone",
"zones": [
"deep_dark"
]
}
]
},
{
"type": "minecraft:item",
"name": "minecraft:ancient_debris",
"weight": 3,
"conditions": [
{
"condition": "cobblesurvival:in_zone",
"zones": [
"basalt"
]
}
]
},
{
"type": "minecraft:item",
"name": "minecraft:netherite_scrap",
"weight": 2,
"conditions": [
{
"condition": "cobblesurvival:in_zone",
"zones": [
"basalt"
]
}
]
},
{
"type": "minecraft:item",
"name": "minecraft:emerald",
"weight": 6,
"functions": [
{
"function": "set_count",
"count": {
"min": 2,
"max": 3
}
}
],
"conditions": [
{
"condition": "cobblesurvival:in_zone",
"zones": [
"frostpeak"
]
}
]
}
]
}
]
}
@@ -0,0 +1,111 @@
{
"type": "minecraft:chest",
"pools": [
{
"rolls": 1,
"entries": [
{
"type": "minecraft:item",
"name": "minecraft:raw_iron",
"weight": 10,
"functions": [
{
"function": "set_count",
"count": {
"min": 2,
"max": 4
}
}
],
"conditions": [
{
"condition": "cobblesurvival:in_zone",
"zones": [
"westmarch"
]
}
]
},
{
"type": "minecraft:item",
"name": "minecraft:raw_gold",
"weight": 8,
"functions": [
{
"function": "set_count",
"count": {
"min": 1,
"max": 2
}
}
],
"conditions": [
{
"condition": "cobblesurvival:in_zone",
"zones": [
"sunscorch"
]
}
]
},
{
"type": "minecraft:item",
"name": "minecraft:lapis_lazuli",
"weight": 7,
"functions": [
{
"function": "set_count",
"count": {
"min": 2,
"max": 3
}
}
],
"conditions": [
{
"condition": "cobblesurvival:in_zone",
"zones": [
"highlands"
]
}
]
},
{
"type": "minecraft:item",
"name": "minecraft:redstone",
"weight": 8,
"functions": [
{
"function": "set_count",
"count": {
"min": 2,
"max": 4
}
}
],
"conditions": [
{
"condition": "cobblesurvival:in_zone",
"zones": [
"jungle"
]
}
]
},
{
"type": "minecraft:item",
"name": "minecraft:quartz",
"weight": 8,
"conditions": [
{
"condition": "cobblesurvival:in_zone",
"zones": [
"basalt"
]
}
]
}
]
}
]
}
@@ -0,0 +1,69 @@
{
"type": "minecraft:chest",
"pools": [
{
"rolls": 1,
"entries": [
{
"type": "minecraft:item",
"name": "cobblemon:tumblestone",
"weight": 15
},
{
"type": "minecraft:item",
"name": "minecraft:raw_copper",
"weight": 12,
"conditions": [
{
"condition": "cobblesurvival:in_zone",
"zones": [
"southwold"
]
}
]
},
{
"type": "minecraft:item",
"name": "minecraft:raw_iron",
"weight": 10,
"conditions": [
{
"condition": "cobblesurvival:in_zone",
"zones": [
"westmarch"
]
}
]
},
{
"type": "minecraft:item",
"name": "minecraft:coal",
"weight": 12,
"conditions": [
{
"condition": "cobblesurvival:in_zone",
"zones": [
"button_isle"
]
}
]
},
{
"type": "minecraft:item",
"name": "minecraft:cobblestone",
"weight": 8
},
{
"type": "minecraft:item",
"name": "minecraft:gravel",
"weight": 5
},
{
"type": "minecraft:item",
"name": "minecraft:flint",
"weight": 5
}
]
}
]
}
@@ -0,0 +1,234 @@
{
"type": "minecraft:chest",
"pools": [
{
"rolls": 1,
"entries": [
{
"type": "minecraft:item",
"name": "minecraft:diamond",
"weight": 5,
"conditions": [
{
"condition": "cobblesurvival:in_zone",
"zones": [
"deep_dark"
]
}
]
},
{
"type": "minecraft:item",
"name": "minecraft:emerald",
"weight": 5,
"conditions": [
{
"condition": "cobblesurvival:in_zone",
"zones": [
"frostpeak"
]
}
]
},
{
"type": "minecraft:item",
"name": "minecraft:amethyst_shard",
"weight": 8,
"conditions": [
{
"condition": "cobblesurvival:in_zone",
"zones": [
"dripstone"
]
}
]
},
{
"type": "minecraft:item",
"name": "cobblemon:helix_fossil",
"weight": 3
},
{
"type": "minecraft:item",
"name": "cobblemon:dome_fossil",
"weight": 3
},
{
"type": "minecraft:item",
"name": "cobblemon:old_amber_fossil",
"weight": 3
},
{
"type": "minecraft:item",
"name": "cobblemon:root_fossil",
"weight": 2
},
{
"type": "minecraft:item",
"name": "cobblemon:claw_fossil",
"weight": 2
},
{
"type": "minecraft:item",
"name": "cobblemon:skull_fossil",
"weight": 2
},
{
"type": "minecraft:item",
"name": "cobblemon:armor_fossil",
"weight": 2
},
{
"type": "minecraft:item",
"name": "cobblemon:cover_fossil",
"weight": 2
},
{
"type": "minecraft:item",
"name": "cobblemon:plume_fossil",
"weight": 2
},
{
"type": "minecraft:item",
"name": "cobblemon:jaw_fossil",
"weight": 2
},
{
"type": "minecraft:item",
"name": "cobblemon:sail_fossil",
"weight": 2
},
{
"type": "minecraft:item",
"name": "cobblemon:dawn_stone",
"weight": 3,
"conditions": [
{
"condition": "cobblesurvival:in_zone",
"zones": [
"frostpeak"
]
}
]
},
{
"type": "minecraft:item",
"name": "cobblemon:dusk_stone",
"weight": 3,
"conditions": [
{
"condition": "cobblesurvival:in_zone",
"zones": [
"deep_dark"
]
}
]
},
{
"type": "minecraft:item",
"name": "cobblemon:fire_stone",
"weight": 3,
"conditions": [
{
"condition": "cobblesurvival:in_zone",
"zones": [
"sunscorch"
]
}
]
},
{
"type": "minecraft:item",
"name": "cobblemon:ice_stone",
"weight": 3,
"conditions": [
{
"condition": "cobblesurvival:in_zone",
"zones": [
"frostpeak"
]
}
]
},
{
"type": "minecraft:item",
"name": "cobblemon:leaf_stone",
"weight": 3,
"conditions": [
{
"condition": "cobblesurvival:in_zone",
"zones": [
"jungle"
]
}
]
},
{
"type": "minecraft:item",
"name": "cobblemon:moon_stone",
"weight": 3,
"conditions": [
{
"condition": "cobblesurvival:in_zone",
"zones": [
"dripstone"
]
}
]
},
{
"type": "minecraft:item",
"name": "cobblemon:shiny_stone",
"weight": 3,
"conditions": [
{
"condition": "cobblesurvival:in_zone",
"zones": [
"lush_caves"
]
}
]
},
{
"type": "minecraft:item",
"name": "cobblemon:sun_stone",
"weight": 3,
"conditions": [
{
"condition": "cobblesurvival:in_zone",
"zones": [
"highlands"
]
}
]
},
{
"type": "minecraft:item",
"name": "cobblemon:thunder_stone",
"weight": 3,
"conditions": [
{
"condition": "cobblesurvival:in_zone",
"zones": [
"westmarch"
]
}
]
},
{
"type": "minecraft:item",
"name": "cobblemon:water_stone",
"weight": 3,
"conditions": [
{
"condition": "cobblesurvival:in_zone",
"zones": [
"mire"
]
}
]
}
]
}
]
}
@@ -0,0 +1,49 @@
{
"type": "minecraft:chest",
"pools": [
{
"rolls": 1,
"entries": [
{
"type": "minecraft:item",
"name": "minecraft:diamond",
"weight": 5,
"conditions": [
{
"condition": "cobblesurvival:in_zone",
"zones": [
"deep_dark"
]
}
]
},
{
"type": "minecraft:item",
"name": "minecraft:ancient_debris",
"weight": 2,
"conditions": [
{
"condition": "cobblesurvival:in_zone",
"zones": [
"basalt"
]
}
]
},
{
"type": "minecraft:item",
"name": "minecraft:netherite_scrap",
"weight": 1,
"conditions": [
{
"condition": "cobblesurvival:in_zone",
"zones": [
"basalt"
]
}
]
}
]
}
]
}
@@ -0,0 +1,72 @@
{
"type": "minecraft:chest",
"pools": [
{
"rolls": 1,
"entries": [
{
"type": "minecraft:item",
"name": "cobblemon:black_tumblestone",
"weight": 10
},
{
"type": "minecraft:item",
"name": "cobblemon:sky_tumblestone",
"weight": 10
},
{
"type": "minecraft:item",
"name": "minecraft:raw_gold",
"weight": 8,
"conditions": [
{
"condition": "cobblesurvival:in_zone",
"zones": [
"sunscorch"
]
}
]
},
{
"type": "minecraft:item",
"name": "minecraft:lapis_lazuli",
"weight": 8,
"conditions": [
{
"condition": "cobblesurvival:in_zone",
"zones": [
"highlands"
]
}
]
},
{
"type": "minecraft:item",
"name": "minecraft:redstone",
"weight": 8,
"conditions": [
{
"condition": "cobblesurvival:in_zone",
"zones": [
"jungle"
]
}
]
},
{
"type": "minecraft:item",
"name": "minecraft:quartz",
"weight": 8,
"conditions": [
{
"condition": "cobblesurvival:in_zone",
"zones": [
"basalt"
]
}
]
}
]
}
]
}