From 3aa0b09133acc6ff2a9a17bfc1c7bd3182678760 Mon Sep 17 00:00:00 2001
From: Len <40720638+destro174@users.noreply.github.com>
Date: Sat, 8 Oct 2022 11:05:56 +0200
Subject: [PATCH] Fix ChatFilter.java not applying to message.
---
.../com/alttd/chat/objects/ChatFilter.java | 13 +++-
.../alttd/chat/objects/ModifiableString.java | 30 +++++---
.../com/alttd/chat/handler/ChatHandler.java | 76 +++++++++++--------
.../alttd/chat/listeners/ChatListener.java | 6 +-
.../alttd/chat/listeners/PlayerListener.java | 6 +-
.../velocitychat/handlers/ChatHandler.java | 16 ++--
6 files changed, 91 insertions(+), 56 deletions(-)
diff --git a/api/src/main/java/com/alttd/chat/objects/ChatFilter.java b/api/src/main/java/com/alttd/chat/objects/ChatFilter.java
index f8f41f3..14dfc91 100755
--- a/api/src/main/java/com/alttd/chat/objects/ChatFilter.java
+++ b/api/src/main/java/com/alttd/chat/objects/ChatFilter.java
@@ -1,5 +1,10 @@
package com.alttd.chat.objects;
+import net.kyori.adventure.text.Component;
+import net.kyori.adventure.text.TextReplacementConfig;
+import net.kyori.adventure.text.format.NamedTextColor;
+import net.kyori.adventure.text.format.Style;
+
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
@@ -47,7 +52,13 @@ public class ChatFilter {
Matcher matcher = pattern.matcher(input);
while (matcher.find())
if (!isException(input, matcher.start())) {
- filterableString.string(filterableString.string().replaceFirst(matcher.group(), "" + matcher.group() + ""));
+// filterableString.string(filterableString.string().replaceFirst(matcher.group(), "" + matcher.group() + ""));
+ filterableString.string(filterableString.component()
+ .replaceText(
+ TextReplacementConfig.builder()
+ .match(matcher.pattern())
+ .replacement(Component.text(matcher.group()).style(Style.style(NamedTextColor.GOLD)))
+ .build()));
return true;
}
return matcher.matches();
diff --git a/api/src/main/java/com/alttd/chat/objects/ModifiableString.java b/api/src/main/java/com/alttd/chat/objects/ModifiableString.java
index ce9519f..70789a2 100644
--- a/api/src/main/java/com/alttd/chat/objects/ModifiableString.java
+++ b/api/src/main/java/com/alttd/chat/objects/ModifiableString.java
@@ -1,22 +1,34 @@
package com.alttd.chat.objects;
-public class ModifiableString {
- private String string;
+import net.kyori.adventure.text.Component;
+import net.kyori.adventure.text.TextReplacementConfig;
+import net.kyori.adventure.text.serializer.plain.PlainTextComponentSerializer;
- public ModifiableString(String string) {
- this.string = string;
+public class ModifiableString {
+ private Component text;
+
+ public ModifiableString(Component text) {
+ this.text = text;
}
- public void string(String string) {
- this.string = string;
+ public void string(Component text) {
+ this.text = text;
}
public void replace(String match, String replace) {
- while (string.contains(match))
- string = string.replace(match, replace);
+ text = text
+ .replaceText(
+ TextReplacementConfig.builder()
+ .matchLiteral(match)
+ .replacement(replace)
+ .build());
}
public String string() {
- return string;
+ return PlainTextComponentSerializer.plainText().serialize(text);
+ }
+
+ public Component component() {
+ return text;
}
}
diff --git a/galaxy/src/main/java/com/alttd/chat/handler/ChatHandler.java b/galaxy/src/main/java/com/alttd/chat/handler/ChatHandler.java
index 3882019..c0dfe2e 100755
--- a/galaxy/src/main/java/com/alttd/chat/handler/ChatHandler.java
+++ b/galaxy/src/main/java/com/alttd/chat/handler/ChatHandler.java
@@ -41,7 +41,16 @@ public class ChatHandler {
public void continuePrivateMessage(Player player, String target, String message) {
// ChatUser user = ChatUserManager.getChatUser(player.getUniqueId());
// user.setReplyTarget(target);
- ModifiableString modifiableString = new ModifiableString(message);
+
+ TagResolver placeholders = TagResolver.resolver(
+ Placeholder.component("message", parseMessageContent(player, message)),
+ Placeholder.component("sendername", player.name()),
+ Placeholder.parsed("receivername", target)
+ );
+
+ Component component = Utility.parseMiniMessage("", placeholders);
+
+ ModifiableString modifiableString = new ModifiableString(component);
// todo a better way for this
if(!RegexManager.filterText(player.getName(), player.getUniqueId(), modifiableString, "privatemessage")) {
GalaxyUtility.sendBlockedNotification("DM Language",
@@ -51,13 +60,7 @@ public class ChatHandler {
return; // the message was blocked
}
- TagResolver placeholders = TagResolver.resolver(
- Placeholder.component("message", parseMessageContent(player, message)),
- Placeholder.component("sendername", player.name()),
- Placeholder.parsed("receivername", target)
- );
-
- Component component = Utility.parseMiniMessage("", placeholders);
+ component = modifiableString.component();
sendPrivateMessage(player, target, "privatemessage", component);
Component spymessage = Utility.parseMiniMessage(Config.MESSAGESPY, placeholders);
@@ -71,7 +74,15 @@ public class ChatHandler {
public void privateMessage(Player player, String target, String message) {
// ChatUser user = ChatUserManager.getChatUser(player.getUniqueId());
// user.setReplyTarget(target);
- ModifiableString modifiableString = new ModifiableString(message);
+
+ Component messageComponent = parseMessageContent(player, message);
+ TagResolver placeholders = TagResolver.resolver(
+ Placeholder.component("message", messageComponent),
+ Placeholder.component("sendername", player.name()),
+ Placeholder.parsed("receivername", target)
+ );
+
+ ModifiableString modifiableString = new ModifiableString(messageComponent);
// todo a better way for this
if(!RegexManager.filterText(player.getName(), player.getUniqueId(), modifiableString, "privatemessage")) {
GalaxyUtility.sendBlockedNotification("DM Language",
@@ -81,12 +92,7 @@ public class ChatHandler {
return; // the message was blocked
}
- Component messageComponent = parseMessageContent(player, message);
- TagResolver placeholders = TagResolver.resolver(
- Placeholder.component("message", messageComponent),
- Placeholder.component("sendername", player.name()),
- Placeholder.parsed("receivername", target)
- );
+ messageComponent = modifiableString.component();
// Component component = Utility.parseMiniMessage("", placeholders)
// .replaceText(TextReplacementConfig.builder().once().matchLiteral("[i]").replacement(ChatHandler.itemComponent(player.getInventory().getItemInMainHand())).build());
@@ -120,16 +126,6 @@ public class ChatHandler {
Component senderName = user.getDisplayName();
Component prefix = user.getPrefix();
- ModifiableString modifiableString = new ModifiableString(message);
- // todo a better way for this
- if (!RegexManager.filterText(player.getName(), player.getUniqueId(), modifiableString, "globalchat")) {
- GalaxyUtility.sendBlockedNotification("GC Language",
- player,
- Utility.parseMiniMessage(Utility.parseColors(modifiableString.string())),
- "");
- return; // the message was blocked
- }
-
TagResolver placeholders = TagResolver.resolver(
Placeholder.component("sender", senderName),
Placeholder.component("prefix", prefix),
@@ -138,6 +134,18 @@ public class ChatHandler {
);
Component component = Utility.parseMiniMessage(Config.GCFORMAT, placeholders);
+
+ ModifiableString modifiableString = new ModifiableString(component);
+ // todo a better way for this
+ if (!RegexManager.filterText(player.getName(), player.getUniqueId(), modifiableString, "globalchat")) {
+ GalaxyUtility.sendBlockedNotification("GC Language",
+ player,
+ Utility.parseMiniMessage(Utility.parseColors(modifiableString.string())),
+ "");
+ return; // the message was blocked
+ }
+ component = modifiableString.component();
+
user.setGcCooldown(System.currentTimeMillis());
sendPluginMessage(player, "globalchat", component);
}
@@ -153,7 +161,15 @@ public class ChatHandler {
ChatUser user = ChatUserManager.getChatUser(player.getUniqueId());
Component senderName = user.getDisplayName();
- ModifiableString modifiableString = new ModifiableString(message);
+ TagResolver placeholders = TagResolver.resolver(
+ Placeholder.component("sender", senderName),
+ Placeholder.component("message", parseMessageContent(player, message)),
+ Placeholder.parsed("server", Bukkit.getServerName()),
+ Placeholder.parsed("channel", channel.getChannelName())
+ );
+ Component component = Utility.parseMiniMessage(channel.getFormat(), placeholders);
+
+ ModifiableString modifiableString = new ModifiableString(component);
if(!RegexManager.filterText(player.getName(), player.getUniqueId(), modifiableString, channel.getChannelName())) {
GalaxyUtility.sendBlockedNotification(channel.getChannelName() + " Language",
player,
@@ -162,13 +178,7 @@ public class ChatHandler {
return; // the message was blocked
}
- TagResolver placeholders = TagResolver.resolver(
- Placeholder.component("sender", senderName),
- Placeholder.component("message", parseMessageContent(player, message)),
- Placeholder.parsed("server", Bukkit.getServerName()),
- Placeholder.parsed("channel", channel.getChannelName())
- );
- Component component = Utility.parseMiniMessage(channel.getFormat(), placeholders);
+ component = modifiableString.component();
if (channel.isProxy()) {
sendChatChannelMessage(player, channel.getChannelName(), "chatchannel", component);
diff --git a/galaxy/src/main/java/com/alttd/chat/listeners/ChatListener.java b/galaxy/src/main/java/com/alttd/chat/listeners/ChatListener.java
index ca70031..f75e09a 100755
--- a/galaxy/src/main/java/com/alttd/chat/listeners/ChatListener.java
+++ b/galaxy/src/main/java/com/alttd/chat/listeners/ChatListener.java
@@ -77,8 +77,8 @@ public class ChatListener implements Listener {
.collect(Collectors.toSet());
Component input = event.message();
- String message = PlainTextComponentSerializer.plainText().serialize(input);
- ModifiableString modifiableString = new ModifiableString(message);
+
+ ModifiableString modifiableString = new ModifiableString(input);
// todo a better way for this
if(!RegexManager.filterText(player.getName(), player.getUniqueId(), modifiableString, "chat")) {
event.setCancelled(true);
@@ -88,7 +88,7 @@ public class ChatListener implements Listener {
return; // the message was blocked
}
- input = render(player, input);
+ input = render(player, modifiableString.component());
for (Player receiver : receivers) {
receiver.sendMessage(input);
}
diff --git a/galaxy/src/main/java/com/alttd/chat/listeners/PlayerListener.java b/galaxy/src/main/java/com/alttd/chat/listeners/PlayerListener.java
index 456d676..8fb749e 100755
--- a/galaxy/src/main/java/com/alttd/chat/listeners/PlayerListener.java
+++ b/galaxy/src/main/java/com/alttd/chat/listeners/PlayerListener.java
@@ -51,8 +51,7 @@ public class PlayerListener implements Listener {
for (int i = 0; i < 4; i++) {
Component component = event.line(i);
if (component != null) {
- String message = PlainTextComponentSerializer.plainText().serialize(component);
- ModifiableString modifiableString = new ModifiableString(message);
+ ModifiableString modifiableString = new ModifiableString(component);
Player player = event.getPlayer();
@@ -63,9 +62,8 @@ public class PlayerListener implements Listener {
Utility.parseMiniMessage(Utility.parseColors(modifiableString.string())),
"");
}
- message = modifiableString.string();
- component = message == null ? Component.empty() : Component.text(message);
+ component = modifiableString.component() == null ? Component.empty() : modifiableString.component();
event.line(i, component);
}
diff --git a/velocity/src/main/java/com/alttd/velocitychat/handlers/ChatHandler.java b/velocity/src/main/java/com/alttd/velocitychat/handlers/ChatHandler.java
index f3cefd0..3ac56da 100755
--- a/velocity/src/main/java/com/alttd/velocitychat/handlers/ChatHandler.java
+++ b/velocity/src/main/java/com/alttd/velocitychat/handlers/ChatHandler.java
@@ -122,11 +122,6 @@ public class ChatHandler {
return;
}
Component senderName = user.getDisplayName();
- ModifiableString modifiableString = new ModifiableString(message);
- if (!RegexManager.filterText(player.getUsername(), uuid, modifiableString, "party")) {
- sendBlockedNotification("Party Language", player, message, "", serverConnection);
- return; // the message was blocked
- }
TagResolver Placeholders = TagResolver.resolver(
Placeholder.component("sender", senderName),
@@ -137,7 +132,16 @@ public class ChatHandler {
);
Component partyMessage = Utility.parseMiniMessage(Config.PARTY_FORMAT, Placeholders)
- .replaceText(TextReplacementConfig.builder().once().matchLiteral("[i]").replacement(item).build());;
+ .replaceText(TextReplacementConfig.builder().once().matchLiteral("[i]").replacement(item).build());
+
+ ModifiableString modifiableString = new ModifiableString(partyMessage);
+ if (!RegexManager.filterText(player.getUsername(), uuid, modifiableString, "party")) {
+ sendBlockedNotification("Party Language", player, message, "", serverConnection);
+ return; // the message was blocked
+ }
+
+ partyMessage = modifiableString.component();
+
sendPartyMessage(party, partyMessage, user.getIgnoredBy());
Component spyMessage = Utility.parseMiniMessage(Config.PARTY_SPY, Placeholders);