feat(progress): track persistent creeper kills
This commit is contained in:
@@ -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 | 0–99 | 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
|
||||
|
||||
Reference in New Issue
Block a user