From 3120240ac5659599de934b910dca8d5216f43325 Mon Sep 17 00:00:00 2001 From: Liam Date: Thu, 28 Mar 2024 19:42:14 +0000 Subject: [PATCH] add blocked reason to the message when it gets blocked --- .../java/cc/fascinated/chat/ChatManager.java | 21 +++++++++++++------ src/main/resources/lang.yml | 2 +- 2 files changed, 16 insertions(+), 7 deletions(-) diff --git a/src/main/java/cc/fascinated/chat/ChatManager.java b/src/main/java/cc/fascinated/chat/ChatManager.java index 0b8468c..0881ed1 100644 --- a/src/main/java/cc/fascinated/chat/ChatManager.java +++ b/src/main/java/cc/fascinated/chat/ChatManager.java @@ -7,6 +7,8 @@ import cc.fascinated.utils.Manager; import cc.fascinated.utils.MessageUtils; import cc.fascinated.utils.Style; import io.papermc.paper.event.player.AsyncChatEvent; +import lombok.Getter; +import lombok.RequiredArgsConstructor; import net.kyori.adventure.text.Component; import net.kyori.adventure.text.TextComponent; import net.kyori.adventure.text.event.ClickEvent; @@ -20,6 +22,14 @@ import java.util.HashMap; import java.util.List; import java.util.regex.Pattern; +@RequiredArgsConstructor @Getter +enum BlockReason { + DOMAIN("Domain was detected in the message."), + DUPLICATE("Duplicate message was detected."); + + private final String reason; +} + public class ChatManager extends Manager { private final HashMap lastMessage = new HashMap<>(); @@ -30,15 +40,14 @@ public class ChatManager extends Manager { Player player = event.getPlayer(); Account account = AccountManager.getAccount(player.getUniqueId()); NamedTextColor color = account.getPlayerColorProfile().getColor(); - - boolean blockedMessage = false; + BlockReason blockReason = null; TextComponent textComponent = (TextComponent) event.message(); String messageContent = textComponent.content(); // Check if the message contains a domain and is not the server's domain. if (domainPattern.matcher(messageContent).find() && !messageContent.contains("aetheria.cc")) { - blockedMessage = true; + blockReason = BlockReason.DOMAIN; MessageUtils.messageOps(Lang.BLOCKED_MESSAGE_ALERT.getAsString() .replace("%player%", account.getName()) .replace("%message%", messageContent) @@ -47,12 +56,12 @@ public class ChatManager extends Manager { // Block the message if it is the same as the last message sent. if (lastMessage.containsKey(account) && lastMessage.get(account).equalsIgnoreCase(messageContent)) { - blockedMessage = true; + blockReason = BlockReason.DUPLICATE; } - if (blockedMessage) { + if (blockReason != null) { event.setCancelled(true); - account.sendMessage(Lang.BLOCKED_MESSAGE.getAsString()); + account.sendMessage(Lang.BLOCKED_MESSAGE.getAsString().replace("%reason%", blockReason.getReason())); return; } diff --git a/src/main/resources/lang.yml b/src/main/resources/lang.yml index f695a79..acb37ce 100644 --- a/src/main/resources/lang.yml +++ b/src/main/resources/lang.yml @@ -2,7 +2,7 @@ prefix: "AETHERIA ยป " admin-prefix: "[ADMIN] " chat-format: "<<%chatcolor%>%name%> %message%" -blocked-message: "Your message has been blocked." +blocked-message: "Your message has been blocked." blocked-message-alert: "%player% tried to send a blocked message: %message%" help-command: