From df5158510b8fa2a9e22047698f0ef798333e4b38 Mon Sep 17 00:00:00 2001 From: "Tobias Burdow [Kaleidox]" Date: Sun, 25 Feb 2024 11:09:21 +0100 Subject: [PATCH] improve data player handling --- .../aurionchat/api/AurionPacket.java | 34 +++++++++++++++++-- .../aurionchat/api/AurionPlayer.java | 6 ++++ .../bukkit/listeners/ChatListener.java | 5 ++- .../aurionchat/common/ChatService.java | 4 +-- .../common/command/ChatCommandCommon.java | 5 ++- .../fabric/listeners/ChatListener.java | 5 ++- .../forge/listeners/ChatListener.java | 5 ++- .../sponge/listeners/ChatListener.java | 5 ++- 8 files changed, 49 insertions(+), 20 deletions(-) diff --git a/api/src/main/java/com/mineaurion/aurionchat/api/AurionPacket.java b/api/src/main/java/com/mineaurion/aurionchat/api/AurionPacket.java index e246977..c3c4a81 100644 --- a/api/src/main/java/com/mineaurion/aurionchat/api/AurionPacket.java +++ b/api/src/main/java/com/mineaurion/aurionchat/api/AurionPacket.java @@ -22,6 +22,13 @@ public static AurionPacket parse(String json) { return gson.fromJson(json, AurionPacket.class); } + /** + * create a packet builder for a chat message + * @param player the related player + * @param message the raw, sanitized text content of the message + * @param tellRaw shown to ingame players + * @return builder; should be extended with {@link Builder#channel(String)} + */ public static Builder chat(AurionPlayer player, String message, Object tellRaw) { return AurionPacket.builder() .type(Type.CHAT) @@ -31,6 +38,27 @@ public static Builder chat(AurionPlayer player, String message, Object tellRaw) .tellRawData(tellRaw.toString()); } + /** + * create a packet builder for a player event + * @param player the related player + * @param type the exact type of player event + * @param tellRaw shown to ingame players + * @return builder; should be extended with {@link Builder#detail(String)} and {@link Builder#channel(String)} + */ + public static Builder event(AurionPlayer player, Type type, Object tellRaw) { + return AurionPacket.builder() + .type(Type.CHAT) + .source("ingame") + .player(player) + .tellRawData(tellRaw.toString()); + } + + /** + * create a packet builder for an automessage + * @param message the raw, sanitized message + * @param tellRaw shown to ingame players + * @return builder; should be extended with {@link Builder#channel(String)} + */ public static Builder autoMessage(String message, Object tellRaw) { return AurionPacket.builder() .type(Type.AUTO_MESSAGE) @@ -50,12 +78,12 @@ public static Builder autoMessage(String message, Object tellRaw) { @Default @Nullable AurionPlayer player = null; /** channel name */ - @Default @Nullable String channelName = null; + @Default @Nullable String channel = null; - /** display name of sender (one of: player name, automessage title) */ + /** sanitized display name of sender (one of: player name, automessage title) */ @Default @Nullable String displayName = null; - /** detail data (one of: message text, join text, achievement text) */ + /** sanitized detail data (one of: message text, join text, achievement text) */ @Default @Nullable String detail = null; /** what ingame players see */ diff --git a/api/src/main/java/com/mineaurion/aurionchat/api/AurionPlayer.java b/api/src/main/java/com/mineaurion/aurionchat/api/AurionPlayer.java index eff48b8..eaab29d 100644 --- a/api/src/main/java/com/mineaurion/aurionchat/api/AurionPlayer.java +++ b/api/src/main/java/com/mineaurion/aurionchat/api/AurionPlayer.java @@ -10,6 +10,12 @@ @Value @NonFinal public class AurionPlayer implements Named { UUID id; + /** + * raw, sanitized recently known player name + */ String name; + /** + * sanitized display name of the player + */ @Nullable String displayName; } diff --git a/bukkit/src/main/java/com/mineaurion/aurionchat/bukkit/listeners/ChatListener.java b/bukkit/src/main/java/com/mineaurion/aurionchat/bukkit/listeners/ChatListener.java index c82eba6..711e88a 100644 --- a/bukkit/src/main/java/com/mineaurion/aurionchat/bukkit/listeners/ChatListener.java +++ b/bukkit/src/main/java/com/mineaurion/aurionchat/bukkit/listeners/ChatListener.java @@ -43,11 +43,10 @@ public void onAsyncPlayerChatEvent(AsyncPlayerChatEvent event){ plugin.getConfigurationAdapter().getChannels().get(currentChannel).urlMode ); AurionPacket.Builder packet = AurionPacket.chat( - player.getName(), + aurionChatPlayer, event.getMessage(), gson().serialize(messageFormat)) - .playerId(player.getUniqueId()) - .channelName(currentChannel); + .channel(currentChannel); try{ plugin.getChatService().send(packet); } diff --git a/common/src/main/java/com/mineaurion/aurionchat/common/ChatService.java b/common/src/main/java/com/mineaurion/aurionchat/common/ChatService.java index 52874c6..e3f6385 100644 --- a/common/src/main/java/com/mineaurion/aurionchat/common/ChatService.java +++ b/common/src/main/java/com/mineaurion/aurionchat/common/ChatService.java @@ -87,11 +87,11 @@ private DeliverCallback consumer(){ plugin.getAurionChatPlayers().forEach((uuid, aurionChatPlayers) -> { if(packet.getType().equals(AurionPacket.Type.AUTO_MESSAGE) && this.config.getBoolean("options.automessage", false)){ - if(aurionChatPlayers.hasPermission("aurionchat.automessage." + packet.getChannelName())){ + if(aurionChatPlayers.hasPermission("aurionchat.automessage." + packet.getChannel())){ aurionChatPlayers.sendMessage(messageDeserialize); } } else if (packet.getType().equals(AurionPacket.Type.CHAT)) { - if(aurionChatPlayers.getChannels().contains(packet.getChannelName())){ + if(aurionChatPlayers.getChannels().contains(packet.getChannel())){ aurionChatPlayers.sendMessage(messageDeserialize); } } else { diff --git a/common/src/main/java/com/mineaurion/aurionchat/common/command/ChatCommandCommon.java b/common/src/main/java/com/mineaurion/aurionchat/common/command/ChatCommandCommon.java index deee36c..8f15fc6 100644 --- a/common/src/main/java/com/mineaurion/aurionchat/common/command/ChatCommandCommon.java +++ b/common/src/main/java/com/mineaurion/aurionchat/common/command/ChatCommandCommon.java @@ -132,11 +132,10 @@ public boolean onCommand(AurionChatPlayer aurionChatPlayers, Component message, aurionChatPlayers.addChannel(channel); Component component = Utils.processMessage(format, message, aurionChatPlayers, Collections.singletonList(Utils.URL_MODE.ALLOW)); AurionPacket.Builder packet = AurionPacket.chat( - aurionChatPlayers.getPlayer().getDisplayName(), + aurionChatPlayers, Utils.getDisplayString(message), GsonComponentSerializer.gson().serialize(component)) - .playerId(aurionChatPlayers.getPlayer().getUUID()) - .channelName(channel); + .channel(channel); try { plugin.getChatService().send(packet); return true; diff --git a/fabric/src/main/java/com/mineaurion/aurionchat/fabric/listeners/ChatListener.java b/fabric/src/main/java/com/mineaurion/aurionchat/fabric/listeners/ChatListener.java index f360965..22b712e 100644 --- a/fabric/src/main/java/com/mineaurion/aurionchat/fabric/listeners/ChatListener.java +++ b/fabric/src/main/java/com/mineaurion/aurionchat/fabric/listeners/ChatListener.java @@ -36,11 +36,10 @@ public boolean allowChatMessage(SignedMessage message, ServerPlayerEntity sender channel.urlMode ); AurionPacket.Builder packet = AurionPacket.chat( - aurionChatPlayer.getPlayer().getDisplayName(), + aurionChatPlayer, message.getSignedContent(), gson().serialize(messageFormat)) - .playerId(aurionChatPlayer.getPlayer().getUUID()) - .channelName(currentChannel); + .channel(currentChannel); try { plugin.getChatService().send(packet); } catch (IOException e) { diff --git a/forge/src/main/java/com/mineaurion/aurionchat/forge/listeners/ChatListener.java b/forge/src/main/java/com/mineaurion/aurionchat/forge/listeners/ChatListener.java index 632b1f3..6399f46 100644 --- a/forge/src/main/java/com/mineaurion/aurionchat/forge/listeners/ChatListener.java +++ b/forge/src/main/java/com/mineaurion/aurionchat/forge/listeners/ChatListener.java @@ -36,11 +36,10 @@ public void onServerChatEvent(ServerChatEvent event) { channel.urlMode ); AurionPacket.Builder packet = AurionPacket.chat( - event.getPlayer().getScoreboardName(), + aurionChatPlayer, event.getRawText(), gson().serialize(component)) - .playerId(event.getPlayer().getUUID()) - .channelName(currentChannel); + .channel(currentChannel); try { plugin.getChatService().send(packet); } catch (IOException e) { diff --git a/sponge/src/main/java/com/mineaurion/aurionchat/sponge/listeners/ChatListener.java b/sponge/src/main/java/com/mineaurion/aurionchat/sponge/listeners/ChatListener.java index 008a698..9f98e39 100644 --- a/sponge/src/main/java/com/mineaurion/aurionchat/sponge/listeners/ChatListener.java +++ b/sponge/src/main/java/com/mineaurion/aurionchat/sponge/listeners/ChatListener.java @@ -43,11 +43,10 @@ public void onPlayerChat(PlayerChatEvent event, @First ServerPlayer player) { channel.urlMode ); AurionPacket.Builder packet = AurionPacket.chat( - player.name(), + aurionChatPlayer, Utils.getDisplayString(event.message()), gson().serialize(messageFormat)) - .playerId(player.uniqueId()) - .channelName(currentChannel); + .channel(currentChannel); try { plugin.getChatService().send(packet); } catch (Exception e) {