fix: Parse LuckPerms TAB gradient formats in chat renderer and ensure spacing

This commit is contained in:
2026-08-20 22:15:20 +02:00
parent 1645618e25
commit b5caa905d6
@@ -45,7 +45,7 @@ public class GuildChatListener implements Listener {
/** /**
* Intercepte les messages de chat pour : * Intercepte les messages de chat pour :
* 1. Rediriger les messages commençant par '#' vers le chat privé de guilde. * 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. * @param event L'événement AsyncChatEvent de Paper.
*/ */
@@ -77,12 +77,25 @@ public class GuildChatListener implements Listener {
event.renderer(new ChatRenderer() { event.renderer(new ChatRenderer() {
@Override @Override
public @NotNull Component render(@NotNull Player source, @NotNull Component sourceDisplayName, @NotNull Component message, @NotNull Audience viewer) { 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(); Component prefixComponent = Component.empty();
if (Bukkit.getPluginManager().getPlugin("PlaceholderAPI") != null) { if (Bukkit.getPluginManager().getPlugin("PlaceholderAPI") != null) {
String lpPrefix = me.clip.placeholderapi.PlaceholderAPI.setPlaceholders(source, "%luckperms_prefix%"); String lpPrefix = me.clip.placeholderapi.PlaceholderAPI.setPlaceholders(source, "%luckperms_prefix%");
if (lpPrefix != null && !lpPrefix.isEmpty()) { if (lpPrefix != null && !lpPrefix.trim().isEmpty()) {
prefixComponent = LegacyComponentSerializer.legacyAmpersand().deserialize(lpPrefix); // Conversion du format dégradé TAB {#HEX1>}texte{#HEX2<} vers MiniMessage <gradient:#HEX1:#HEX2>texte</gradient>
if (lpPrefix.contains("{#") && lpPrefix.contains(">}")) {
lpPrefix = lpPrefix.replaceAll("\\{#([0-9a-fA-F]{6})>\\}(.*?)\\{#([0-9a-fA-F]{6})<\\}", "<gradient:#$1:#$3>$2</gradient>");
}
if (lpPrefix.contains("<") && lpPrefix.contains(">")) {
prefixComponent = MiniMessage.miniMessage().deserialize(lpPrefix);
} else {
prefixComponent = LegacyComponentSerializer.legacyAmpersand().deserialize(lpPrefix);
}
if (!lpPrefix.endsWith(" ")) {
prefixComponent = prefixComponent.append(Component.space());
}
} }
} }