aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/chat/ChatListener.java7
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/chat/ChatParser.java7
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/chat/filters/AbilityFilter.java15
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/chat/filters/AdFilter.java43
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/chat/filters/AoteFilter.java15
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/chat/filters/HealFilter.java15
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/chat/filters/ImplosionFilter.java15
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/chat/filters/MoltenWaveFilter.java15
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/skyblock/ChatFilter.java53
9 files changed, 130 insertions, 55 deletions
diff --git a/src/main/java/me/xmrvizzy/skyblocker/chat/ChatListener.java b/src/main/java/me/xmrvizzy/skyblocker/chat/ChatListener.java
index 349229d9..e89d06c2 100644
--- a/src/main/java/me/xmrvizzy/skyblocker/chat/ChatListener.java
+++ b/src/main/java/me/xmrvizzy/skyblocker/chat/ChatListener.java
@@ -3,7 +3,8 @@ package me.xmrvizzy.skyblocker.chat;
import java.util.regex.Pattern;
public abstract class ChatListener {
- Pattern pattern;
+ protected static final String NUMBER = "-?[0-9]{1,3}(?>,[0-9]{3})*(?:\\.[1-9])?";
+ private Pattern pattern;
public ChatListener(String pattern) {
this.pattern = Pattern.compile(pattern);
}
@@ -13,5 +14,7 @@ public abstract class ChatListener {
public abstract boolean isEnabled();
//Returns whether message should get filtered
- public abstract boolean onMessage(String[] groups);
+ public boolean onMessage(String[] groups) {
+ return true;
+ }
}
diff --git a/src/main/java/me/xmrvizzy/skyblocker/chat/ChatParser.java b/src/main/java/me/xmrvizzy/skyblocker/chat/ChatParser.java
index f1a84fd1..38d291a0 100644
--- a/src/main/java/me/xmrvizzy/skyblocker/chat/ChatParser.java
+++ b/src/main/java/me/xmrvizzy/skyblocker/chat/ChatParser.java
@@ -1,5 +1,6 @@
package me.xmrvizzy.skyblocker.chat;
+import me.xmrvizzy.skyblocker.chat.filters.*;
import me.xmrvizzy.skyblocker.skyblock.dwarven.Fetchur;
import me.xmrvizzy.skyblocker.skyblock.dwarven.Puzzler;
@@ -7,6 +8,12 @@ import java.util.regex.Matcher;
public class ChatParser {
private final ChatListener[] listeners = new ChatListener[]{
+ new AoteFilter(),
+ new ImplosionFilter(),
+ new MoltenWaveFilter(),
+ new HealFilter(),
+ new AbilityFilter(),
+ new AdFilter(),
new Fetchur(),
new Puzzler(),
};
diff --git a/src/main/java/me/xmrvizzy/skyblocker/chat/filters/AbilityFilter.java b/src/main/java/me/xmrvizzy/skyblocker/chat/filters/AbilityFilter.java
new file mode 100644
index 00000000..0956e0e5
--- /dev/null
+++ b/src/main/java/me/xmrvizzy/skyblocker/chat/filters/AbilityFilter.java
@@ -0,0 +1,15 @@
+package me.xmrvizzy.skyblocker.chat.filters;
+
+import me.xmrvizzy.skyblocker.chat.ChatListener;
+import me.xmrvizzy.skyblocker.config.SkyblockerConfig;
+
+public class AbilityFilter extends ChatListener {
+ public AbilityFilter() {
+ super("^(?:This ability is on cooldown for " + NUMBER + "s\\.|No more charges, next one in " + NUMBER + "s!)$");
+ }
+
+ @Override
+ public boolean isEnabled() {
+ return SkyblockerConfig.get().messages.hideAbility;
+ }
+}
diff --git a/src/main/java/me/xmrvizzy/skyblocker/chat/filters/AdFilter.java b/src/main/java/me/xmrvizzy/skyblocker/chat/filters/AdFilter.java
new file mode 100644
index 00000000..ca4d989a
--- /dev/null
+++ b/src/main/java/me/xmrvizzy/skyblocker/chat/filters/AdFilter.java
@@ -0,0 +1,43 @@
+package me.xmrvizzy.skyblocker.chat.filters;
+
+import me.xmrvizzy.skyblocker.chat.ChatListener;
+import me.xmrvizzy.skyblocker.config.SkyblockerConfig;
+
+import java.util.regex.Pattern;
+
+public class AdFilter extends ChatListener {
+ private static final String regex;
+
+ public AdFilter() {
+ super(regex);
+ }
+
+ @Override
+ public boolean isEnabled() {
+ return SkyblockerConfig.get().messages.hideAds;
+ }
+
+ static {
+ StringBuilder sb = new StringBuilder("^§[67ab](?:\\[(?:MVP|VIP)(?:§[0-9a-f]\\+{1,2}§[6ab])?] )?([a-zA-Z0-9_]{2,16})§[7f]: ");
+ String[] inexact = new String[] {
+ "(?:on|in|check|at) my ah",
+ "(?>(.)\\1{7,})",
+ };
+ String[] exact = new String[]{
+ "(?:i(?:m|'m| am)? |(?:is )?any(?: ?one|1) )?(?:buy|sell|lowball|trade?)(?:ing)?(?:\\W.*|).*",
+ };
+ sb.append("(?:.*(?:");
+ sb.append(inexact[0]);
+ for(int i = 1; i < inexact.length; i++) {
+ sb.append("|");
+ sb.append(inexact[i]);
+ }
+ sb.append(").*");
+ for (String s : exact) {
+ sb.append("|");
+ sb.append(s);
+ }
+ sb.append(")$");
+ regex = sb.toString();
+ }
+} \ No newline at end of file
diff --git a/src/main/java/me/xmrvizzy/skyblocker/chat/filters/AoteFilter.java b/src/main/java/me/xmrvizzy/skyblocker/chat/filters/AoteFilter.java
new file mode 100644
index 00000000..6fa85f14
--- /dev/null
+++ b/src/main/java/me/xmrvizzy/skyblocker/chat/filters/AoteFilter.java
@@ -0,0 +1,15 @@
+package me.xmrvizzy.skyblocker.chat.filters;
+
+import me.xmrvizzy.skyblocker.chat.ChatListener;
+import me.xmrvizzy.skyblocker.config.SkyblockerConfig;
+
+public class AoteFilter extends ChatListener {
+ public AoteFilter() {
+ super("^There are blocks in the way!$");
+ }
+
+ @Override
+ public boolean isEnabled() {
+ return SkyblockerConfig.get().messages.hideAOTE;
+ }
+} \ No newline at end of file
diff --git a/src/main/java/me/xmrvizzy/skyblocker/chat/filters/HealFilter.java b/src/main/java/me/xmrvizzy/skyblocker/chat/filters/HealFilter.java
new file mode 100644
index 00000000..e8421a45
--- /dev/null
+++ b/src/main/java/me/xmrvizzy/skyblocker/chat/filters/HealFilter.java
@@ -0,0 +1,15 @@
+package me.xmrvizzy.skyblocker.chat.filters;
+
+import me.xmrvizzy.skyblocker.chat.ChatListener;
+import me.xmrvizzy.skyblocker.config.SkyblockerConfig;
+
+public class HealFilter extends ChatListener {
+ public HealFilter() {
+ super("^(?:You healed yourself for " + NUMBER + " health!|[a-zA-Z0-9_]{2,16} healed you for " + NUMBER + " health!)$");
+ }
+
+ @Override
+ public boolean isEnabled() {
+ return SkyblockerConfig.get().messages.hideHeal;
+ }
+}
diff --git a/src/main/java/me/xmrvizzy/skyblocker/chat/filters/ImplosionFilter.java b/src/main/java/me/xmrvizzy/skyblocker/chat/filters/ImplosionFilter.java
new file mode 100644
index 00000000..5bcaba57
--- /dev/null
+++ b/src/main/java/me/xmrvizzy/skyblocker/chat/filters/ImplosionFilter.java
@@ -0,0 +1,15 @@
+package me.xmrvizzy.skyblocker.chat.filters;
+
+import me.xmrvizzy.skyblocker.chat.ChatListener;
+import me.xmrvizzy.skyblocker.config.SkyblockerConfig;
+
+public class ImplosionFilter extends ChatListener {
+ public ImplosionFilter() {
+ super("^Your Implosion hit " + NUMBER + " enem(?:y|ies) for " + NUMBER + " damage\\.$");
+ }
+
+ @Override
+ public boolean isEnabled() {
+ return SkyblockerConfig.get().messages.hideImplosion;
+ }
+} \ No newline at end of file
diff --git a/src/main/java/me/xmrvizzy/skyblocker/chat/filters/MoltenWaveFilter.java b/src/main/java/me/xmrvizzy/skyblocker/chat/filters/MoltenWaveFilter.java
new file mode 100644
index 00000000..daa4b601
--- /dev/null
+++ b/src/main/java/me/xmrvizzy/skyblocker/chat/filters/MoltenWaveFilter.java
@@ -0,0 +1,15 @@
+package me.xmrvizzy.skyblocker.chat.filters;
+
+import me.xmrvizzy.skyblocker.chat.ChatListener;
+import me.xmrvizzy.skyblocker.config.SkyblockerConfig;
+
+public class MoltenWaveFilter extends ChatListener {
+ public MoltenWaveFilter() {
+ super("^Your Molten Wave hit " + NUMBER + " enemy(?:y|ies) for " + NUMBER + " damage\\.$");
+ }
+
+ @Override
+ public boolean isEnabled() {
+ return SkyblockerConfig.get().messages.hideMoltenWave;
+ }
+} \ No newline at end of file
diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/ChatFilter.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/ChatFilter.java
deleted file mode 100644
index 47f3716c..00000000
--- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/ChatFilter.java
+++ /dev/null
@@ -1,53 +0,0 @@
-package me.xmrvizzy.skyblocker.skyblock;
-
-import me.xmrvizzy.skyblocker.config.SkyblockerConfig;
-
-import java.util.regex.Matcher;
-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;
- private static final Pattern playerMessage;
- private static final Pattern adverts;
-
- public boolean shouldFilter(String message) {
- SkyblockerConfig.Messages settings = SkyblockerConfig.get().messages;
- if (settings.hideAbility && ability.matcher(message).matches())
- return true;
-
- if (settings.hideHeal && heal.matcher(message).matches())
- return true;
-
- if (settings.hideAOTE && aote.matcher(message).matches())
- return true;
-
- if (settings.hideImplosion && implosion.matcher(message).matches())
- return true;
-
- 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())
- 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\\.$");
- 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,})");
- }
-}