Tags
Creators
Details
1.5.0
Compatibility
Changes
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!.
Projects on Modrinth are automatically available through a Maven repository for use with JVM build tools such as Gradle. To learn more about the Modrinth Maven API, click here.
Note: When available, you should use the creator's maven repo instead as it will have transitive dependency information that the Modrinth Maven API does not. You may also end up with duplicate dependencies if you use a mix of Modrinth and non-Modrinth Maven repositories for your dependencies, because the group identifier will be different when served through the Modrinth Maven API.
Maven coordinates:
Version ID:
build.gradle:
repositories {
exclusiveContent {
forRepository {
maven {
name = "Modrinth"
url = "https://api.modrinth.com/maven"
}
}
// forRepositories(fg.repository) // Uncomment when using ForgeGradle
filter {
includeGroup "maven.modrinth"
}
}
}
// Standard Gradle dependency
dependencies {
implementation "maven.modrinth:qrDy74Zx:qEOGaR1E"
}
// Legacy Loom dependency
dependencies {
modImplementation "maven.modrinth:qrDy74Zx:qEOGaR1E"
}

