diff --git a/src/main/java/fr/luc/gamingcore/listener/GuildChatListener.java b/src/main/java/fr/luc/gamingcore/listener/GuildChatListener.java index ca1afb9..54ec6eb 100644 --- a/src/main/java/fr/luc/gamingcore/listener/GuildChatListener.java +++ b/src/main/java/fr/luc/gamingcore/listener/GuildChatListener.java @@ -2,17 +2,19 @@ package fr.luc.gamingcore.listener; import fr.luc.gamingcore.Main; import fr.luc.gamingcore.manager.GuildManager; -import fr.luc.gamingcore.util.MessageManager; import fr.luc.gamingcore.model.Guild; import fr.luc.gamingcore.model.GuildMember; import fr.luc.gamingcore.model.GuildRank; +import fr.luc.gamingcore.util.MessageManager; import io.papermc.paper.chat.ChatRenderer; import io.papermc.paper.event.player.AsyncChatEvent; import net.kyori.adventure.audience.Audience; import net.kyori.adventure.text.Component; import net.kyori.adventure.text.format.NamedTextColor; import net.kyori.adventure.text.minimessage.MiniMessage; +import net.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer; import net.kyori.adventure.text.serializer.plain.PlainTextComponentSerializer; +import org.bukkit.Bukkit; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.event.EventPriority; @@ -20,7 +22,8 @@ import org.bukkit.event.Listener; import org.jetbrains.annotations.NotNull; /** - * Écouteur gérant à la fois le chat privé de guilde (#message) et le formatage du chat global avec le tag de guilde. + * Écouteur gérant à la fois le chat privé de guilde (#message) et le formatage du chat global avec : + * [Grade] [TagGuilde] Pseudo: Message. */ public class GuildChatListener implements Listener { @@ -42,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 avec le tag coloré [TAG] Pseudo: Message. + * 2. Formater le chat global public dans l'ordre : [Grade] [TagGuilde] Pseudo: Message. * * @param event L'événement AsyncChatEvent de Paper. */ @@ -70,22 +73,37 @@ public class GuildChatListener implements Listener { return; } - // 2. Gestion et Formatage du Chat Global Public + // 2. Gestion et Formatage du Chat Global Public ([Grade] [TagGuilde] Pseudo: Message) 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) + 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); + } + } + + // B. Tag de Guilde (GamingCore avec support Dégradé MiniMessage) + Component tagComponent = Component.empty(); Guild guild = guildManager.getGuildByPlayer(source.getUniqueId()); if (guild != null) { - Component tagComponent = MiniMessage.miniMessage().deserialize("[" + guild.getTag() + "] "); - return tagComponent - .append(sourceDisplayName.color(NamedTextColor.WHITE)) - .append(Component.text(": ", NamedTextColor.DARK_GRAY)) - .append(message.color(NamedTextColor.WHITE)); - } else { - return sourceDisplayName.color(NamedTextColor.WHITE) - .append(Component.text(": ", NamedTextColor.DARK_GRAY)) - .append(message.color(NamedTextColor.WHITE)); + String c = guild.getColor(); + if (c.contains(":")) { + tagComponent = MiniMessage.miniMessage().deserialize("[" + guild.getTag() + "] "); + } else { + tagComponent = MiniMessage.miniMessage().deserialize("[" + guild.getTag() + "] "); + } } + + // Assemblage final : [Grade] [TagGuilde] Pseudo: Message + return prefixComponent + .append(tagComponent) + .append(sourceDisplayName.color(NamedTextColor.WHITE)) + .append(Component.text(": ", NamedTextColor.DARK_GRAY)) + .append(message.color(NamedTextColor.WHITE)); } }); }