From 622c8147a9240b7d635d12496c856daa26386f56 Mon Sep 17 00:00:00 2001 From: Bobcat00 Date: Mon, 26 Feb 2024 15:25:30 -0500 Subject: [PATCH] Add setting to use usernames over display names for social spy (#5613) Co-authored-by: Bobcat00 Co-authored-by: Josh Roy <10731363+JRoy@users.noreply.github.com> --- .../com/earth2me/essentials/EssentialsPlayerListener.java | 3 ++- .../src/main/java/com/earth2me/essentials/ISettings.java | 2 ++ .../src/main/java/com/earth2me/essentials/Settings.java | 5 +++++ .../essentials/messaging/SimpleMessageRecipient.java | 6 ++++-- Essentials/src/main/resources/config.yml | 4 ++++ 5 files changed, 17 insertions(+), 3 deletions(-) diff --git a/Essentials/src/main/java/com/earth2me/essentials/EssentialsPlayerListener.java b/Essentials/src/main/java/com/earth2me/essentials/EssentialsPlayerListener.java index a7bca0435..af1b64ea3 100644 --- a/Essentials/src/main/java/com/earth2me/essentials/EssentialsPlayerListener.java +++ b/Essentials/src/main/java/com/earth2me/essentials/EssentialsPlayerListener.java @@ -640,12 +640,13 @@ public class EssentialsPlayerListener implements Listener, FakeAccessor { || (!pluginCommand.getName().equals("msg") && !pluginCommand.getName().equals("r"))) { // /msg and /r are handled in SimpleMessageRecipient final User user = ess.getUser(player); if (!user.isAuthorized("essentials.chat.spy.exempt")) { + final String playerName = ess.getSettings().isSocialSpyDisplayNames() ? player.getDisplayName() : player.getName(); for (final User spyer : ess.getOnlineUsers()) { if (spyer.isSocialSpyEnabled() && !player.equals(spyer.getBase())) { final Component base = (user.isMuted() && ess.getSettings().getSocialSpyListenMutedPlayers()) ? spyer.tlComponent("socialSpyMutedPrefix") : spyer.tlComponent("socialSpyPrefix"); - spyer.sendComponent(base.append(AdventureUtil.legacyToAdventure(player.getDisplayName())).append(Component.text(": " + event.getMessage()))); + spyer.sendComponent(base.append(AdventureUtil.legacyToAdventure(playerName)).append(Component.text(": " + event.getMessage()))); } } } diff --git a/Essentials/src/main/java/com/earth2me/essentials/ISettings.java b/Essentials/src/main/java/com/earth2me/essentials/ISettings.java index 8096f08d4..e725f8fa9 100644 --- a/Essentials/src/main/java/com/earth2me/essentials/ISettings.java +++ b/Essentials/src/main/java/com/earth2me/essentials/ISettings.java @@ -73,6 +73,8 @@ public interface ISettings extends IConf { boolean isSocialSpyMessages(); + boolean isSocialSpyDisplayNames(); + Set getMuteCommands(); @Deprecated diff --git a/Essentials/src/main/java/com/earth2me/essentials/Settings.java b/Essentials/src/main/java/com/earth2me/essentials/Settings.java index 5fe884f7a..bd8d64b4f 100644 --- a/Essentials/src/main/java/com/earth2me/essentials/Settings.java +++ b/Essentials/src/main/java/com/earth2me/essentials/Settings.java @@ -456,6 +456,11 @@ public class Settings implements net.ess3.api.ISettings { return config.getBoolean("socialspy-messages", true); } + @Override + public boolean isSocialSpyDisplayNames() { + return config.getBoolean("socialspy-uses-displaynames", true); + } + private Set _getMuteCommands() { final Set muteCommands = new HashSet<>(); if (config.isList("mute-commands")) { diff --git a/Essentials/src/main/java/com/earth2me/essentials/messaging/SimpleMessageRecipient.java b/Essentials/src/main/java/com/earth2me/essentials/messaging/SimpleMessageRecipient.java index d52eeb294..6c7364108 100644 --- a/Essentials/src/main/java/com/earth2me/essentials/messaging/SimpleMessageRecipient.java +++ b/Essentials/src/main/java/com/earth2me/essentials/messaging/SimpleMessageRecipient.java @@ -121,15 +121,17 @@ public class SimpleMessageRecipient implements IMessageRecipient { // Dont spy on chats involving socialspy exempt players && !senderUser.isAuthorized("essentials.chat.spy.exempt") && recipientUser != null && !recipientUser.isAuthorized("essentials.chat.spy.exempt")) { + final String senderName = ess.getSettings().isSocialSpyDisplayNames() ? getDisplayName() : getName(); + final String recipientName = ess.getSettings().isSocialSpyDisplayNames() ? recipient.getDisplayName() : recipient.getName(); for (final User onlineUser : ess.getOnlineUsers()) { if (onlineUser.isSocialSpyEnabled() // Don't send socialspy messages to message sender/receiver to prevent spam && !onlineUser.equals(senderUser) && !onlineUser.equals(recipient)) { if (senderUser.isMuted() && ess.getSettings().getSocialSpyListenMutedPlayers()) { - onlineUser.sendComponent(AdventureUtil.miniMessage().deserialize(tlSender("socialSpyMutedPrefix") + tlLiteral("socialSpyMsgFormat", getDisplayName(), recipient.getDisplayName(), message))); + onlineUser.sendComponent(AdventureUtil.miniMessage().deserialize(tlSender("socialSpyMutedPrefix") + tlLiteral("socialSpyMsgFormat", senderName, recipientName, message))); } else { - onlineUser.sendComponent(AdventureUtil.miniMessage().deserialize(tlLiteral("socialSpyPrefix") + tlLiteral("socialSpyMsgFormat", getDisplayName(), recipient.getDisplayName(), message))); + onlineUser.sendComponent(AdventureUtil.miniMessage().deserialize(tlLiteral("socialSpyPrefix") + tlLiteral("socialSpyMsgFormat", senderName, recipientName, message))); } } } diff --git a/Essentials/src/main/resources/config.yml b/Essentials/src/main/resources/config.yml index 201e5c15b..e477f037b 100644 --- a/Essentials/src/main/resources/config.yml +++ b/Essentials/src/main/resources/config.yml @@ -213,6 +213,10 @@ socialspy-listen-muted-players: true # If false, social spy will only monitor commands from the list above. socialspy-messages: true +# Whether social spy should use formatted display names which may include color. +# If false, social spy will use only the actual player names. +socialspy-uses-displaynames: true + # The following settings listen for when a player changes worlds. # If you use another plugin to control speed and flight, you should change these to false.