From 05957f59dce8b309a0ad4267eb2b9757ff863e39 Mon Sep 17 00:00:00 2001 From: TDSTOS Date: Sat, 11 Apr 2026 23:03:34 +0200 Subject: [PATCH] Convert legacy color codes; fix tablist & deps MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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". --- .../speedhg/scoreboard/ServerRankProvider.kt | 30 ++++++++++++++++++- .../speedhg/scoreboard/TablistManager.kt | 2 +- src/main/resources/plugin.yml | 2 +- 3 files changed, 31 insertions(+), 3 deletions(-) diff --git a/src/main/kotlin/club/mcscrims/speedhg/scoreboard/ServerRankProvider.kt b/src/main/kotlin/club/mcscrims/speedhg/scoreboard/ServerRankProvider.kt index 225ad55..2eb0519 100644 --- a/src/main/kotlin/club/mcscrims/speedhg/scoreboard/ServerRankProvider.kt +++ b/src/main/kotlin/club/mcscrims/speedhg/scoreboard/ServerRankProvider.kt @@ -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 "", "§1" to "", "§2" to "", + "§3" to "", "§4" to "", "§5" to "", + "§6" to "", "§7" to "", "§8" to "", + "§9" to "", "§a" to "", "§b" to "", + "§c" to "", "§d" to "", "§e" to "", + "§f" to "", "§k" to "", "§l" to "", + "§m" to "", "§n" to "", "§o" to "", + "§r" to "" + ) + + replacements.forEach { ( legacy, tag ) -> + result = result.replace( legacy, tag ) + } + + return result + } + } \ No newline at end of file diff --git a/src/main/kotlin/club/mcscrims/speedhg/scoreboard/TablistManager.kt b/src/main/kotlin/club/mcscrims/speedhg/scoreboard/TablistManager.kt index c185286..b6648ec 100644 --- a/src/main/kotlin/club/mcscrims/speedhg/scoreboard/TablistManager.kt +++ b/src/main/kotlin/club/mcscrims/speedhg/scoreboard/TablistManager.kt @@ -297,7 +297,7 @@ class TablistManager( val footer = mm.deserialize( "\nOnline: " + " " + - "Ping: ms\n", + "Ping: ms\n", Placeholder.unparsed( "online", online.toString() ), Placeholder.unparsed( "ping", ping.toString() ), // Ping-Farbe: grün < 80ms, gelb < 150ms, rot sonst diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml index b59e3c1..b06b027 100644 --- a/src/main/resources/plugin.yml +++ b/src/main/resources/plugin.yml @@ -6,7 +6,7 @@ api-version: '1.21' depend: - "WorldEdit" - "Apollo-Bukkit" - - "Volcano" + - "Kup" permissions: speedhg.bypass: