Phase 3: Alpha guardians, one per zone, back 5 hours after a defeat
CI / build-and-smoke-test (push) Failing after 7m6s
CI / build-and-smoke-test (push) Failing after 7m6s
- Companion mod (zone/Guardians.kt): each zone's guardian stands at the zone's sample point, appears when a player is within 96 blocks, stays within 24 blocks, is uncatchable and half again as big. Beating it in a battle gives every player in the battle its drops; it returns after 5 hours of game time (Adrian: fixed spots, 5 hours). State lives in the world save; /cobblesurvival guardians lists it. - tools/zone_spawns.py writes data/cobblesurvival/guardians/<zone>.json: the strongest walking (or swimming) Pokemon of the zone at band top + 5, with the drops from world/zones.json. Boss drops follow Adrian's rule: Icy Rocks before Sunscorch, Heat Rocks before Frostpeak. - Goat Fur and Hoglin Hide recipes make 8 per rock, so one guardian's 3 rocks pay for one full insulating set. - Self-test guardian_appears_and_returns; hazard tests cleaned up; the zone generator reads Cobblemon's own entries from the field guide's hidden_spawns. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
398301f0be
commit
73fe71918f
25 files changed
+607
-23
No files matched your search
@@ -7,6 +7,7 @@ import dev.cobblesurvival.dev.BiomePreview
|
||||
import dev.cobblesurvival.permadeath.Permadeath
|
||||
import dev.cobblesurvival.selftest.SelfTest
|
||||
import dev.cobblesurvival.world.OnlyPokemon
|
||||
import dev.cobblesurvival.zone.Guardians
|
||||
import dev.cobblesurvival.zone.ZoneCondition
|
||||
import dev.cobblesurvival.zone.Zones
|
||||
import net.minecraft.commands.Commands
|
||||
@@ -55,6 +56,7 @@ class CobbleSurvival {
|
||||
Permadeath.register()
|
||||
ZoneCondition.register()
|
||||
NeoForge.EVENT_BUS.addListener(Zones::onAddReloadListeners)
|
||||
Guardians.register()
|
||||
SelfTest.register()
|
||||
}
|
||||
|
||||
@@ -93,6 +95,11 @@ class CobbleSurvival {
|
||||
source.sendSuccess({ Component.literal(text) }, false)
|
||||
1
|
||||
})
|
||||
.then(Commands.literal("guardians").executes { context ->
|
||||
val lines = Guardians.status(context.source.server.overworld())
|
||||
context.source.sendSuccess({ Component.literal(lines.joinToString("\n").ifEmpty { "no guardians loaded" }) }, false)
|
||||
1
|
||||
})
|
||||
if (SelfTest.enabled) root.then(SelfTest.command())
|
||||
event.dispatcher.register(root)
|
||||
}
|
||||
|
||||
Reference in new issue
Block a user