From bc565c0e0bfbc5e87af8191519980a440da5bfa4 Mon Sep 17 00:00:00 2001 From: ExternalTime <84183548+ExternalTime@users.noreply.github.com> Date: Sat, 18 Sep 2021 19:58:41 +0200 Subject: Created an interface for listening to chat messages --- .../me/xmrvizzy/skyblocker/chat/ChatListener.java | 17 ++++++++++++++++ .../me/xmrvizzy/skyblocker/chat/ChatParser.java | 23 ++++++++++++++++++++++ 2 files changed, 40 insertions(+) create mode 100644 src/main/java/me/xmrvizzy/skyblocker/chat/ChatListener.java create mode 100644 src/main/java/me/xmrvizzy/skyblocker/chat/ChatParser.java (limited to 'src/main/java/me/xmrvizzy/skyblocker/chat') diff --git a/src/main/java/me/xmrvizzy/skyblocker/chat/ChatListener.java b/src/main/java/me/xmrvizzy/skyblocker/chat/ChatListener.java new file mode 100644 index 00000000..349229d9 --- /dev/null +++ b/src/main/java/me/xmrvizzy/skyblocker/chat/ChatListener.java @@ -0,0 +1,17 @@ +package me.xmrvizzy.skyblocker.chat; + +import java.util.regex.Pattern; + +public abstract class ChatListener { + Pattern pattern; + public ChatListener(String pattern) { + this.pattern = Pattern.compile(pattern); + } + public Pattern getPattern() { + return pattern; + } + + public abstract boolean isEnabled(); + //Returns whether message should get filtered + public abstract boolean onMessage(String[] groups); +} 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..5c431678 --- /dev/null +++ b/src/main/java/me/xmrvizzy/skyblocker/chat/ChatParser.java @@ -0,0 +1,23 @@ +package me.xmrvizzy.skyblocker.chat; + +import java.util.regex.Matcher; + +public class ChatParser { + private final ChatListener[] listeners = new ChatListener[] { + }; + + 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 -- cgit From 7e1c129bb48d8e54bc6dd695d2408641caf86a27 Mon Sep 17 00:00:00 2001 From: ExternalTime <84183548+ExternalTime@users.noreply.github.com> Date: Sat, 18 Sep 2021 21:45:16 +0200 Subject: Rewrote Fetchur solver to use the new interface --- src/main/java/me/xmrvizzy/skyblocker/chat/ChatParser.java | 3 +++ 1 file changed, 3 insertions(+) (limited to 'src/main/java/me/xmrvizzy/skyblocker/chat') diff --git a/src/main/java/me/xmrvizzy/skyblocker/chat/ChatParser.java b/src/main/java/me/xmrvizzy/skyblocker/chat/ChatParser.java index 5c431678..17a5c4e5 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/chat/ChatParser.java +++ b/src/main/java/me/xmrvizzy/skyblocker/chat/ChatParser.java @@ -1,9 +1,12 @@ package me.xmrvizzy.skyblocker.chat; +import me.xmrvizzy.skyblocker.skyblock.dwarven.Fetchur; + import java.util.regex.Matcher; public class ChatParser { private final ChatListener[] listeners = new ChatListener[] { + new Fetchur(), }; public boolean shouldFilter(String message) { -- cgit From af186a88972a6070efbdefa7aac557316b5012aa Mon Sep 17 00:00:00 2001 From: ExternalTime <84183548+ExternalTime@users.noreply.github.com> Date: Sat, 18 Sep 2021 22:34:35 +0200 Subject: Rewrote Puzzler solver to use the new chat interface --- src/main/java/me/xmrvizzy/skyblocker/chat/ChatParser.java | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) (limited to 'src/main/java/me/xmrvizzy/skyblocker/chat') diff --git a/src/main/java/me/xmrvizzy/skyblocker/chat/ChatParser.java b/src/main/java/me/xmrvizzy/skyblocker/chat/ChatParser.java index 17a5c4e5..f1a84fd1 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/chat/ChatParser.java +++ b/src/main/java/me/xmrvizzy/skyblocker/chat/ChatParser.java @@ -1,17 +1,19 @@ package me.xmrvizzy.skyblocker.chat; 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 Fetchur(), + private final ChatListener[] listeners = new ChatListener[]{ + new Fetchur(), + new Puzzler(), }; public boolean shouldFilter(String message) { for (ChatListener listener : listeners) { - if(listener.isEnabled()) { + if (listener.isEnabled()) { Matcher m = listener.getPattern().matcher(message); if (m.matches()) { String[] groups = new String[m.groupCount() + 1]; -- cgit From 2321e34939368981c24dce4f8ac751a7ac16b4d9 Mon Sep 17 00:00:00 2001 From: ExternalTime <84183548+ExternalTime@users.noreply.github.com> Date: Sun, 19 Sep 2021 14:39:51 +0200 Subject: Rewrote chat filters to use the new chat interface --- .../me/xmrvizzy/skyblocker/chat/ChatListener.java | 7 +++- .../me/xmrvizzy/skyblocker/chat/ChatParser.java | 7 ++++ .../skyblocker/chat/filters/AbilityFilter.java | 15 ++++++++ .../xmrvizzy/skyblocker/chat/filters/AdFilter.java | 43 ++++++++++++++++++++++ .../skyblocker/chat/filters/AoteFilter.java | 15 ++++++++ .../skyblocker/chat/filters/HealFilter.java | 15 ++++++++ .../skyblocker/chat/filters/ImplosionFilter.java | 15 ++++++++ .../skyblocker/chat/filters/MoltenWaveFilter.java | 15 ++++++++ 8 files changed, 130 insertions(+), 2 deletions(-) create mode 100644 src/main/java/me/xmrvizzy/skyblocker/chat/filters/AbilityFilter.java create mode 100644 src/main/java/me/xmrvizzy/skyblocker/chat/filters/AdFilter.java create mode 100644 src/main/java/me/xmrvizzy/skyblocker/chat/filters/AoteFilter.java create mode 100644 src/main/java/me/xmrvizzy/skyblocker/chat/filters/HealFilter.java create mode 100644 src/main/java/me/xmrvizzy/skyblocker/chat/filters/ImplosionFilter.java create mode 100644 src/main/java/me/xmrvizzy/skyblocker/chat/filters/MoltenWaveFilter.java (limited to 'src/main/java/me/xmrvizzy/skyblocker/chat') 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 -- cgit From 83747a8bb2553aef5acc5988727de752bac55ffc Mon Sep 17 00:00:00 2001 From: ExternalTime <84183548+ExternalTime@users.noreply.github.com> Date: Sun, 19 Sep 2021 17:21:53 +0200 Subject: Rewrote Three Weirdos solver to use the new interface --- src/main/java/me/xmrvizzy/skyblocker/chat/ChatParser.java | 2 ++ 1 file changed, 2 insertions(+) (limited to 'src/main/java/me/xmrvizzy/skyblocker/chat') diff --git a/src/main/java/me/xmrvizzy/skyblocker/chat/ChatParser.java b/src/main/java/me/xmrvizzy/skyblocker/chat/ChatParser.java index 38d291a0..a74138ce 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/chat/ChatParser.java +++ b/src/main/java/me/xmrvizzy/skyblocker/chat/ChatParser.java @@ -1,6 +1,7 @@ package me.xmrvizzy.skyblocker.chat; import me.xmrvizzy.skyblocker.chat.filters.*; +import me.xmrvizzy.skyblocker.skyblock.dungeon.ThreeWeirdos; import me.xmrvizzy.skyblocker.skyblock.dwarven.Fetchur; import me.xmrvizzy.skyblocker.skyblock.dwarven.Puzzler; @@ -8,6 +9,7 @@ import java.util.regex.Matcher; public class ChatParser { private final ChatListener[] listeners = new ChatListener[]{ + new ThreeWeirdos(), new AoteFilter(), new ImplosionFilter(), new MoltenWaveFilter(), -- cgit From a0feb55973fc3eb4be4ae0ae2c76c88c9cd9f200 Mon Sep 17 00:00:00 2001 From: ExternalTime <84183548+ExternalTime@users.noreply.github.com> Date: Sun, 19 Sep 2021 18:10:00 +0200 Subject: Rewrote Trivia solver to use the new interface --- src/main/java/me/xmrvizzy/skyblocker/chat/ChatParser.java | 2 ++ 1 file changed, 2 insertions(+) (limited to 'src/main/java/me/xmrvizzy/skyblocker/chat') diff --git a/src/main/java/me/xmrvizzy/skyblocker/chat/ChatParser.java b/src/main/java/me/xmrvizzy/skyblocker/chat/ChatParser.java index a74138ce..9965c7c7 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/chat/ChatParser.java +++ b/src/main/java/me/xmrvizzy/skyblocker/chat/ChatParser.java @@ -2,6 +2,7 @@ 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; @@ -18,6 +19,7 @@ public class ChatParser { new AdFilter(), new Fetchur(), new Puzzler(), + new Trivia(), }; public boolean shouldFilter(String message) { -- cgit