diff options
Diffstat (limited to 'src/main')
-rw-r--r-- | src/main/java/me/xmrvizzy/skyblocker/chat/filters/AdFilter.java | 38 |
1 files changed, 12 insertions, 26 deletions
diff --git a/src/main/java/me/xmrvizzy/skyblocker/chat/filters/AdFilter.java b/src/main/java/me/xmrvizzy/skyblocker/chat/filters/AdFilter.java index 16cb5fc3..cf13e26e 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/chat/filters/AdFilter.java +++ b/src/main/java/me/xmrvizzy/skyblocker/chat/filters/AdFilter.java @@ -1,15 +1,17 @@ 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 ChatFilter { - private static final String regex; - + private static final Pattern[] AD_FILTERS = new Pattern[]{ + Pattern.compile("^(?:i(?:m|'m| am)? |(?:is )?any(?: ?one|1) )?(?:buy|sell|lowball|trade?)(?:ing)?(?:\\W|$)", Pattern.CASE_INSENSITIVE), + Pattern.compile("(.)\\1{7,}"), + Pattern.compile("\\W(?:on|in|check|at) my (?:ah|bin)(?:\\W|$)", Pattern.CASE_INSENSITIVE), + }; public AdFilter() { - super(regex); + super("^§[67ab](?:\\[(?:MVP|VIP)(?:§[0-9a-f]\\+{1,2}§[6ab])?] )?([a-zA-Z0-9_]{2,16})§[7f]: (.*)$"); } @Override @@ -17,27 +19,11 @@ public class AdFilter extends ChatFilter { 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", - "(?>(.)\\2{7,})", - }; - String[] exact = new String[]{ - "(?:i(?:m|'m| am)? |(?:is )?any(?: ?one|1) )?(?:buy|sell|lowball|trade?)(?:ing)?(?:\\W|).*", - }; - sb.append("(?i:.*(?:"); - 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(); + @Override + public boolean onMessage(String[] groups) { + for(Pattern adFilter : AD_FILTERS) + if(adFilter.matcher(groups[2]).find()) + return true; + return false; } }
\ No newline at end of file |