
Список изменений
Chat Design and Game-End Visuals Plan
This plan aims to implement a professional-grade chat formatting system and immersive game-ending sequences with "spooky" (tenebrus) aesthetics as requested.
User Review Required
[!IMPORTANT] The chat format will be:
(Rankup) + (nombre) + (level) = Hola!. Since there is no existing "Rank" system, I will implement a basic Rank utility that determines names like "Novice", "Hunter", etc., based on the player's Level. All formats, titles, and effects will be configurable viaconfig.yml.
[!TIP] Game-ending effects will include:
- Survivors Win: Golden titles, "Sparkle" particles, and triumphant but eerie sounds.
- Slenderman Wins: Dark Red titles, "Smoke/Ash" particles, and haunting sounds (Thunder/Wither Death).
Proposed Changes
Core API
-
Add
void endGame(Role winner);to the interface. -
Add configuration keys for:
- Chat:
CHAT_FORMAT,CHAT_ENABLED. - Win Visuals:
WIN_SURVIVORS_TITLE,WIN_SURVIVORS_SUBTITLE,WIN_SLENDER_TITLE,WIN_SLENDER_SUBTITLE. - Effects:
WIN_EFFECTS_PARTICLES,WIN_EFFECTS_SOUNDS.
- Chat:
Game Logic
- Implement
endGame(Role winner). - Add logic for visual effects (particles and titles) inside
endGame. - Use
World.spawnParticleandPlayer.showTitlefor the aesthetics. - Update
run()to callendGame(Role.SLENDER)when the timer reaches 0.
[MODIFY] [GameListeners.java]
- Update
deathPlayerto callarena.endGame(Role.SLENDER)when all survivors are dead. - Update
pickupEventto callarena.endGame(Role.SURVIVOR)when all pages are collected.
Chat System
-
Implement
AsyncPlayerChatEvent. -
Format:
&8(&b%RANK%&8) &f%PLAYER% &8[&eLv. %LEVEL%&8] &7= &f%MESSAGE%. -
Integrate with
LevelManagerto fetch levels. -
Register the new
ChatListener.
Utils
- Small utility to determine Rank name based on Level (e.g. 0-10: Novice, 11-30: Survivor, etc.).
Open Questions
- Should the chat format apply only inside the arena or globally? (I assume globally if they are in the minigame server, or only inside the game if it's a multi-purpose server). I will implement it for everyone who has a profile loaded.
Verification Plan
Automated Tests
- N/A (Minecraft plugin context requires manual verification or mock tests, but I will do manual code review).
Manual Verification
- Join an arena.
- Collect all pages and verify the "Winners" screen and particles.
- Get killed by Slender and verify the "Slender Wins" screen.
- Type in chat and verify the format:
(Novice) PlayerName [Lv. 1] = Hello!.
