feat(tamer): capture and relocate mobs
This commit is contained in:
@@ -6,6 +6,18 @@ description: Chronological record of material decisions affecting the Spigot Tyr
|
||||
|
||||
# Spigot Tyrant Design Log
|
||||
|
||||
## 2026-08-14 — Tamer completed
|
||||
|
||||
- Completed US-007 with the no-cooldown owner-bound Tamer's Lead, server-generated entity snapshots, durable capture IDs, and one bound Captured Mob item per entity.
|
||||
- Capture checks inventory capacity before atomically storing state and removing the entity; placement consumes state and item only after safe validated spawning.
|
||||
- Dropping or dying with a captured mob spawns it immediately, while container and dispenser transfer paths are blocked and invalid placement retains custody.
|
||||
- Ender Dragons are always forbidden; configured bosses, named mobs, and tamed or owned mobs are denied, and snapshot type is validated before creation.
|
||||
- Verified snapshot custody state, exact release, Ender Dragon rejection, YAML persistence, configuration, and the full Gradle build.
|
||||
|
||||
## 2026-08-14 — Tamer implementation started
|
||||
|
||||
- US-007 begins with test-first snapshot custody, no-cooldown capture items, safe placement/drop/death spawning, and duplication-resistant state transitions.
|
||||
|
||||
## 2026-08-14 — Tyrant abilities completed
|
||||
|
||||
- Completed US-009 with configurable permanent Strength and Resistance purchases continuously restored for the active Tyrant throughout the running reign.
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
type: User Story
|
||||
title: "US-007: Capture and place mobs as a Tamer"
|
||||
description: Let the Tamer move supported mobs without losing or duplicating them.
|
||||
status: backlog
|
||||
status: done
|
||||
---
|
||||
|
||||
# US-007: Capture and place mobs as a Tamer
|
||||
@@ -11,16 +11,16 @@ As the **Tamer**, I want to capture a mob and release it elsewhere so that I can
|
||||
|
||||
## Acceptance criteria
|
||||
|
||||
- [ ] The Tamer can use a named fishing rod on a supported targeted mob to capture it with no cooldown.
|
||||
- [ ] A successful capture atomically removes the original mob and creates one bound captured-mob item.
|
||||
- [ ] If inventory space is unavailable, capture fails, the mob remains in place, and the Tamer is told how to make room and retry.
|
||||
- [ ] Using the captured-mob item places the stored mob at a safe valid location and consumes the item only after a successful spawn.
|
||||
- [ ] Dropping a captured-mob item safely spawns its mob instead of deleting it.
|
||||
- [ ] Every captured mob carried by a player spawns safely when that player dies.
|
||||
- [ ] Ender Dragons, boss entities, named mobs, and mobs tamed or owned by another player are denied by default.
|
||||
- [ ] Capture restrictions are configurable without permitting Ender Dragons.
|
||||
- [ ] Invalid placement, full inventory, death, logout, restart, plugin disable, containers, and concurrent interaction cannot lose or duplicate a mob.
|
||||
- [ ] Stored mob data is validated defensively before spawning and cannot execute untrusted serialized behavior.
|
||||
- [x] The Tamer can use a named fishing rod on a supported targeted mob to capture it with no cooldown.
|
||||
- [x] A successful capture atomically removes the original mob and creates one bound captured-mob item.
|
||||
- [x] If inventory space is unavailable, capture fails, the mob remains in place, and the Tamer is told how to make room and retry.
|
||||
- [x] Using the captured-mob item places the stored mob at a safe valid location and consumes the item only after a successful spawn.
|
||||
- [x] Dropping a captured-mob item safely spawns its mob instead of deleting it.
|
||||
- [x] Every captured mob carried by a player spawns safely when that player dies.
|
||||
- [x] Ender Dragons, boss entities, named mobs, and mobs tamed or owned by another player are denied by default.
|
||||
- [x] Capture restrictions are configurable without permitting Ender Dragons.
|
||||
- [x] Invalid placement, full inventory, death, logout, restart, plugin disable, containers, and concurrent interaction cannot lose or duplicate a mob.
|
||||
- [x] Stored mob data is validated defensively before spawning and cannot execute untrusted serialized behavior.
|
||||
|
||||
## Related
|
||||
|
||||
|
||||
Reference in New Issue
Block a user