From c51d8da5b7384c9e9835069b0771e18e057e3536 Mon Sep 17 00:00:00 2001 From: Taah Date: Tue, 29 Aug 2023 20:41:15 -0700 Subject: [PATCH] fix prefixes --- .../dev/plex/command/impl/AdminChatCMD.java | 8 +++- .../main/java/dev/plex/hook/VaultHook.java | 39 +++++++++++++------ .../dev/plex/listener/impl/ChatListener.java | 7 +++- .../main/java/dev/plex/util/PlexUtils.java | 5 +++ .../java/dev/plex/util/redis/MessageUtil.java | 5 ++- server/src/main/resources/messages.yml | 2 +- 6 files changed, 48 insertions(+), 18 deletions(-) diff --git a/server/src/main/java/dev/plex/command/impl/AdminChatCMD.java b/server/src/main/java/dev/plex/command/impl/AdminChatCMD.java index d8d9d94..6e4bad4 100644 --- a/server/src/main/java/dev/plex/command/impl/AdminChatCMD.java +++ b/server/src/main/java/dev/plex/command/impl/AdminChatCMD.java @@ -5,11 +5,14 @@ import dev.plex.command.PlexCommand; import dev.plex.command.annotation.CommandParameters; import dev.plex.command.annotation.CommandPermissions; import dev.plex.command.source.RequiredCommandSource; +import dev.plex.hook.VaultHook; import dev.plex.player.PlexPlayer; +import dev.plex.util.PlexLog; import dev.plex.util.PlexUtils; import dev.plex.util.minimessage.SafeMiniMessage; import dev.plex.util.redis.MessageUtil; import net.kyori.adventure.text.Component; +import net.kyori.adventure.text.TextComponent; import net.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer; import org.apache.commons.lang3.BooleanUtils; import org.apache.commons.lang3.StringUtils; @@ -43,12 +46,13 @@ public class AdminChatCMD extends PlexCommand if (playerSender != null) { player = plugin.getPlayerCache().getPlexPlayer(playerSender.getUniqueId()); - prefix = player.getPrefix(); + prefix = PlexUtils.mmSerialize(VaultHook.getPrefix(player)); } else { - prefix = messageString(LegacyComponentSerializer.legacyAmpersand().serialize(mmString("[Console[Developer]"); + return PlexUtils.mmDeserialize("[Developer]"); } - Player bukkitPlayer = Bukkit.getPlayer(plexPlayer.getUuid()); - String group = VaultHook.getPermission().getPrimaryGroup(bukkitPlayer); - String vaultPrefix = VaultHook.getChat().getGroupPrefix(bukkitPlayer.getWorld(), group); - return LegacyComponentSerializer.legacyAmpersand().deserialize(vaultPrefix); + String group = VaultHook.getPermission().getPrimaryGroup(null, player); + if (group == null || group.isEmpty()) { + return Component.empty(); + } + String vaultPrefix = VaultHook.getChat().getGroupPrefix((String) null, group); + if (vaultPrefix == null || vaultPrefix.isEmpty()) { + return Component.empty(); + } + PlexLog.debug("prefix: {0}", PlexUtils.legacyToMiniString(vaultPrefix).replace("<", "\\<")); + return SafeMiniMessage.mmDeserializeWithoutEvents(PlexUtils.legacyToMiniString(vaultPrefix)); } public static Permission getPermission() diff --git a/server/src/main/java/dev/plex/listener/impl/ChatListener.java b/server/src/main/java/dev/plex/listener/impl/ChatListener.java index 793f803..333d8d2 100644 --- a/server/src/main/java/dev/plex/listener/impl/ChatListener.java +++ b/server/src/main/java/dev/plex/listener/impl/ChatListener.java @@ -1,5 +1,6 @@ package dev.plex.listener.impl; +import dev.plex.hook.VaultHook; import dev.plex.listener.PlexListener; import dev.plex.listener.annotation.Toggleable; import dev.plex.meta.PlayerMeta; @@ -11,6 +12,7 @@ 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.TextComponent; import net.kyori.adventure.text.TextReplacementConfig; import net.kyori.adventure.text.event.ClickEvent; import net.kyori.adventure.text.format.NamedTextColor; @@ -43,8 +45,9 @@ public class ChatListener extends PlexListener PlexPlayer plexPlayer = plugin.getPlayerCache().getPlexPlayerMap().get(event.getPlayer().getUniqueId()); if (plexPlayer.isStaffChat()) { - MessageUtil.sendStaffChat(event.getPlayer(), event.message(), PlexUtils.adminChat(event.getPlayer().getName(), plexPlayer.getPrefix(), SafeMiniMessage.mmSerialize(event.message())).toArray(UUID[]::new)); - plugin.getServer().getConsoleSender().sendMessage(PlexUtils.messageComponent("adminChatFormat", event.getPlayer().getName(), SafeMiniMessage.mmSerialize(event.message())).replaceText(URL_REPLACEMENT_CONFIG)); + String prefix = PlexUtils.mmSerialize(VaultHook.getPrefix(event.getPlayer())); // Don't use PlexPlayer#getPrefix because that returns their custom set prefix and not their group's + MessageUtil.sendStaffChat(event.getPlayer(), event.message(), PlexUtils.adminChat(event.getPlayer().getName(), prefix, SafeMiniMessage.mmSerialize(event.message())).toArray(UUID[]::new)); + plugin.getServer().getConsoleSender().sendMessage(PlexUtils.messageComponent("adminChatFormat", event.getPlayer().getName(), prefix, PlexUtils.legacyToMiniString(SafeMiniMessage.mmSerializeWithoutEvents(event.message()))).replaceText(URL_REPLACEMENT_CONFIG)); event.setCancelled(true); return; } diff --git a/server/src/main/java/dev/plex/util/PlexUtils.java b/server/src/main/java/dev/plex/util/PlexUtils.java index d394828..5014bbd 100644 --- a/server/src/main/java/dev/plex/util/PlexUtils.java +++ b/server/src/main/java/dev/plex/util/PlexUtils.java @@ -192,6 +192,11 @@ public class PlexUtils implements PlexBase return MINI_MESSAGE.deserialize(input); } + public static String mmSerialize(Component input) + { + return MINI_MESSAGE.serialize(input); + } + public static Component mmCustomDeserialize(String input, TagResolver... resolvers) { return MiniMessage.builder().tags(TagResolver.builder().resolvers(resolvers).build()).build().deserialize(input); diff --git a/server/src/main/java/dev/plex/util/redis/MessageUtil.java b/server/src/main/java/dev/plex/util/redis/MessageUtil.java index 0b98021..ccb725c 100644 --- a/server/src/main/java/dev/plex/util/redis/MessageUtil.java +++ b/server/src/main/java/dev/plex/util/redis/MessageUtil.java @@ -3,6 +3,7 @@ package dev.plex.util.redis; import com.google.common.reflect.TypeToken; import com.google.gson.Gson; import dev.plex.Plex; +import dev.plex.hook.VaultHook; import dev.plex.util.PlexLog; import dev.plex.util.PlexUtils; import dev.plex.util.minimessage.SafeMiniMessage; @@ -41,7 +42,7 @@ public class MessageUtil { }.getType()); String sender = object.getString("sender").isEmpty() ? "CONSOLE" : object.getString("sender"); - PlexUtils.adminChat(sender, plugin.getPlayerCache().getPlexPlayer(Bukkit.getPlayer(sender).getUniqueId()).getPrefix(), object.getString("message"), ignore); + PlexUtils.adminChat(sender, !sender.equals("CONSOLE") ? PlexUtils.mmSerialize(VaultHook.getPrefix(UUID.fromString(sender))) : "[Console]", object.getString("message"), ignore); String[] server = object.getString("server").split(":"); if (!Bukkit.getServer().getIp().equalsIgnoreCase(server[0]) || Bukkit.getServer().getPort() != Integer.parseInt(server[1])) { @@ -77,7 +78,7 @@ public class MessageUtil String miniMessage = SafeMiniMessage.mmSerialize(message); JSONObject object = new JSONObject(); - object.put("sender", sender instanceof Player player ? player.getName() : ""); + object.put("sender", sender instanceof Player player ? player.getUniqueId().toString() : ""); object.put("message", miniMessage); object.put("ignore", GSON.toJson(ignore)); object.put("server", String.format("%s:%s", Bukkit.getServer().getIp(), Bukkit.getServer().getPort())); diff --git a/server/src/main/resources/messages.yml b/server/src/main/resources/messages.yml index 9e94133..9c39887 100644 --- a/server/src/main/resources/messages.yml +++ b/server/src/main/resources/messages.yml @@ -130,7 +130,7 @@ toggleCommandSpy: "CommandSpy has been" enabled: "enabled." disabled: "disabled." # 0 - The admin / staff member -# 1 - The player's prefix +# 1 - The player's group's prefix if any # 2 - The message adminChatFormat: '[AdminChat] {0} {1} ยป {2}' # 0 - Whether it was toggled on or off