Added todo file (roadmap)

This commit is contained in:
akastijn 2026-05-23 23:13:53 +02:00
parent 5ac98467f0
commit 51ae3bbece

157
TODO.md Normal file
View File

@ -0,0 +1,157 @@
# 🎮 HungerGames Plugin — Development Checklist
A Minecraft survival/PvP plugin with configurable loot, shrinking world border, stats tracking, and structured round management.
---
## 🗂️ Table of Contents
- [Core Round Flow](#-core-round-flow)
- [Player Spawning](#-player-spawning)
- [Chest System](#-chest-system)
- [World Border](#-world-border)
- [Combat & Gameplay](#-combat--gameplay)
- [End Game](#-end-game)
- [Commands](#-commands)
- [Stats System](#-stats-system)
- [Configuration](#-configuration)
---
## 🔄 Core Round Flow
- [ ] Implement round state machine (`LOBBY` → `COUNTDOWN``ACTIVE``ENDGAME``FINISHED`)
- [ ] Configurable countdown duration (default: 10 seconds)
- [ ] Broadcast countdown in chat each second
- [ ] Freeze all players during countdown (prevent movement/interaction)
- [ ] Unfreeze players and start round on countdown end
- [ ] Announce round start in chat
- [ ] Track round number and persist across restarts
---
## 🧍 Player Spawning
- [ ] Spawn players in a configurable radius around a center point
- [ ] Ensure each player spawns on top of a solid block
- [ ] Freeze players in place until round starts (prevent movement, block breaking, PvP)
- [ ] Teleport dead players to a designated "spectator room" (configurable location)
- [ ] Prevent dead/spectating players from interacting with the game world
---
## 📦 Chest System
- [ ] Define two chest tiers: **Center** and **Normal**
- [ ] Each tier has its own loot table configuration
- [ ] Items grouped by **rarity** (e.g. common, uncommon, rare, legendary)
- [ ] Configurable number of items per rarity group in each chest tier
- [ ] Configurable max stack size / quantity per item type
- [ ] Randomly select items from rarity groups when populating chests
- [ ] Chests can only be **opened once per game** (track opened chests per round)
- [ ] Chests automatically refill/reset between rounds
- [ ] Better loot scaling in later game stages (e.g. after border shrink events, or after X players remain)
- [ ] Optionally mark opened chests visually (particle effect, different block state, etc.)
---
## 🌐 World Border
- [ ] Set initial world border size at round start (configurable)
- [ ] Configure a schedule of shrink events (size → duration pairs)
- [ ] Announce each upcoming shrink in chat: `"Border shrinking to {size} over {duration}s"`
- [ ] Show shrink progress on a **boss bar** (label + progress percentage)
- [ ] Remove/reset boss bar when shrink completes
- [ ] Final stage: when 4 players remain, teleport them to a **preset arena position**
- [ ] Lock border to a small configured size during final 4 stage so players cannot escape
---
## ⚔️ Combat & Gameplay
- [ ] Disable hunger loss and saturation drain during rounds
- [ ] Grant **Speed II** to all players at round start (configurable duration, default: 60s)
- [ ] Track damage dealt per player per round
- [ ] Broadcast **death messages** in chat: `"{killer} killed {victim}"`
- [ ] Handle non-PvP deaths gracefully in death messages (fall, void, etc.)
- [ ] Award kill credit correctly for kills via fire, poison, knockback, etc.
---
## 🏁 End Game
- [ ] Detect when only 1 player remains alive
- [ ] Broadcast winner message in chat: `"{player} wins the round!"`
- [ ] Persist winner data (store per-round winner in stats)
- [ ] Show **locator bar** (action bar or boss bar) for all remaining alive players during endgame stages
- [ ] Locator bar only displays players still in the game (not spectators)
- [ ] End-game locator updates in real time as players die
---
## 🧭 Commands
### `/hg stuck`
- [ ] Teleport player to the nearest safe grass block
- [ ] Require minimum height threshold to prevent abuse (configurable)
- [ ] Launch fireworks at the destination on use
- [ ] Configure firework count/type
- [ ] Optional cooldown to prevent spam
### `/hg stats [player]`
- [ ] Show overall stats for the specified player (or self if no argument)
- [ ] Stats viewable by anyone for anyone
### `/hg round start` / `/hg round stop` / `/hg reload`
- [ ] Admin commands to manually control round state
- [ ] Reload config without restart
---
## 📊 Stats System
### Per-Round Stats (stored each round)
- [ ] Kills
- [ ] Deaths
- [ ] Damage dealt
- [ ] Damage taken
- [ ] Placement (survival order)
- [ ] Whether the player won
### Overall / Lifetime Stats (aggregated)
- [ ] Total kills
- [ ] Total deaths
- [ ] Total damage dealt
- [ ] Total damage taken
- [ ] Total wins
- [ ] Total rounds played
- [ ] K/D ratio (computed)
### Storage
- [ ] Stats persist across server restarts (flat-file per round)
- [ ] Per-round history accessible
---
## ⚙️ Configuration
All values in `config.yml` unless noted.
- [ ] `countdown-duration` (seconds, default: 10)
- [ ] `speed-boost-duration` (seconds, default: 60)
- [ ] `spawn-radius` (blocks from center)
- [ ] `spectator-room-location` (world, x, y, z, yaw, pitch)
- [ ] `stuck-min-height` (minimum Y for `/stuck` teleport)
- [ ] `stuck-firework-count`
- [ ] `world-border.initial-size`
- [ ] `world-border.shrink-schedule` (list of `{size, duration}` entries)
- [ ] `world-border.final-four-location` (teleport coords for top 4)
- [ ] `world-border.final-four-border-size`
- [ ] `chests.center.items-per-rarity` (map of rarity → count)
- [ ] `chests.normal.items-per-rarity`
- [ ] `chests.loot-tables` (grouped by rarity, list of item entries with optional quantity ranges)
- [ ] `chests.late-game-loot-bonus` (threshold player count → loot tier multiplier)
- [ ] `stats.storage-type` (`yaml` / `sqlite`)
- [ ] `stats.round-history-limit`
- [ ] `messages.*` (all chat messages customizable)
---