feat(progress): track persistent creeper kills

This commit is contained in:
dmg
2026-08-08 14:07:35 -04:00
parent f9ad2d9461
commit 0bde7a6ae2
30 changed files with 1142 additions and 38 deletions
@@ -1,8 +1,8 @@
---
type: User Story
title: "US-001: Track creeper defeats"
description: Record persistent player progress from creeper kills attributable to the player.
status: backlog
description: Record persistent current-tier progress from creeper kills attributable to the player.
status: done
---
# US-001: Track creeper defeats
@@ -11,15 +11,19 @@ As a **player**, I want my qualifying creeper kills recorded so that my Creeper
## Acceptance criteria
- [ ] A creeper kill attributable to a player adds one kill to that player's lifetime progress.
- [ ] Direct melee kills and indirect kills attributable to the player, including projectiles and the player's tamed wolves, count.
- [ ] A single creeper death cannot award progress more than once.
- [ ] Progress is stored using the player's UUID rather than their mutable name.
- [ ] Progress survives logout, server restarts, and player-name changes.
- [ ] Progress updates are persisted without blocking the Minecraft server thread on slow storage work.
- [ ] Missing or invalid persisted data is handled safely and reported to server administrators.
- [x] A creeper kill attributable to a player adds one point to that player's current-tier progress.
- [x] Direct melee kills and indirect kills attributable to the player, including projectiles and the player's tamed wolves, count.
- [x] A single creeper death cannot award progress more than once.
- [x] Progress is stored using the player's UUID rather than their mutable name.
- [x] The player's current rank and current-tier progress are persisted separately.
- [x] Lifetime creeper-kill totals are not retained.
- [x] Rank VI does not accumulate further progress.
- [x] Progress survives logout, server restarts, and player-name changes.
- [x] Progress updates are persisted without blocking the Minecraft server thread on slow storage work.
- [x] Missing or invalid persisted data is handled safely and reported to server administrators.
## Related
- [Creeper Aura ranks](us-002-unlock-creeper-aura-ranks.md)
- [Plugin architecture](../architecture.md)
- [User-story catalog](index.md)
@@ -11,19 +11,20 @@ As a **player**, I want Creeper Aura to become stronger as I defeat creepers so
## Default progression
| State | Required lifetime kills | Damage to protected player | Creeper block damage |
| Current state | Kills needed to unlock next rank | Damage to protected player | Creeper block damage |
| --- | ---: | ---: | --- |
| Locked | 099 | 1× | Normal |
| Creeper Aura I | 100 | 3× | Prevented |
| Creeper Aura II | 200 | 2× | Prevented |
| Creeper Aura III | 300 | 1.5× | Prevented |
| Creeper Aura IV | 400 | 1× | Prevented |
| Creeper Aura V | 500 | 0.5× | Prevented |
| Creeper Aura VI | 600 | 0× | Prevented |
| Locked | 100 to unlock I | 1× | Normal |
| Creeper Aura I | 100 to unlock II | 3× | Prevented |
| Creeper Aura II | 100 to unlock III | 2× | Prevented |
| Creeper Aura III | 100 to unlock IV | 1.5× | Prevented |
| Creeper Aura IV | 100 to unlock V | 1× | Prevented |
| Creeper Aura V | 100 to unlock VI | 0.5× | Prevented |
| Creeper Aura VI | Maximum rank | 0× | Prevented |
## Acceptance criteria
- [ ] A player unlocks ranks according to the configured cumulative kill thresholds.
- [ ] A player unlocks the next rank after earning the configured number of kills within their current tier.
- [ ] Unlocking a rank resets current-tier progress to zero.
- [ ] A player below rank I receives normal creeper explosion behavior.
- [ ] An aura activates when an unlocked player would have been hit by the creeper explosion, even when armor or another modifier would reduce the eventual damage to zero.
- [ ] An activated aura prevents that creeper explosion from breaking or removing blocks for everyone affected by the explosion.
@@ -1,7 +1,7 @@
---
type: User Story
title: "US-003: Show progression and rank advancement"
description: Give players brief kill progress displays and prominent rank-up notifications.
description: Give players brief current-tier progress displays and prominent rank-up notifications.
status: backlog
---
@@ -12,15 +12,14 @@ As a **player**, I want visible progress and rank-up notifications so that I und
## Acceptance criteria
- [ ] After each qualifying creeper kill, a temporary boss bar shows the player's current state and progress toward the next rank.
- [ ] A locked player sees progress toward Creeper Aura I.
- [ ] A ranked player sees their current Roman-numeral rank, current kill total, and the next threshold.
- [ ] A locked player sees current-tier progress toward Creeper Aura I.
- [ ] A ranked player sees their current Roman-numeral rank, current-tier progress, and the next rank requirement.
- [ ] The display duration is configurable and defaults to a short period measured in seconds.
- [ ] The boss bar is hidden automatically when its display period expires.
- [ ] A rank VI player no longer sees a progress boss bar.
- [ ] Each newly attained rank displays a full-screen title naming the rank.
- [ ] Joining the server does not replay a previously acknowledged rank-up title.
- [ ] Administrative progress changes update the display state of an online affected player.
- [ ] When one progress event satisfies multiple ranks, the resulting rank and notification behavior is deterministic and tested.
- [ ] Administrative changes update an online player's boss bar if it is currently visible.
## Related
@@ -1,7 +1,7 @@
---
type: User Story
title: "US-004: Check personal progress"
description: Let players request their current Creeper Aura status through a command.
description: Let players request their current Creeper Aura rank and tier progress through a command.
status: backlog
---
@@ -11,8 +11,8 @@ As a **player**, I want a command that reports my Creeper Aura progress so that
## Acceptance criteria
- [ ] `/creeperaura progress` reports the player's lifetime creeper kills and current locked or ranked state.
- [ ] Before rank VI, the response reports the next rank threshold and the number of additional kills needed.
- [ ] `/creeperaura progress` reports the player's current locked or ranked state and current-tier progress.
- [ ] Before rank VI, the response reports the next rank requirement and the number of additional kills needed.
- [ ] At rank VI, the response clearly reports that progression is complete.
- [ ] The self-service command is available to ordinary players without administrative permission.
- [ ] Console use, invalid arguments, and unavailable player data produce clear responses.
@@ -1,7 +1,7 @@
---
type: User Story
title: "US-005: Administer player progression"
description: Let authorized administrators inspect and modify online or offline player progression.
description: Let authorized administrators inspect and modify online or offline player rank and tier progress.
status: backlog
---
@@ -11,13 +11,15 @@ As a **server administrator**, I want to inspect and modify player progress so t
## Acceptance criteria
- [ ] `/creeperaura progress <player>` reports another player's kills, rank, next threshold, and remaining kills.
- [ ] `/creeperaura set <player> <kills>` sets a non-negative lifetime kill total and reconciles the player's rank to that explicit administrative value.
- [ ] `/creeperaura add <player> <kills>` adjusts a player's kill total without allowing a negative result.
- [ ] `/creeperaura progress <player>` reports another player's rank, current-tier progress, next requirement, and remaining kills.
- [ ] `/creeperaura set <player> <progress>` sets a non-negative current-tier progress value without implicitly changing rank.
- [ ] `/creeperaura add <player> <progress>` adjusts current-tier progress without allowing a negative result.
- [ ] `/creeperaura rank <player> <locked|I|II|III|IV|V|VI>` explicitly changes rank and resets current-tier progress to zero.
- [ ] Rank VI never retains current-tier progress.
- [ ] Inspection and modification work for known offline players as well as online players.
- [ ] Players are resolved to stored UUIDs so name changes do not create duplicate progression records.
- [ ] Administrative changes are persisted immediately.
- [ ] An online affected player's boss bar and rank state are updated after a change.
- [ ] An online affected player's feedback and aura state are updated after a change.
- [ ] Administrative commands require distinct, documented permissions suitable for inspection and modification.
- [ ] Unauthorized use does not disclose another player's progression.
- [ ] Invalid player names, ambiguous identities, invalid numbers, and storage failures produce clear responses without partial changes.
@@ -1,7 +1,7 @@
---
type: User Story
title: "US-006: Configure aura progression"
description: Let administrators safely configure and persist aura thresholds, multipliers, and feedback.
description: Let administrators safely configure and persist per-rank requirements, multipliers, and feedback.
status: backlog
---
@@ -11,17 +11,17 @@ As a **server administrator**, I want to configure progression and aura behavior
## Acceptance criteria
- [ ] Configuration provides documented defaults for all six cumulative kill thresholds and damage multipliers.
- [ ] Rank thresholds are non-negative and strictly increasing.
- [ ] Configuration provides documented defaults for the six per-rank kill requirements and six unlocked-rank damage multipliers.
- [ ] Rank requirements are positive integers.
- [ ] Damage multipliers are finite and non-negative.
- [ ] Progress boss-bar duration and player-facing rank messages are configurable.
- [ ] `/creeperaura threshold <rank> <kills>` validates, applies, and persists a threshold change.
- [ ] `/creeperaura threshold <rank> <points>` validates, applies, and persists the points required to unlock that rank.
- [ ] `/creeperaura reload` safely loads externally edited configuration without requiring a server restart.
- [ ] Threshold-management and reload commands require documented administrative permissions.
- [ ] Invalid configuration is rejected with actionable diagnostics while the last valid configuration remains active.
- [ ] Changing thresholds never automatically removes an already unlocked rank or grants a new rank immediately.
- [ ] After a threshold change, the player's next qualifying kill evaluates newly satisfied progression and can grant the next eligible rank immediately.
- [ ] Existing progress within the player's retained rank is displayed against the updated next threshold.
- [ ] Changing requirements never automatically removes an unlocked rank, grants a new rank, or discards current-tier progress.
- [ ] After a requirement change, the player's next qualifying kill can grant at most the next rank when its requirement is satisfied.
- [ ] Rank advancement resets current-tier progress to zero rather than carrying excess progress forward.
- [ ] Configuration-command changes survive plugin and server restarts.
## Related