From 1e0f7cb984bdbde969fc22f6de8424f3df7edfdb Mon Sep 17 00:00:00 2001 From: Josh Roy <10731363+JRoy@users.noreply.github.com> Date: Fri, 26 May 2023 21:48:10 -0400 Subject: [PATCH] Fix question and shout prefixes with toggle shout (#5367) --- .../chat/processing/AbstractChatHandler.java | 31 +++++++++++-------- 1 file changed, 18 insertions(+), 13 deletions(-) diff --git a/EssentialsChat/src/main/java/com/earth2me/essentials/chat/processing/AbstractChatHandler.java b/EssentialsChat/src/main/java/com/earth2me/essentials/chat/processing/AbstractChatHandler.java index aca765aa6..3a349a7ca 100644 --- a/EssentialsChat/src/main/java/com/earth2me/essentials/chat/processing/AbstractChatHandler.java +++ b/EssentialsChat/src/main/java/com/earth2me/essentials/chat/processing/AbstractChatHandler.java @@ -104,15 +104,13 @@ public abstract class AbstractChatHandler { // Local, shout and question chat types are only enabled when there's a valid radius if (chat.getRadius() > 0 && event.getMessage().length() > 0) { + if (event.getMessage().length() > 1 && ((chat.getType() == ChatType.SHOUT && event.getMessage().charAt(0) == ess.getSettings().getChatShout()) || (chat.getType() == ChatType.QUESTION && event.getMessage().charAt(0) == ess.getSettings().getChatQuestion()))) { + event.setMessage(event.getMessage().substring(1)); + } + if (chat.getType() == ChatType.UNKNOWN) { - if (user.isToggleShout() && event.getMessage().charAt(0) == ess.getSettings().getChatShout()) { - event.setMessage(event.getMessage().substring(1)); - } format = tl("chatTypeLocal").concat(format); } else { - if (event.getMessage().charAt(0) == ess.getSettings().getChatShout() || (event.getMessage().charAt(0) == ess.getSettings().getChatQuestion() && ess.getSettings().isChatQuestionEnabled())) { - event.setMessage(event.getMessage().substring(1)); - } format = tl(chat.getType().key() + "Format", format); } } @@ -293,16 +291,23 @@ public abstract class AbstractChatHandler { return ChatType.UNKNOWN; } + final char shoutPrefix = ess.getSettings().getChatShout(); + final char questionPrefix = ess.getSettings().getChatQuestion(); + final char prefix = message.charAt(0); - if (prefix == ess.getSettings().getChatShout()) { + final boolean singleChar = message.length() == 1; + + if (singleChar) { if (user.isToggleShout()) { - return ChatType.UNKNOWN; + return ChatType.SHOUT; } - return message.length() > 1 ? ChatType.SHOUT : ChatType.UNKNOWN; - } else if (ess.getSettings().isChatQuestionEnabled() && prefix == ess.getSettings().getChatQuestion()) { - return message.length() > 1 ? ChatType.QUESTION : ChatType.UNKNOWN; - } else if (user.isToggleShout()) { - return message.length() > 1 ? ChatType.SHOUT : ChatType.UNKNOWN; + return ChatType.UNKNOWN; + } + + if (prefix == questionPrefix && ess.getSettings().isChatQuestionEnabled()) { + return ChatType.QUESTION; + } else if (prefix == shoutPrefix || user.isToggleShout()) { + return ChatType.SHOUT; } else { return ChatType.UNKNOWN; }