diff --git a/TODO.md b/TODO.md index c6602c5..c5bcb6d 100644 --- a/TODO.md +++ b/TODO.md @@ -14,6 +14,7 @@ A Minecraft survival/PvP plugin with configurable loot, shrinking world border, - [Commands](#-commands) - [Stats System](#-stats-system) - [Configuration](#-configuration) +- [Player Registration](#-player-registration--session-management) --- @@ -88,6 +89,55 @@ A Minecraft survival/PvP plugin with configurable loot, shrinking world border, --- +## 👥 Player Registration & Session Management + +### Registration +- [ ] Expose a command (e.g. `/hg join `) callable by other plugins/console to register a player into the upcoming round +- [ ] Maintain a registered player list per round (separate from online players) +- [ ] Reject registration if round is already ACTIVE or past COUNTDOWN +- [ ] Confirm registration with a chat message to the player: `"You have been entered into the round!"` +- [ ] Allow `/hg leave ` to remove a player before the round starts +- [ ] Allow `/hg kick ` (admin) to force-remove a player mid-round (counts as death/DNF, no kill credit) + +### Player States +Track each registered player in one of these states: +- [ ] `REGISTERED` — signed up, round not yet started +- [ ] `ALIVE` — actively in the round +- [ ] `DEAD` — eliminated, waiting in the safe room +- [ ] `DISCONNECTED` — left the server mid-round +- [ ] `SPECTATING` — admin/non-participant observer + +### Disconnect Handling +- [ ] On disconnect during COUNTDOWN: remove from round, free their spawn slot +- [ ] On disconnect during ACTIVE round: treat as death (no kill credit), teleport handling skipped since they're offline +- [ ] Store disconnect state so if they reconnect before round ends, they are placed in the safe room (not back into the game) +- [ ] On reconnect mid-round: teleport to safe room, restore DEAD state, notify them the round is ongoing +- [ ] On reconnect after round ends: restore their normal state + +### Join Game Handling +- [ ] On registration: set player gamemode survival +- [ ] Teleport player to a configurable lobby/waiting area within the event world on registration +- [ ] Assign spawn points randomly from the available pool at countdown start — no two players share a point +- [ ] Teleport all REGISTERED players to their assigned spawn points when countdown begins +- [ ] Notify player they joined the game + +### Safe Room +- [ ] Command to re-teleport all players not in the game to the safe room +- [ ] Configurable safe room location (world, x, y, z, yaw, pitch) in config +- [ ] Teleport eliminated players to safe room immediately on death +- [ ] Teleport disconnected players to safe room on reconnect (if round still active) +- [ ] Players in safe room: no PvP, no hunger, no fall damage +- [ ] Optionally show a live scoreboard or action bar in the safe room (remaining players, kills leaderboard) +- [ ] Teleport all players out of safe room to a configurable post-round location when round ends + +### Round Cleanup +- [ ] On round end: clear all player states +- [ ] Restore player inventory, gamemode, health, hunger, potion effects to pre-round state (or a clean default) +- [ ] Clear any active boss bars, action bars, speed effects from all participants +- [ ] Reset registered player list ready for next round + +--- + ## 🧭 Commands ### `/hg stuck`