From fea0a7c2f963d033c8946b71d97c8c003f3f9878 Mon Sep 17 00:00:00 2001 From: Powie <88817288+Powie69@users.noreply.github.com> Date: Thu, 5 Jun 2025 11:16:52 +0800 Subject: [PATCH 1/2] ChatFilterModule improvements --- .../addon/modules/ChatFilterModule.java | 91 ++++++++++++------- 1 file changed, 58 insertions(+), 33 deletions(-) diff --git a/src/main/java/xyz/omegaware/addon/modules/ChatFilterModule.java b/src/main/java/xyz/omegaware/addon/modules/ChatFilterModule.java index eb43d67..70d073d 100644 --- a/src/main/java/xyz/omegaware/addon/modules/ChatFilterModule.java +++ b/src/main/java/xyz/omegaware/addon/modules/ChatFilterModule.java @@ -21,6 +21,7 @@ import java.io.IOException; import java.io.Writer; import java.nio.file.Files; +import java.util.List; import java.util.Set; public class ChatFilterModule extends Module { @@ -29,6 +30,9 @@ public ChatFilterModule() { } private final SettingGroup sgGeneral = this.settings.getDefaultGroup(); + private final SettingGroup sgIgnoredUsers = this.settings.createGroup("Ignored Users"); + private final SettingGroup sgMessageStartFlags = this.settings.createGroup("Message Start Flags"); + private final SettingGroup sgMessageContains = this.settings.createGroup("Message Contains"); private final Setting rankedOnly = sgGeneral.add(new BoolSetting.Builder() .name("ranked-users-only") @@ -44,30 +48,59 @@ public ChatFilterModule() { .build() ); - private final Setting ignoredUsers = sgGeneral.add(new StringSetting.Builder() - .name("filtered-users") - .description("A comma-separated list of users to filter.") - .defaultValue("user1,user2,user3") + private final Setting toggleIgnoredUsers = sgIgnoredUsers.add(new BoolSetting.Builder() + .name("toggle-ignored-users") + .description("Toggle ignoring of users.") + .defaultValue(true) + .build() + ); + + private final Setting> ignoredUsers = sgIgnoredUsers.add(new StringListSetting.Builder() + .name("filtered-users-list") + .description("A list of users to filter.") + .defaultValue(List.of("user1", "user2", "user3")) + .visible(toggleIgnoredUsers::get) + .build() + ); + + private final Setting toggleMessageStartFlags = sgMessageStartFlags.add(new BoolSetting.Builder() + .name("toggle-message-start-flags") + .description("Toggle filtering of messages that start with a selected flag.") + .defaultValue(true) .build() ); - private final Setting messageStartFlags = sgGeneral.add(new StringSetting.Builder() + private final Setting> messageStartFlags = sgMessageStartFlags.add(new StringListSetting.Builder() .name("message-start-flags") - .description("A comma-separated list of flags that will get a message filtered if they are at the start of a players message.") - .defaultValue("!,$,%,#,.,?") + .description("A list of flags that will get a message filtered if they are at the start of a players message.") + .defaultValue(List.of("!", "$", "%", "#", ".", "?")) + .visible(toggleMessageStartFlags::get) + .build() + ); + + private final Setting toggleMessageContainsFlags = sgMessageContains.add(new BoolSetting.Builder() + .name("toggle-message-contains-flags") + .description("Toggle filtering of messages that contain a selected flag.") + .defaultValue(true) .build() ); - private final Setting messageContainsFlags = sgGeneral.add(new StringSetting.Builder() + private final Setting> messageContainsFlags = sgMessageContains.add(new StringListSetting.Builder() .name("message-contains-flags") - .description("A comma-separated list of flags that will get a message filtered if they are contained in a players message.") - .defaultValue("discord,.gg,https://,aternos") + .description("A list of flags that will get a message filtered if they are contained in a players message.") + .defaultValue(List.of("discord", ".gg", "https://", "aternos")) + .visible(toggleMessageContainsFlags::get) .build() ); private static Integer filteredCount = 0; private boolean loaded = false; + private void incrementFilteredCount() { + filteredCount++; + saveFilteredCount(); + } + private void saveFilteredCount() { File configFile = OmegawareAddons.GetConfigFile("chat-filter", "filtered.count"); @@ -125,13 +158,15 @@ private void onMessageReceive(ReceiveMessageEvent event) { if ((message.startsWith("Welcome to 6b6t.org") || message.startsWith("You can vote! Type /vote") || message.startsWith("---------------------------")) && filterServerMessages.get()) { event.cancel(); - filteredCount++; - saveFilteredCount(); + incrementFilteredCount(); return; } if (!message.contains("»")) return; + String username = message.split(" » ")[0]; + if (username.equals(mc.player.getNameForScoreboard())) return; + boolean isRanked = false; if (message.startsWith("[")) { isRanked = true; @@ -140,43 +175,33 @@ private void onMessageReceive(ReceiveMessageEvent event) { if (rankedOnly.get() && !isRanked) { event.cancel(); - filteredCount++; - saveFilteredCount(); + incrementFilteredCount(); return; } - String username = message.split(" » ")[0]; - message = message.substring(message.indexOf("»") + 1).trim(); - - if (username.equals(mc.player.getNameForScoreboard())) return; - - Set ignoredUsersList = Set.of(ignoredUsers.get().split(",")); - if (!ignoredUsersList.isEmpty() && ignoredUsersList.contains(username)) { + if (toggleIgnoredUsers.get() && !ignoredUsers.get().isEmpty() && ignoredUsers.get().contains(username)) { event.cancel(); - filteredCount++; - saveFilteredCount(); + incrementFilteredCount(); return; } - Set messageStartFlagsList = Set.of(messageStartFlags.get().split(",")); - if (!messageStartFlagsList.isEmpty()) { - for (String flag : messageStartFlagsList) { + message = message.substring(message.indexOf("»") + 1).trim(); + + if (toggleMessageStartFlags.get() && !messageStartFlags.get().isEmpty()) { + for (String flag : messageStartFlags.get()) { if (message.startsWith(flag)) { event.cancel(); - filteredCount++; - saveFilteredCount(); + incrementFilteredCount(); return; } } } - Set messageContainsFlagsList = Set.of(messageContainsFlags.get().split(",")); - if (!messageContainsFlagsList.isEmpty()) { - for (String flag : messageContainsFlagsList) { + if (toggleMessageContainsFlags.get() && !messageContainsFlags.get().isEmpty()){ + for (String flag : messageContainsFlags.get()) { if (message.contains(flag)) { event.cancel(); - filteredCount++; - saveFilteredCount(); + incrementFilteredCount(); return; } } From bd43a8e4e728967ac9c1984f1af2b44a9acfe762 Mon Sep 17 00:00:00 2001 From: Powie <88817288+Powie69@users.noreply.github.com> Date: Thu, 5 Jun 2025 12:19:55 +0800 Subject: [PATCH 2/2] remove unused import --- src/main/java/xyz/omegaware/addon/modules/ChatFilterModule.java | 1 - 1 file changed, 1 deletion(-) diff --git a/src/main/java/xyz/omegaware/addon/modules/ChatFilterModule.java b/src/main/java/xyz/omegaware/addon/modules/ChatFilterModule.java index cf96719..d2e3543 100644 --- a/src/main/java/xyz/omegaware/addon/modules/ChatFilterModule.java +++ b/src/main/java/xyz/omegaware/addon/modules/ChatFilterModule.java @@ -22,7 +22,6 @@ import java.io.Writer; import java.nio.file.Files; import java.util.List; -import java.util.Set; public class ChatFilterModule extends Module { public ChatFilterModule() {