Convert legacy color codes; fix tablist & deps

Add conversion of legacy Bukkit color codes (§-codes) to MiniMessage tags in ServerRankProvider to avoid MiniMessage parsing errors when deserializing rank prefixes. Introduce convertLegacyToMiniMessage and use it before mm.deserialize. Fix tablist footer formatting by adjusting the ping tag closure in TablistManager. Update plugin.yml dependency name from "Volcano" to "Kup".
This commit is contained in:
TDSTOS
2026-04-11 23:03:34 +02:00
parent 198275973e
commit 05957f59dc
3 changed files with 31 additions and 3 deletions

View File

@@ -91,7 +91,9 @@ class VolcanoServerRankProvider : ServerRankProvider {
player: Player
): Component
{
return mm.deserialize(getRank( player ).prefix)
val rawPrefix = getRank( player ).prefix
val sanitizedPrefix = convertLegacyToMiniMessage( rawPrefix )
return mm.deserialize( sanitizedPrefix )
}
override fun getRankColor(
@@ -109,4 +111,30 @@ class VolcanoServerRankProvider : ServerRankProvider {
return coreAPI.rankManager.getByUUID( rank.uuid )
}
/**
* Konvertiert alte Bukkit-Farbcodes in MiniMessage-Tags, um Parsing-Fehler zu vermeiden.
*/
private fun convertLegacyToMiniMessage(
text: String
): String
{
var result = text
val replacements = mapOf(
"§0" to "<black>", "§1" to "<dark_blue>", "§2" to "<dark_green>",
"§3" to "<dark_aqua>", "§4" to "<dark_red>", "§5" to "<dark_purple>",
"§6" to "<gold>", "§7" to "<gray>", "§8" to "<dark_gray>",
"§9" to "<blue>", "§a" to "<green>", "§b" to "<aqua>",
"§c" to "<red>", "§d" to "<light_purple>", "§e" to "<yellow>",
"§f" to "<white>", "§k" to "<obfuscated>", "§l" to "<bold>",
"§m" to "<strikethrough>", "§n" to "<underlined>", "§o" to "<italic>",
"§r" to "<reset>"
)
replacements.forEach { ( legacy, tag ) ->
result = result.replace( legacy, tag )
}
return result
}
}

View File

@@ -297,7 +297,7 @@ class TablistManager(
val footer = mm.deserialize(
"\n<gray>Online: <white><online></white> " +
"<dark_gray>⬥</dark_gray> " +
"Ping: <ping_color><ping>ms</ping_color></gray>\n",
"Ping: <ping_color><ping>ms</gray>\n",
Placeholder.unparsed( "online", online.toString() ),
Placeholder.unparsed( "ping", ping.toString() ),
// Ping-Farbe: grün < 80ms, gelb < 150ms, rot sonst

View File

@@ -6,7 +6,7 @@ api-version: '1.21'
depend:
- "WorldEdit"
- "Apollo-Bukkit"
- "Volcano"
- "Kup"
permissions:
speedhg.bypass: