feat(tamer): release mobs after class loss
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-21 — Former Tamer automatic release completed
|
||||
|
||||
- Completed US-004 and US-007 so every captured mob is released automatically after its holder loses the Tamer class, regardless of the class-removal path.
|
||||
- Online former Tamers release at a validated safe location; offline, dead, unsafe, malformed, or otherwise unspawnable custody remains durable and retries periodically after login or movement.
|
||||
- Custody records and captured-mob items are removed only for successful spawns, while ordinary inventory remains untouched.
|
||||
- Verified former-Tamer filtering, offline deferral, partial success, custody preservation, compiler warnings, tests, and packaging with `./gradlew clean check jar`.
|
||||
|
||||
## 2026-08-21 — Former Tamer automatic release started
|
||||
|
||||
- US-004 and US-007 begin a test-first implementation that automatically releases captured mobs when a player loses the Tamer class.
|
||||
- Release will preserve ordinary inventory, remove custody only after successful spawning, and defer safely for offline players or unsafe locations before retrying.
|
||||
|
||||
## 2026-08-21 — Bound role control items completed
|
||||
|
||||
- Completed US-017 and the reopened US-015 and US-016 criteria with configurable owner-bound Tyrant and Vigilante control items that open their respective panels.
|
||||
|
||||
@@ -22,6 +22,7 @@ As the **Tyrant**, I want to assign unlocked specialist classes so that I can bu
|
||||
- [x] The Tyrant can assign and reassign purchased classes through the Tyrant control panel.
|
||||
- [x] The control panel's player selector communicates eligibility and identifies the current class holder before confirmation.
|
||||
- [x] Control-panel and command-based assignments enforce identical rules.
|
||||
- [x] Removing or reassigning the Tamer class automatically releases the former holder's captured mobs while leaving ordinary inventory untouched.
|
||||
|
||||
## Related
|
||||
|
||||
|
||||
@@ -21,6 +21,17 @@ As the **Tamer**, I want to capture a mob and release it elsewhere so that I can
|
||||
- [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.
|
||||
- [x] When a player loses the Tamer class, every captured mob in their custody is automatically released at the former Tamer's location.
|
||||
- [x] Ordinary inventory items are not dropped or changed during automatic release.
|
||||
- [x] Each captured-mob item and custody record is removed only after its mob spawns successfully.
|
||||
- [x] Multiple captured mobs are released without duplicating entities or custody records.
|
||||
- [x] If the former Tamer is offline or no safe release location is available, release is deferred without losing the captured mob.
|
||||
- [x] A deferred release is retried when the former Tamer next logs in or reaches a safe location.
|
||||
- [x] Tyrant death, class reassignment, opt-out, administration, and other Tamer-removal paths use the same release behavior.
|
||||
|
||||
## Validation
|
||||
|
||||
Automated tests verify that only former Tamers are processed, offline custody remains deferred, successful releases remove only their corresponding custody records, and failed releases remain available for retry. The complete `./gradlew clean check jar` lifecycle passes.
|
||||
|
||||
## Related
|
||||
|
||||
|
||||
Reference in New Issue
Block a user