From cbb012853c94fe035ddd04a3a1805d2b8e858207 Mon Sep 17 00:00:00 2001 From: Josh Roy <10731363+JRoy@users.noreply.github.com> Date: Wed, 29 Sep 2021 21:05:12 -0400 Subject: [PATCH] Fix toggleshout causing issues with question/local chat --- .../com/earth2me/essentials/chat/EssentialsChatPlayer.java | 7 ++++++- .../chat/EssentialsChatPlayerListenerNormal.java | 7 ++++++- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/EssentialsChat/src/main/java/com/earth2me/essentials/chat/EssentialsChatPlayer.java b/EssentialsChat/src/main/java/com/earth2me/essentials/chat/EssentialsChatPlayer.java index 6a3251f2c..32988091a 100644 --- a/EssentialsChat/src/main/java/com/earth2me/essentials/chat/EssentialsChatPlayer.java +++ b/EssentialsChat/src/main/java/com/earth2me/essentials/chat/EssentialsChatPlayer.java @@ -36,10 +36,15 @@ public abstract class EssentialsChatPlayer implements Listener { } final char prefix = message.charAt(0); - if (prefix == ess.getSettings().getChatShout() || user.isToggleShout()) { + if (prefix == ess.getSettings().getChatShout()) { + if (user.isToggleShout()) { + return ""; + } return message.length() > 1 ? "shout" : ""; } else if (ess.getSettings().isChatQuestionEnabled() && prefix == ess.getSettings().getChatQuestion()) { return message.length() > 1 ? "question" : ""; + } else if (user.isToggleShout()) { + return message.length() > 1 ? "shout" : ""; } else { return ""; } diff --git a/EssentialsChat/src/main/java/com/earth2me/essentials/chat/EssentialsChatPlayerListenerNormal.java b/EssentialsChat/src/main/java/com/earth2me/essentials/chat/EssentialsChatPlayerListenerNormal.java index 9fa34b672..a216a1e7f 100644 --- a/EssentialsChat/src/main/java/com/earth2me/essentials/chat/EssentialsChatPlayerListenerNormal.java +++ b/EssentialsChat/src/main/java/com/earth2me/essentials/chat/EssentialsChatPlayerListenerNormal.java @@ -50,12 +50,17 @@ public class EssentialsChatPlayerListenerNormal extends EssentialsChatPlayer { event.setCancelled(true); return; } + + if (user.isToggleShout() && event.getMessage().length() > 1 && event.getMessage().charAt(0) == ess.getSettings().getChatShout()) { + event.setMessage(event.getMessage().substring(1)); + } + event.getRecipients().removeIf(player -> !ess.getUser(player).isAuthorized("essentials.chat.receive.local")); } else { final String permission = "essentials.chat." + chatStore.getType(); if (user.isAuthorized(permission)) { - if (event.getMessage().charAt(0) == ess.getSettings().getChatShout() || event.getMessage().charAt(0) == ess.getSettings().getChatQuestion()) { + if (event.getMessage().charAt(0) == ess.getSettings().getChatShout() || (event.getMessage().charAt(0) == ess.getSettings().getChatQuestion() && ess.getSettings().isChatQuestionEnabled())) { event.setMessage(event.getMessage().substring(1)); } event.setFormat(tl(chatStore.getType() + "Format", event.getFormat()));