From c62cb964e2c61fb5bdbc0b4bb5c626029c68a727 Mon Sep 17 00:00:00 2001 From: ExternalTime <84183548+ExternalTime@users.noreply.github.com> Date: Mon, 6 Sep 2021 12:54:02 +0200 Subject: Moved chat filtering out of a mixin --- .../skyblocker/mixin/ChatHudListenerMixin.java | 24 +++---------------- .../xmrvizzy/skyblocker/skyblock/ChatFilter.java | 28 ++++++++++++++++++++++ 2 files changed, 31 insertions(+), 21 deletions(-) create mode 100644 src/main/java/me/xmrvizzy/skyblocker/skyblock/ChatFilter.java (limited to 'src/main/java/me') diff --git a/src/main/java/me/xmrvizzy/skyblocker/mixin/ChatHudListenerMixin.java b/src/main/java/me/xmrvizzy/skyblocker/mixin/ChatHudListenerMixin.java index f9ed014a..c22364d6 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/mixin/ChatHudListenerMixin.java +++ b/src/main/java/me/xmrvizzy/skyblocker/mixin/ChatHudListenerMixin.java @@ -1,6 +1,7 @@ package me.xmrvizzy.skyblocker.mixin; import me.xmrvizzy.skyblocker.config.SkyblockerConfig; +import me.xmrvizzy.skyblocker.skyblock.ChatFilter; import me.xmrvizzy.skyblocker.skyblock.dungeon.DungeonPuzzles; import me.xmrvizzy.skyblocker.skyblock.dwarven.Fetchur; import me.xmrvizzy.skyblocker.skyblock.dwarven.Puzzler; @@ -23,6 +24,7 @@ import java.util.UUID; public class ChatHudListenerMixin { @Shadow @Final private MinecraftClient client; + private final ChatFilter filter = new ChatFilter(); @Inject(method = "onChatMessage", at = @At("HEAD"), cancellable = true) public void onMessage(MessageType messageType, Text message, UUID senderUuid, CallbackInfo ci) { @@ -56,27 +58,7 @@ public class ChatHudListenerMixin { Puzzler.solve(msg); } - if (SkyblockerConfig.get().messages.hideAbility && ( - msg.contains("This ability is currently on cooldown for ") || - msg.contains("No more charges, next one in ") || - msg.contains("This ability is on cooldown for "))) - ci.cancel(); - - if (SkyblockerConfig.get().messages.hideHeal && ( - msg.contains("You healed ") && - msg.contains(" health!") || msg.contains(" healed you for "))) - ci.cancel(); - - if (SkyblockerConfig.get().messages.hideAOTE && - msg.contains("There are blocks in the way!")) - ci.cancel(); - - if (SkyblockerConfig.get().messages.hideImplosion && - msg.contains("Your Implosion hit ")) - ci.cancel(); - - if (SkyblockerConfig.get().messages.hideMoltenWave && - msg.contains("Your Molten Wave hit ")) + if(filter.shouldFilter(msg)) ci.cancel(); } } diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/ChatFilter.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/ChatFilter.java new file mode 100644 index 00000000..99d0cb08 --- /dev/null +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/ChatFilter.java @@ -0,0 +1,28 @@ +package me.xmrvizzy.skyblocker.skyblock; + +import me.xmrvizzy.skyblocker.config.SkyblockerConfig; + + +public class ChatFilter { + public boolean shouldFilter(String message) { + SkyblockerConfig.Messages settings = SkyblockerConfig.get().messages; + if (settings.hideAbility && (message.contains("This ability is currently on cooldown for ") || + message.contains("No more charges, next one in ") || + message.contains("This ability is on cooldown for "))) + return true; + + if (settings.hideHeal && (message.contains("You healed ") && + message.contains(" health!") || message.contains(" healed you for "))) + return true; + + if (settings.hideAOTE && message.contains("There are blocks in the way!")) + return true; + + if (settings.hideImplosion && message.contains("Your Implosion hit ")) + return true; + + if (settings.hideMoltenWave && message.contains("Your Molten Wave hit ")) + return true; + return false; + } +} -- cgit From 18f37f9c1206de3c2ad66fa4da164d706b2f37e0 Mon Sep 17 00:00:00 2001 From: ExternalTime <84183548+ExternalTime@users.noreply.github.com> Date: Mon, 6 Sep 2021 13:05:14 +0200 Subject: Changed chat filter to use regexes --- .../xmrvizzy/skyblocker/skyblock/ChatFilter.java | 30 ++++++++++++++++------ 1 file changed, 22 insertions(+), 8 deletions(-) (limited to 'src/main/java/me') diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/ChatFilter.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/ChatFilter.java index 99d0cb08..3b80a9af 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/ChatFilter.java +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/ChatFilter.java @@ -2,27 +2,41 @@ package me.xmrvizzy.skyblocker.skyblock; import me.xmrvizzy.skyblocker.config.SkyblockerConfig; +import java.util.regex.Pattern; + public class ChatFilter { + private static final Pattern ability; + private static final Pattern heal; + private static final Pattern aote; + private static final Pattern implosion; + private static final Pattern moltenWave; + public boolean shouldFilter(String message) { SkyblockerConfig.Messages settings = SkyblockerConfig.get().messages; - if (settings.hideAbility && (message.contains("This ability is currently on cooldown for ") || - message.contains("No more charges, next one in ") || - message.contains("This ability is on cooldown for "))) + if (settings.hideAbility && ability.matcher(message).matches()) return true; - if (settings.hideHeal && (message.contains("You healed ") && - message.contains(" health!") || message.contains(" healed you for "))) + if (settings.hideHeal && heal.matcher(message).matches()) return true; - if (settings.hideAOTE && message.contains("There are blocks in the way!")) + if (settings.hideAOTE && aote.matcher(message).matches()) return true; - if (settings.hideImplosion && message.contains("Your Implosion hit ")) + if (settings.hideImplosion && implosion.matcher(message).matches()) return true; - if (settings.hideMoltenWave && message.contains("Your Molten Wave hit ")) + if (settings.hideMoltenWave && moltenWave.matcher(message).matches()) return true; return false; } + + static { + String number = "-?[0-9]{1,3}(?>,[0-9]{3})*(?:\\.[1-9])?"; + ability = Pattern.compile("^(?:This ability is on cooldown for " + number + "s\\.|No more charges, next one in " + number + "s!)$"); + heal = Pattern.compile("^(?:You healed yourself for " + number + " health!|[a-zA-Z0-9_]{2,16} healed you for " + number + " health!)$"); + aote = Pattern.compile("^There are blocks in the way!$"); + implosion = Pattern.compile("^Your Implosion hit " + number + " enem(?:y|ies) for " + number + " damage\\.$"); + moltenWave = Pattern.compile("^Your Molten Wave hit " + number + " enemy(?:y|ies) for " + number + " damage\\.$"); + } } -- cgit From 00a7f4e3a56255864c46a827091989a34a2a4058 Mon Sep 17 00:00:00 2001 From: ExternalTime <84183548+ExternalTime@users.noreply.github.com> Date: Wed, 8 Sep 2021 18:17:20 +0200 Subject: Added simple spam filter --- .../me/xmrvizzy/skyblocker/config/SkyblockerConfig.java | 1 + .../java/me/xmrvizzy/skyblocker/skyblock/ChatFilter.java | 13 +++++++++++++ src/main/resources/assets/skyblocker/lang/en_us.json | 3 ++- 3 files changed, 16 insertions(+), 1 deletion(-) (limited to 'src/main/java/me') diff --git a/src/main/java/me/xmrvizzy/skyblocker/config/SkyblockerConfig.java b/src/main/java/me/xmrvizzy/skyblocker/config/SkyblockerConfig.java index 0bda79d6..48fefa24 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/config/SkyblockerConfig.java +++ b/src/main/java/me/xmrvizzy/skyblocker/config/SkyblockerConfig.java @@ -66,6 +66,7 @@ public class SkyblockerConfig implements ConfigData { public boolean hideAOTE = false; public boolean hideImplosion = false; public boolean hideMoltenWave = false; + public boolean hideAds = false; } public static void init() { diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/ChatFilter.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/ChatFilter.java index 3b80a9af..00f2dfb6 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/ChatFilter.java +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/ChatFilter.java @@ -2,6 +2,7 @@ package me.xmrvizzy.skyblocker.skyblock; import me.xmrvizzy.skyblocker.config.SkyblockerConfig; +import java.util.regex.Matcher; import java.util.regex.Pattern; @@ -11,6 +12,8 @@ public class ChatFilter { private static final Pattern aote; private static final Pattern implosion; private static final Pattern moltenWave; + private static final Pattern playerMessage; + private static final Pattern adverts; public boolean shouldFilter(String message) { SkyblockerConfig.Messages settings = SkyblockerConfig.get().messages; @@ -28,6 +31,14 @@ public class ChatFilter { if (settings.hideMoltenWave && moltenWave.matcher(message).matches()) return true; + + if (settings.hideAds) { + Matcher m = playerMessage.matcher(message); + if(m.matches() && adverts.matcher(m.group(2)).find()) { + System.out.println(m.group(2)); + return true; + } + } return false; } @@ -38,5 +49,7 @@ public class ChatFilter { aote = Pattern.compile("^There are blocks in the way!$"); implosion = Pattern.compile("^Your Implosion hit " + number + " enem(?:y|ies) for " + number + " damage\\.$"); moltenWave = Pattern.compile("^Your Molten Wave hit " + number + " enemy(?:y|ies) for " + number + " damage\\.$"); + playerMessage = Pattern.compile("^§[67ab](?:\\[(?:MVP|VIP)(?:§[0-9a-f]\\+{1,2}§[6ab])?] )?([a-zA-Z0-9_]{2,16})§[7f]: (.*)$"); + adverts = Pattern.compile("(?i:^(?:i(?:m|'m| am)? |(?:is )?any(?: ?one|1) )?(?:buy|sell|lowball|trade?)(?:ing)?\\W|(?:\\W|^)(?:on|in|check|at) my ah(?:\\W|$)|(.)\\1{7,})"); } } diff --git a/src/main/resources/assets/skyblocker/lang/en_us.json b/src/main/resources/assets/skyblocker/lang/en_us.json index b716764b..14882563 100644 --- a/src/main/resources/assets/skyblocker/lang/en_us.json +++ b/src/main/resources/assets/skyblocker/lang/en_us.json @@ -23,5 +23,6 @@ "text.autoconfig.skyblocker.option.messages.hideHeal": "Hide Heal Messages", "text.autoconfig.skyblocker.option.messages.hideAOTE": "Hide AOTE Messages", "text.autoconfig.skyblocker.option.messages.hideImplosion": "Hide Implosion Message", - "text.autoconfig.skyblocker.option.messages.hideMoltenWave": "Hide Molten Wave Message" + "text.autoconfig.skyblocker.option.messages.hideMoltenWave": "Hide Molten Wave Message", + "text.autoconfig.skyblocker.option.messages.hideAds": "Hide Ads From Public Chat" } \ No newline at end of file -- cgit From 578e81734233b8db52c78bfec732e477fd7e0e90 Mon Sep 17 00:00:00 2001 From: ExternalTime <84183548+ExternalTime@users.noreply.github.com> Date: Thu, 9 Sep 2021 13:25:35 +0200 Subject: Removed printing chat messages caught by the spam filter. --- src/main/java/me/xmrvizzy/skyblocker/skyblock/ChatFilter.java | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) (limited to 'src/main/java/me') diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/ChatFilter.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/ChatFilter.java index 00f2dfb6..47f3716c 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/ChatFilter.java +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/ChatFilter.java @@ -34,10 +34,8 @@ public class ChatFilter { if (settings.hideAds) { Matcher m = playerMessage.matcher(message); - if(m.matches() && adverts.matcher(m.group(2)).find()) { - System.out.println(m.group(2)); + if(m.matches() && adverts.matcher(m.group(2)).find()) return true; - } } return false; } -- cgit