diff --git a/src/main/java/fr/luc/gamingcore/listener/GuildChatListener.java b/src/main/java/fr/luc/gamingcore/listener/GuildChatListener.java index 54ec6eb..2b06e36 100644 --- a/src/main/java/fr/luc/gamingcore/listener/GuildChatListener.java +++ b/src/main/java/fr/luc/gamingcore/listener/GuildChatListener.java @@ -45,7 +45,7 @@ public class GuildChatListener implements Listener { /** * Intercepte les messages de chat pour : * 1. Rediriger les messages commençant par '#' vers le chat privé de guilde. - * 2. Formater le chat global public dans l'ordre : [Grade] [TagGuilde] Pseudo: Message. + * 2. Formater le chat global public dans l'ordre : [Grade] [TagGuilde] Pseudo: Message avec dégradés. * * @param event L'événement AsyncChatEvent de Paper. */ @@ -77,12 +77,25 @@ public class GuildChatListener implements Listener { event.renderer(new ChatRenderer() { @Override public @NotNull Component render(@NotNull Player source, @NotNull Component sourceDisplayName, @NotNull Component message, @NotNull Audience viewer) { - // A. Préfixe de Grade (LuckPerms via PlaceholderAPI) + // A. Préfixe de Grade (LuckPerms via PlaceholderAPI avec support des dégradés TAB & MiniMessage) Component prefixComponent = Component.empty(); if (Bukkit.getPluginManager().getPlugin("PlaceholderAPI") != null) { String lpPrefix = me.clip.placeholderapi.PlaceholderAPI.setPlaceholders(source, "%luckperms_prefix%"); - if (lpPrefix != null && !lpPrefix.isEmpty()) { - prefixComponent = LegacyComponentSerializer.legacyAmpersand().deserialize(lpPrefix); + if (lpPrefix != null && !lpPrefix.trim().isEmpty()) { + // Conversion du format dégradé TAB {#HEX1>}texte{#HEX2<} vers MiniMessage texte + if (lpPrefix.contains("{#") && lpPrefix.contains(">}")) { + lpPrefix = lpPrefix.replaceAll("\\{#([0-9a-fA-F]{6})>\\}(.*?)\\{#([0-9a-fA-F]{6})<\\}", "$2"); + } + + if (lpPrefix.contains("<") && lpPrefix.contains(">")) { + prefixComponent = MiniMessage.miniMessage().deserialize(lpPrefix); + } else { + prefixComponent = LegacyComponentSerializer.legacyAmpersand().deserialize(lpPrefix); + } + + if (!lpPrefix.endsWith(" ")) { + prefixComponent = prefixComponent.append(Component.space()); + } } }