aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/me/xmrvizzy/skyblocker/chat/ChatParser.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/me/xmrvizzy/skyblocker/chat/ChatParser.java')
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/chat/ChatParser.java39
1 files changed, 39 insertions, 0 deletions
diff --git a/src/main/java/me/xmrvizzy/skyblocker/chat/ChatParser.java b/src/main/java/me/xmrvizzy/skyblocker/chat/ChatParser.java
new file mode 100644
index 00000000..9965c7c7
--- /dev/null
+++ b/src/main/java/me/xmrvizzy/skyblocker/chat/ChatParser.java
@@ -0,0 +1,39 @@
+package me.xmrvizzy.skyblocker.chat;
+
+import me.xmrvizzy.skyblocker.chat.filters.*;
+import me.xmrvizzy.skyblocker.skyblock.dungeon.ThreeWeirdos;
+import me.xmrvizzy.skyblocker.skyblock.dungeon.Trivia;
+import me.xmrvizzy.skyblocker.skyblock.dwarven.Fetchur;
+import me.xmrvizzy.skyblocker.skyblock.dwarven.Puzzler;
+
+import java.util.regex.Matcher;
+
+public class ChatParser {
+ private final ChatListener[] listeners = new ChatListener[]{
+ new ThreeWeirdos(),
+ new AoteFilter(),
+ new ImplosionFilter(),
+ new MoltenWaveFilter(),
+ new HealFilter(),
+ new AbilityFilter(),
+ new AdFilter(),
+ new Fetchur(),
+ new Puzzler(),
+ new Trivia(),
+ };
+
+ public boolean shouldFilter(String message) {
+ for (ChatListener listener : listeners) {
+ if (listener.isEnabled()) {
+ Matcher m = listener.getPattern().matcher(message);
+ if (m.matches()) {
+ String[] groups = new String[m.groupCount() + 1];
+ for (int i = 0; i < groups.length; i++)
+ groups[i] = m.group(i);
+ return listener.onMessage(groups);
+ }
+ }
+ }
+ return false;
+ }
+} \ No newline at end of file