diff options
Diffstat (limited to 'src/main/java/me')
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,})"); - } -} |