feat(access): manage spawn access grants
Release / release (push) Failing after 11s
CI / build (push) Successful in 2m9s

This commit is contained in:
dmg
2026-08-08 13:21:43 -04:00
parent 18dfa058e5
commit d9051e1661
13 changed files with 435 additions and 18 deletions
@@ -2,7 +2,7 @@
type: User Story
title: "US-004: Grant and remove spawn access"
description: Let administrators grant custom spawn cooldowns, inspect access, and completely reset a player's access.
status: backlog
status: done
---
# US-004: Grant and remove spawn access
@@ -11,17 +11,17 @@ As a **server administrator**, I want to grant, inspect, and remove spawn access
## Acceptance criteria
- [ ] `/spawnadmin grant <player> <duration>` grants immediate `/spawn` access with the supplied cooldown.
- [ ] Friendly, case-insensitive duration units are accepted, including values such as `30m`, `2h`, and `1d`.
- [ ] Zero, negative, malformed, or overflowing grant durations are rejected with an explanatory message.
- [ ] A custom administrative grant overrides the player's boss-based cooldown tier while the grant exists.
- [ ] Killing qualifying enemies does not replace an active administrative grant's custom cooldown.
- [ ] `/spawnadmin remove <player>` removes any administrative grant, recorded enemy progress, and active cooldown from the player.
- [ ] After removal, the player begins with no access and can earn it again by defeating a qualifying enemy.
- [ ] `/spawnadmin access [page]` lists all players who currently have natural or granted access, including offline players.
- [ ] Each access-list entry identifies the player, access source, applicable cooldown, progression tier when relevant, and current remaining cooldown.
- [ ] Administrative player arguments support online players and previously known offline players when they can be resolved safely.
- [ ] Player state is stored by UUID while retaining the latest known player name for display and lookup.
- [x] `/spawnadmin grant <player> <duration>` grants immediate `/spawn` access with the supplied cooldown.
- [x] Friendly, case-insensitive duration units are accepted, including values such as `30m`, `2h`, and `1d`.
- [x] Zero, negative, malformed, or overflowing grant durations are rejected with an explanatory message.
- [x] A custom administrative grant overrides the player's boss-based cooldown tier while the grant exists.
- [x] Killing qualifying enemies does not replace an active administrative grant's custom cooldown.
- [x] `/spawnadmin remove <player>` removes any administrative grant, recorded enemy progress, and active cooldown from the player.
- [x] After removal, the player begins with no access and can earn it again by defeating a qualifying enemy.
- [x] `/spawnadmin access [page]` lists all players who currently have natural or granted access, including offline players.
- [x] Each access-list entry identifies the player, access source, applicable cooldown, progression tier when relevant, and current remaining cooldown.
- [x] Administrative player arguments support online players and previously known offline players when they can be resolved safely.
- [x] Player state is stored by UUID while retaining the latest known player name for display and lookup.
## Related