From f2553cef257df3e52a131ed919dc015ce2a1a5d4 Mon Sep 17 00:00:00 2001 From: ExternalTime <84183548+ExternalTime@users.noreply.github.com> Date: Tue, 8 Mar 2022 15:12:02 +0100 Subject: Rewrote chat events interface to use fabric events API --- .../xmrvizzy/skyblocker/SkyblockerInitializer.java | 2 + .../xmrvizzy/skyblocker/chat/ChatFilterResult.java | 20 +++++++++ .../me/xmrvizzy/skyblocker/chat/ChatListener.java | 18 -------- .../skyblocker/chat/ChatMessageListener.java | 48 ++++++++++++++++++++++ .../me/xmrvizzy/skyblocker/chat/ChatParser.java | 45 -------------------- .../skyblocker/chat/ChatPatternListener.java | 30 ++++++++++++++ .../skyblocker/chat/filters/SimpleChatFilter.java | 17 ++++++++ .../skyblocker/mixin/ChatHudListenerMixin.java | 24 +++++++++-- 8 files changed, 137 insertions(+), 67 deletions(-) create mode 100644 src/main/java/me/xmrvizzy/skyblocker/chat/ChatFilterResult.java delete mode 100644 src/main/java/me/xmrvizzy/skyblocker/chat/ChatListener.java create mode 100644 src/main/java/me/xmrvizzy/skyblocker/chat/ChatMessageListener.java delete mode 100644 src/main/java/me/xmrvizzy/skyblocker/chat/ChatParser.java create mode 100644 src/main/java/me/xmrvizzy/skyblocker/chat/ChatPatternListener.java create mode 100644 src/main/java/me/xmrvizzy/skyblocker/chat/filters/SimpleChatFilter.java diff --git a/src/main/java/me/xmrvizzy/skyblocker/SkyblockerInitializer.java b/src/main/java/me/xmrvizzy/skyblocker/SkyblockerInitializer.java index e1d1b612..be0bb0dd 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/SkyblockerInitializer.java +++ b/src/main/java/me/xmrvizzy/skyblocker/SkyblockerInitializer.java @@ -1,5 +1,6 @@ package me.xmrvizzy.skyblocker; +import me.xmrvizzy.skyblocker.chat.ChatMessageListener; import me.xmrvizzy.skyblocker.config.SkyblockerConfig; import me.xmrvizzy.skyblocker.skyblock.HotbarSlotLock; import me.xmrvizzy.skyblocker.skyblock.api.StatsCommand; @@ -17,5 +18,6 @@ public class SkyblockerInitializer implements ClientModInitializer { WikiLookup.init(); ItemRegistry.init(); StatsCommand.init(); + ChatMessageListener.init(); } } diff --git a/src/main/java/me/xmrvizzy/skyblocker/chat/ChatFilterResult.java b/src/main/java/me/xmrvizzy/skyblocker/chat/ChatFilterResult.java new file mode 100644 index 00000000..0a31409a --- /dev/null +++ b/src/main/java/me/xmrvizzy/skyblocker/chat/ChatFilterResult.java @@ -0,0 +1,20 @@ +package me.xmrvizzy.skyblocker.chat; + +public enum ChatFilterResult { + // Skip this one / no action + PASS, + // Filter + FILTER, + // Move to action bar + ACTION_BAR; + // Skip remaining checks, don't filter + // null + + public String toString() { + return switch (this) { + case PASS -> "Disabled"; + case FILTER -> "Filter"; + case ACTION_BAR -> "Move to action bar"; + }; + } +} diff --git a/src/main/java/me/xmrvizzy/skyblocker/chat/ChatListener.java b/src/main/java/me/xmrvizzy/skyblocker/chat/ChatListener.java deleted file mode 100644 index 84034f41..00000000 --- a/src/main/java/me/xmrvizzy/skyblocker/chat/ChatListener.java +++ /dev/null @@ -1,18 +0,0 @@ -package me.xmrvizzy.skyblocker.chat; - -import java.util.regex.Pattern; - -public abstract class ChatListener { - 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); - } - 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/ChatMessageListener.java b/src/main/java/me/xmrvizzy/skyblocker/chat/ChatMessageListener.java new file mode 100644 index 00000000..9fa72398 --- /dev/null +++ b/src/main/java/me/xmrvizzy/skyblocker/chat/ChatMessageListener.java @@ -0,0 +1,48 @@ +package me.xmrvizzy.skyblocker.chat; + +import me.xmrvizzy.skyblocker.chat.filters.*; +import me.xmrvizzy.skyblocker.skyblock.api.ApiKeyListener; +import me.xmrvizzy.skyblocker.skyblock.dungeon.Reparty; +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 net.fabricmc.fabric.api.event.Event; +import net.fabricmc.fabric.api.event.EventFactory; +import net.minecraft.text.Text; + +public interface ChatMessageListener { + Event EVENT = EventFactory.createArrayBacked(ChatMessageListener.class, + (listeners) -> (message, asString) -> { + for (ChatMessageListener listener : listeners) { + ChatFilterResult result = listener.onMessage(message, asString); + if (result != ChatFilterResult.PASS) return result; + } + return ChatFilterResult.PASS; + }); + + static void init() { + ChatMessageListener[] listeners = new ChatMessageListener[]{ + // Features + new ApiKeyListener(), + new Fetchur(), + new Puzzler(), + new Reparty(), + new ThreeWeirdos(), + new Trivia(), + // Filters + new AbilityFilter(), + new AdFilter(), + new AoteFilter(), + new ComboFilter(), + new HealFilter(), + new ImplosionFilter(), + new MoltenWaveFilter(), + new TeleportPadFilter(), + }; + for (ChatMessageListener listener : listeners) + EVENT.register(listener); + } + + ChatFilterResult onMessage(Text message, String asString); +} diff --git a/src/main/java/me/xmrvizzy/skyblocker/chat/ChatParser.java b/src/main/java/me/xmrvizzy/skyblocker/chat/ChatParser.java deleted file mode 100644 index 92618305..00000000 --- a/src/main/java/me/xmrvizzy/skyblocker/chat/ChatParser.java +++ /dev/null @@ -1,45 +0,0 @@ -package me.xmrvizzy.skyblocker.chat; - -import me.xmrvizzy.skyblocker.chat.filters.*; -import me.xmrvizzy.skyblocker.skyblock.api.ApiKeyListener; -import me.xmrvizzy.skyblocker.skyblock.dungeon.Reparty; -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 static ChatListener[] listeners = new ChatListener[]{ - new Reparty(), - new ThreeWeirdos(), - new AoteFilter(), - new ImplosionFilter(), - new MoltenWaveFilter(), - new HealFilter(), - new AbilityFilter(), - new AdFilter(), - new TeleportPadFilter(), - new ComboFilter(), - new Fetchur(), - new Puzzler(), - new Trivia(), - new ApiKeyListener() - }; - - 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 diff --git a/src/main/java/me/xmrvizzy/skyblocker/chat/ChatPatternListener.java b/src/main/java/me/xmrvizzy/skyblocker/chat/ChatPatternListener.java new file mode 100644 index 00000000..19237de4 --- /dev/null +++ b/src/main/java/me/xmrvizzy/skyblocker/chat/ChatPatternListener.java @@ -0,0 +1,30 @@ +package me.xmrvizzy.skyblocker.chat; + +import net.minecraft.text.Text; + +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +public abstract class ChatPatternListener implements ChatMessageListener { + protected static String NUMBER = "-?[0-9]{1,3}(?>,[0-9]{3})*(?:\\.[1-9])?"; + public final Pattern pattern; + + public ChatPatternListener(String pattern) { + this.pattern = Pattern.compile(pattern); + } + + @Override + public final ChatFilterResult onMessage(Text message, String asString) { + ChatFilterResult state = state(); + if (state == ChatFilterResult.PASS) return ChatFilterResult.PASS; + Matcher m = pattern.matcher(asString); + if (m.matches() && onMatch(message, m)) { + return state; + } + return ChatFilterResult.PASS; + } + + protected abstract ChatFilterResult state(); + + protected abstract boolean onMatch(Text message, Matcher matcher); +} diff --git a/src/main/java/me/xmrvizzy/skyblocker/chat/filters/SimpleChatFilter.java b/src/main/java/me/xmrvizzy/skyblocker/chat/filters/SimpleChatFilter.java new file mode 100644 index 00000000..e23dbf33 --- /dev/null +++ b/src/main/java/me/xmrvizzy/skyblocker/chat/filters/SimpleChatFilter.java @@ -0,0 +1,17 @@ +package me.xmrvizzy.skyblocker.chat.filters; + +import me.xmrvizzy.skyblocker.chat.ChatPatternListener; +import net.minecraft.text.Text; + +import java.util.regex.Matcher; + +public abstract class SimpleChatFilter extends ChatPatternListener { + public SimpleChatFilter(String pattern) { + super(pattern); + } + + @Override + protected final boolean onMatch(Text message, Matcher matcher) { + return true; + } +} diff --git a/src/main/java/me/xmrvizzy/skyblocker/mixin/ChatHudListenerMixin.java b/src/main/java/me/xmrvizzy/skyblocker/mixin/ChatHudListenerMixin.java index 9170f1db..2a9984b3 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/mixin/ChatHudListenerMixin.java +++ b/src/main/java/me/xmrvizzy/skyblocker/mixin/ChatHudListenerMixin.java @@ -1,11 +1,16 @@ package me.xmrvizzy.skyblocker.mixin; -import me.xmrvizzy.skyblocker.chat.ChatParser; +import me.xmrvizzy.skyblocker.chat.ChatFilterResult; +import me.xmrvizzy.skyblocker.chat.ChatMessageListener; import me.xmrvizzy.skyblocker.utils.Utils; +import net.minecraft.client.MinecraftClient; import net.minecraft.client.gui.hud.ChatHudListener; +import net.minecraft.client.network.ClientPlayerEntity; import net.minecraft.network.MessageType; import net.minecraft.text.Text; +import org.spongepowered.asm.mixin.Final; import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Shadow; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; @@ -15,14 +20,25 @@ import java.util.UUID; @Mixin(ChatHudListener.class) public class ChatHudListenerMixin { - private final ChatParser parser = new ChatParser(); + @Shadow + @Final + private MinecraftClient client; @Inject(method = "onChatMessage", at = @At("HEAD"), cancellable = true) public void onMessage(MessageType messageType, Text message, UUID senderUuid, CallbackInfo ci) { if (!Utils.isOnSkyblock) return; - if (parser.shouldFilter(message.getString())) - ci.cancel(); + String asString = message.getString(); + ChatFilterResult result = ChatMessageListener.EVENT.invoker().onMessage(message, asString); + switch (result) { + case ACTION_BAR: + ClientPlayerEntity player = client.player; + // Couldn't have received original message if client was null + assert player != null; + player.sendMessage(message, true); + case FILTER: + ci.cancel(); + } } } -- cgit From 48ce8068ffd576edd3ea692aad4e6ac898894c4a Mon Sep 17 00:00:00 2001 From: ExternalTime <84183548+ExternalTime@users.noreply.github.com> Date: Tue, 8 Mar 2022 15:14:27 +0100 Subject: Changed chat listeners to use the new api --- .../skyblocker/chat/filters/AbilityFilter.java | 6 +++--- .../xmrvizzy/skyblocker/chat/filters/AdFilter.java | 25 +++++++++++++++------- .../skyblocker/chat/filters/AoteFilter.java | 8 +++---- .../skyblocker/chat/filters/ChatFilter.java | 12 ----------- .../skyblocker/chat/filters/ComboFilter.java | 7 +++--- .../skyblocker/chat/filters/HealFilter.java | 6 +++--- .../skyblocker/chat/filters/ImplosionFilter.java | 8 +++---- .../skyblocker/chat/filters/MoltenWaveFilter.java | 8 +++---- .../skyblocker/chat/filters/TeleportPadFilter.java | 5 +++-- .../skyblocker/config/SkyblockerConfig.java | 25 +++++++++++++++------- .../skyblocker/skyblock/api/ApiKeyListener.java | 16 ++++++++------ .../skyblocker/skyblock/dungeon/Reparty.java | 24 +++++++++++---------- .../skyblocker/skyblock/dungeon/ThreeWeirdos.java | 17 +++++++++------ .../skyblocker/skyblock/dungeon/Trivia.java | 22 +++++++++++-------- .../skyblocker/skyblock/dwarven/Fetchur.java | 17 +++++++++------ .../skyblocker/skyblock/dwarven/Puzzler.java | 16 ++++++++------ 16 files changed, 125 insertions(+), 97 deletions(-) delete mode 100644 src/main/java/me/xmrvizzy/skyblocker/chat/filters/ChatFilter.java diff --git a/src/main/java/me/xmrvizzy/skyblocker/chat/filters/AbilityFilter.java b/src/main/java/me/xmrvizzy/skyblocker/chat/filters/AbilityFilter.java index d0178dd6..3a357a00 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/chat/filters/AbilityFilter.java +++ b/src/main/java/me/xmrvizzy/skyblocker/chat/filters/AbilityFilter.java @@ -1,15 +1,15 @@ package me.xmrvizzy.skyblocker.chat.filters; -import me.xmrvizzy.skyblocker.chat.ChatListener; +import me.xmrvizzy.skyblocker.chat.ChatFilterResult; import me.xmrvizzy.skyblocker.config.SkyblockerConfig; -public class AbilityFilter extends ChatFilter { +public class AbilityFilter extends SimpleChatFilter { public AbilityFilter() { super("^(?:This ability is on cooldown for " + NUMBER + "s\\.|No more charges, next one in " + NUMBER + "s!)$"); } @Override - public boolean isEnabled() { + protected ChatFilterResult state() { 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 index cf13e26e..5f9f463d 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/chat/filters/AdFilter.java +++ b/src/main/java/me/xmrvizzy/skyblocker/chat/filters/AdFilter.java @@ -1,29 +1,38 @@ package me.xmrvizzy.skyblocker.chat.filters; +import me.xmrvizzy.skyblocker.chat.ChatFilterResult; +import me.xmrvizzy.skyblocker.chat.ChatPatternListener; import me.xmrvizzy.skyblocker.config.SkyblockerConfig; +import net.minecraft.text.Text; +import java.util.regex.Matcher; import java.util.regex.Pattern; -public class AdFilter extends ChatFilter { +public class AdFilter extends ChatPatternListener { 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() { + // Groups: + // 1. Player name + // 2. Message super("^§[67ab](?:\\[(?:MVP|VIP)(?:§[0-9a-f]\\+{1,2}§[6ab])?] )?([a-zA-Z0-9_]{2,16})§[7f]: (.*)$"); } @Override - public boolean isEnabled() { - return SkyblockerConfig.get().messages.hideAds; + public boolean onMatch(Text _message, Matcher matcher) { + String message = matcher.group(2); + for (Pattern adFilter : AD_FILTERS) + if (adFilter.matcher(message).find()) + return true; + return false; } @Override - public boolean onMessage(String[] groups) { - for(Pattern adFilter : AD_FILTERS) - if(adFilter.matcher(groups[2]).find()) - return true; - return false; + protected ChatFilterResult state() { + return SkyblockerConfig.get().messages.hideAds; } } \ 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 index 4545399e..029cf433 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/chat/filters/AoteFilter.java +++ b/src/main/java/me/xmrvizzy/skyblocker/chat/filters/AoteFilter.java @@ -1,15 +1,15 @@ package me.xmrvizzy.skyblocker.chat.filters; -import me.xmrvizzy.skyblocker.chat.ChatListener; +import me.xmrvizzy.skyblocker.chat.ChatFilterResult; import me.xmrvizzy.skyblocker.config.SkyblockerConfig; -public class AoteFilter extends ChatFilter { +public class AoteFilter extends SimpleChatFilter { public AoteFilter() { super("^There are blocks in the way!$"); } @Override - public boolean isEnabled() { + public ChatFilterResult state() { return SkyblockerConfig.get().messages.hideAOTE; } -} \ No newline at end of file +} diff --git a/src/main/java/me/xmrvizzy/skyblocker/chat/filters/ChatFilter.java b/src/main/java/me/xmrvizzy/skyblocker/chat/filters/ChatFilter.java deleted file mode 100644 index fac9a3a3..00000000 --- a/src/main/java/me/xmrvizzy/skyblocker/chat/filters/ChatFilter.java +++ /dev/null @@ -1,12 +0,0 @@ -package me.xmrvizzy.skyblocker.chat.filters; - -import me.xmrvizzy.skyblocker.chat.ChatListener; - -public abstract class ChatFilter extends ChatListener { - public ChatFilter(String pattern) { - super(pattern); - } - public boolean onMessage(String[] groups) { - return true; - } -} diff --git a/src/main/java/me/xmrvizzy/skyblocker/chat/filters/ComboFilter.java b/src/main/java/me/xmrvizzy/skyblocker/chat/filters/ComboFilter.java index c09cb69c..c05afdbf 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/chat/filters/ComboFilter.java +++ b/src/main/java/me/xmrvizzy/skyblocker/chat/filters/ComboFilter.java @@ -1,15 +1,16 @@ package me.xmrvizzy.skyblocker.chat.filters; +import me.xmrvizzy.skyblocker.chat.ChatFilterResult; import me.xmrvizzy.skyblocker.config.SkyblockerConfig; -public class ComboFilter extends ChatFilter { +public class ComboFilter extends SimpleChatFilter { public ComboFilter() { super("^(\\+\\d+ Kill Combo \\+\\d+(% ✯ Magic Find| coins per kill)" + "|Your Kill Combo has expired! You reached a \\d+ Kill Combo!)$"); } @Override - public boolean isEnabled() { + public ChatFilterResult state() { return SkyblockerConfig.get().messages.hideCombo; } -} \ 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 index b4e1c575..62b41749 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/chat/filters/HealFilter.java +++ b/src/main/java/me/xmrvizzy/skyblocker/chat/filters/HealFilter.java @@ -1,15 +1,15 @@ package me.xmrvizzy.skyblocker.chat.filters; -import me.xmrvizzy.skyblocker.chat.ChatListener; +import me.xmrvizzy.skyblocker.chat.ChatFilterResult; import me.xmrvizzy.skyblocker.config.SkyblockerConfig; -public class HealFilter extends ChatFilter { +public class HealFilter extends SimpleChatFilter { public HealFilter() { super("^(?:You healed yourself for " + NUMBER + " health!|[a-zA-Z0-9_]{2,16} healed you for " + NUMBER + " health!)$"); } @Override - public boolean isEnabled() { + public ChatFilterResult state() { 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 index ffdc5f40..9cc684ed 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/chat/filters/ImplosionFilter.java +++ b/src/main/java/me/xmrvizzy/skyblocker/chat/filters/ImplosionFilter.java @@ -1,15 +1,15 @@ package me.xmrvizzy.skyblocker.chat.filters; -import me.xmrvizzy.skyblocker.chat.ChatListener; +import me.xmrvizzy.skyblocker.chat.ChatFilterResult; import me.xmrvizzy.skyblocker.config.SkyblockerConfig; -public class ImplosionFilter extends ChatFilter { +public class ImplosionFilter extends SimpleChatFilter { public ImplosionFilter() { super("^Your Implosion hit " + NUMBER + " enem(?:y|ies) for " + NUMBER + " damage\\.$"); } @Override - public boolean isEnabled() { + public ChatFilterResult state() { 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 index b6fbddaf..19789dba 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/chat/filters/MoltenWaveFilter.java +++ b/src/main/java/me/xmrvizzy/skyblocker/chat/filters/MoltenWaveFilter.java @@ -1,15 +1,15 @@ package me.xmrvizzy.skyblocker.chat.filters; -import me.xmrvizzy.skyblocker.chat.ChatListener; +import me.xmrvizzy.skyblocker.chat.ChatFilterResult; import me.xmrvizzy.skyblocker.config.SkyblockerConfig; -public class MoltenWaveFilter extends ChatFilter { +public class MoltenWaveFilter extends SimpleChatFilter { public MoltenWaveFilter() { super("^Your Molten Wave hit " + NUMBER + " enemy(?:y|ies) for " + NUMBER + " damage\\.$"); } @Override - public boolean isEnabled() { + public ChatFilterResult state() { return SkyblockerConfig.get().messages.hideMoltenWave; } -} \ No newline at end of file +} diff --git a/src/main/java/me/xmrvizzy/skyblocker/chat/filters/TeleportPadFilter.java b/src/main/java/me/xmrvizzy/skyblocker/chat/filters/TeleportPadFilter.java index 2913d2bb..f7fab6d5 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/chat/filters/TeleportPadFilter.java +++ b/src/main/java/me/xmrvizzy/skyblocker/chat/filters/TeleportPadFilter.java @@ -1,15 +1,16 @@ package me.xmrvizzy.skyblocker.chat.filters; +import me.xmrvizzy.skyblocker.chat.ChatFilterResult; import me.xmrvizzy.skyblocker.config.SkyblockerConfig; -public class TeleportPadFilter extends ChatFilter { +public class TeleportPadFilter extends SimpleChatFilter { public TeleportPadFilter() { super("^(Warped from the .* Teleport Pad to the .* Teleport Pad!" + "|This Teleport Pad does not have a destination set!)$"); } @Override - public boolean isEnabled() { + public ChatFilterResult state() { return SkyblockerConfig.get().messages.hideTeleportPad; } } \ No newline at end of file diff --git a/src/main/java/me/xmrvizzy/skyblocker/config/SkyblockerConfig.java b/src/main/java/me/xmrvizzy/skyblocker/config/SkyblockerConfig.java index 270631b4..130b3064 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/config/SkyblockerConfig.java +++ b/src/main/java/me/xmrvizzy/skyblocker/config/SkyblockerConfig.java @@ -5,6 +5,7 @@ import me.shedaniel.autoconfig.ConfigData; import me.shedaniel.autoconfig.annotation.Config; import me.shedaniel.autoconfig.annotation.ConfigEntry; import me.shedaniel.autoconfig.serializer.GsonConfigSerializer; +import me.xmrvizzy.skyblocker.chat.ChatFilterResult; import java.util.ArrayList; import java.util.List; @@ -125,14 +126,22 @@ public class SkyblockerConfig implements ConfigData { } public static class Messages { - public boolean hideAbility = false; - public boolean hideHeal = false; - public boolean hideAOTE = false; - public boolean hideImplosion = false; - public boolean hideMoltenWave = false; - public boolean hideAds = false; - public boolean hideTeleportPad = false; - public boolean hideCombo = false; + @ConfigEntry.Gui.EnumHandler(option = ConfigEntry.Gui.EnumHandler.EnumDisplayOption.BUTTON) + public ChatFilterResult hideAbility = ChatFilterResult.PASS; + @ConfigEntry.Gui.EnumHandler(option = ConfigEntry.Gui.EnumHandler.EnumDisplayOption.BUTTON) + public ChatFilterResult hideHeal = ChatFilterResult.PASS; + @ConfigEntry.Gui.EnumHandler(option = ConfigEntry.Gui.EnumHandler.EnumDisplayOption.BUTTON) + public ChatFilterResult hideAOTE = ChatFilterResult.PASS; + @ConfigEntry.Gui.EnumHandler(option = ConfigEntry.Gui.EnumHandler.EnumDisplayOption.BUTTON) + public ChatFilterResult hideImplosion = ChatFilterResult.PASS; + @ConfigEntry.Gui.EnumHandler(option = ConfigEntry.Gui.EnumHandler.EnumDisplayOption.BUTTON) + public ChatFilterResult hideMoltenWave = ChatFilterResult.PASS; + @ConfigEntry.Gui.EnumHandler(option = ConfigEntry.Gui.EnumHandler.EnumDisplayOption.BUTTON) + public ChatFilterResult hideAds = ChatFilterResult.PASS; + @ConfigEntry.Gui.EnumHandler(option = ConfigEntry.Gui.EnumHandler.EnumDisplayOption.BUTTON) + public ChatFilterResult hideTeleportPad = ChatFilterResult.PASS; + @ConfigEntry.Gui.EnumHandler(option = ConfigEntry.Gui.EnumHandler.EnumDisplayOption.BUTTON) + public ChatFilterResult hideCombo = ChatFilterResult.PASS; } public enum Info { diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/api/ApiKeyListener.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/api/ApiKeyListener.java index f20c41d2..520229f6 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/api/ApiKeyListener.java +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/api/ApiKeyListener.java @@ -1,24 +1,28 @@ package me.xmrvizzy.skyblocker.skyblock.api; import me.shedaniel.autoconfig.AutoConfig; -import me.xmrvizzy.skyblocker.chat.ChatListener; +import me.xmrvizzy.skyblocker.chat.ChatFilterResult; +import me.xmrvizzy.skyblocker.chat.ChatPatternListener; import me.xmrvizzy.skyblocker.config.SkyblockerConfig; import net.minecraft.client.MinecraftClient; +import net.minecraft.text.Text; import net.minecraft.text.TranslatableText; -public class ApiKeyListener extends ChatListener { +import java.util.regex.Matcher; + +public class ApiKeyListener extends ChatPatternListener { public ApiKeyListener() { super("^Your new API key is (.*)$"); } @Override - public boolean isEnabled() { - return true; + protected ChatFilterResult state() { + return null; } @Override - public boolean onMessage(String[] groups) { - SkyblockerConfig.get().general.apiKey = groups[1]; + protected boolean onMatch(Text message, Matcher matcher) { + SkyblockerConfig.get().general.apiKey = matcher.group(1); AutoConfig.getConfigHolder(SkyblockerConfig.class).save(); MinecraftClient.getInstance().player.sendMessage(new TranslatableText("skyblocker.api.got_key"), false); return false; diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/Reparty.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/Reparty.java index 65b9648f..f5fd1151 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/Reparty.java +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/Reparty.java @@ -1,16 +1,18 @@ package me.xmrvizzy.skyblocker.skyblock.dungeon; import me.xmrvizzy.skyblocker.SkyblockerMod; -import me.xmrvizzy.skyblocker.chat.ChatListener; +import me.xmrvizzy.skyblocker.chat.ChatFilterResult; +import me.xmrvizzy.skyblocker.chat.ChatPatternListener; import me.xmrvizzy.skyblocker.utils.Utils; import net.fabricmc.fabric.api.client.command.v1.ClientCommandManager; import net.minecraft.client.MinecraftClient; import net.minecraft.client.network.ClientPlayerEntity; +import net.minecraft.text.Text; import java.util.regex.Matcher; import java.util.regex.Pattern; -public class Reparty extends ChatListener { +public class Reparty extends ChatPatternListener { private static final MinecraftClient client = MinecraftClient.getInstance(); private static final SkyblockerMod skyblocker = SkyblockerMod.getInstance(); public static final Pattern PLAYER = Pattern.compile(" ([a-zA-Z0-9_]{2,16}) ●"); @@ -36,17 +38,17 @@ public class Reparty extends ChatListener { } @Override - public boolean isEnabled() { - return repartying; + public ChatFilterResult state() { + return repartying ? ChatFilterResult.FILTER : ChatFilterResult.PASS; } @Override - public boolean onMessage(String[] groups) { - if (groups[1] != null) { + public boolean onMatch(Text message, Matcher matcher) { + if (matcher.group(1) != null) { playersSoFar = 0; - players = new String[Integer.parseInt(groups[1]) - 1]; - } else if (groups[2] != null) { - Matcher m = PLAYER.matcher(groups[2]); + players = new String[Integer.parseInt(matcher.group(1)) - 1]; + } else if (matcher.group(2) != null) { + Matcher m = PLAYER.matcher(matcher.group(2)); while (m.find()) { players[playersSoFar++] = m.group(1); } @@ -65,10 +67,10 @@ public class Reparty extends ChatListener { sendCommand(playerEntity, "/p disband", 1); StringBuilder sb = new StringBuilder(); int invites = (players.length - 1) / 5 + 1; - for(int i = 0; i < invites; i++) { + for (int i = 0; i < invites; i++) { sb.setLength(0); sb.append("/p invite"); - for(int j = 0; j < 5 && i * 5 + j < players.length; j++) { + for (int j = 0; j < 5 && i * 5 + j < players.length; j++) { sb.append(' '); sb.append(players[i * 5 + j]); } diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/ThreeWeirdos.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/ThreeWeirdos.java index ea63b35e..8f1f3711 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/ThreeWeirdos.java +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/ThreeWeirdos.java @@ -1,24 +1,27 @@ package me.xmrvizzy.skyblocker.skyblock.dungeon; -import me.xmrvizzy.skyblocker.chat.ChatListener; +import me.xmrvizzy.skyblocker.chat.ChatFilterResult; +import me.xmrvizzy.skyblocker.chat.ChatPatternListener; import me.xmrvizzy.skyblocker.config.SkyblockerConfig; import net.minecraft.client.MinecraftClient; import net.minecraft.entity.decoration.ArmorStandEntity; import net.minecraft.text.Text; import net.minecraft.util.Formatting; -public class ThreeWeirdos extends ChatListener { +import java.util.regex.Matcher; + +public class ThreeWeirdos extends ChatPatternListener { public ThreeWeirdos() { super("^§e\\[NPC] §c([A-Z][a-z]+)§f: (?:The reward is(?: not in my chest!|n't in any of our chests\\.)|My chest (?:doesn't have the reward\\. We are all telling the truth\\.|has the reward and I'm telling the truth!)|At least one of them is lying, and the reward is not in §c§c[A-Z][a-z]+'s §rchest\\!|Both of them are telling the truth\\. Also, §c§c[A-Z][a-z]+ §rhas the reward in their chest\\!)$"); } @Override - public boolean isEnabled() { - return SkyblockerConfig.get().locations.dungeons.solveThreeWeirdos; + public ChatFilterResult state() { + return SkyblockerConfig.get().locations.dungeons.solveThreeWeirdos ? null : ChatFilterResult.PASS; } @Override - public boolean onMessage(String[] groups) { + public boolean onMatch(Text message, Matcher matcher) { MinecraftClient client = MinecraftClient.getInstance(); assert client.world != null; assert client.player != null; @@ -27,13 +30,13 @@ public class ThreeWeirdos extends ChatListener { client.player.getBoundingBox().expand(3), entity -> { Text customName = entity.getCustomName(); - if (customName != null && customName.getString().equals(groups[1])) { + if (customName != null && customName.getString().equals(matcher.group(1))) { return true; } return false; } ).forEach( - entity -> entity.setCustomName(Text.of(Formatting.GREEN + groups[1])) + entity -> entity.setCustomName(Text.of(Formatting.GREEN + matcher.group(1))) ); return false; } diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/Trivia.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/Trivia.java index bb3d10d2..51ff1c6a 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/Trivia.java +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/Trivia.java @@ -1,15 +1,18 @@ package me.xmrvizzy.skyblocker.skyblock.dungeon; -import me.xmrvizzy.skyblocker.chat.ChatListener; +import me.xmrvizzy.skyblocker.chat.ChatFilterResult; +import me.xmrvizzy.skyblocker.chat.ChatPatternListener; import me.xmrvizzy.skyblocker.config.SkyblockerConfig; import net.minecraft.client.MinecraftClient; import net.minecraft.client.network.ClientPlayerEntity; import net.minecraft.text.LiteralText; +import net.minecraft.text.Text; import net.minecraft.util.Formatting; import java.util.*; +import java.util.regex.Matcher; -public class Trivia extends ChatListener { +public class Trivia extends ChatPatternListener { private static final Map answers; private List solutions = Collections.emptyList(); @@ -18,21 +21,22 @@ public class Trivia extends ChatListener { } @Override - public boolean isEnabled() { - return SkyblockerConfig.get().locations.dungeons.solveTrivia; + public ChatFilterResult state() { + return SkyblockerConfig.get().locations.dungeons.solveTrivia ? ChatFilterResult.FILTER : ChatFilterResult.PASS; } @Override - public boolean onMessage(String[] groups) { - if (groups[3] != null) { - if (!solutions.contains(groups[3])) { + public boolean onMatch(Text message, Matcher matcher) { + String riddle = matcher.group(3); + if (riddle != null) { + if (!solutions.contains(riddle)) { ClientPlayerEntity player = MinecraftClient.getInstance().player; assert player != null; - MinecraftClient.getInstance().player.sendMessage(new LiteralText(" " + Formatting.GOLD + groups[2] + Formatting.RED + " " + groups[3]), false); + MinecraftClient.getInstance().player.sendMessage(new LiteralText(" " + Formatting.GOLD + matcher.group(2) + Formatting.RED + " " + riddle), false); return true; } } else - updateSolutions(groups[1]); + updateSolutions(matcher.group(0)); return false; } diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/dwarven/Fetchur.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/dwarven/Fetchur.java index 266006b4..ce1dde11 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/dwarven/Fetchur.java +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/dwarven/Fetchur.java @@ -1,6 +1,7 @@ package me.xmrvizzy.skyblocker.skyblock.dwarven; -import me.xmrvizzy.skyblocker.chat.ChatListener; +import me.xmrvizzy.skyblocker.chat.ChatFilterResult; +import me.xmrvizzy.skyblocker.chat.ChatPatternListener; import me.xmrvizzy.skyblocker.config.SkyblockerConfig; import net.minecraft.client.MinecraftClient; import net.minecraft.text.Text; @@ -8,24 +9,26 @@ import net.minecraft.text.TranslatableText; import java.util.HashMap; import java.util.Map; +import java.util.regex.Matcher; -public class Fetchur extends ChatListener { - private static Map answers; +public class Fetchur extends ChatPatternListener { + private static final Map answers; public Fetchur() { super("^§e\\[NPC] Fetchur§f: (?:its|theyre) ([a-zA-Z, \\-]*)$"); } @Override - public boolean isEnabled() { - return SkyblockerConfig.get().locations.dwarvenMines.solveFetchur; + public ChatFilterResult state() { + return SkyblockerConfig.get().locations.dwarvenMines.solveFetchur ? ChatFilterResult.FILTER : ChatFilterResult.PASS; } @Override - public boolean onMessage(String[] groups) { + public boolean onMatch(Text message, Matcher matcher) { MinecraftClient client = MinecraftClient.getInstance(); assert client.player != null; - String answer = answers.getOrDefault(groups[1], groups[1]); + String riddle = matcher.group(1); + String answer = answers.getOrDefault(riddle, riddle); client.player.sendMessage(Text.of("§e[NPC] Fetchur§f: " + answer), false); return true; } diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/dwarven/Puzzler.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/dwarven/Puzzler.java index 3e117955..f61e007e 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/dwarven/Puzzler.java +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/dwarven/Puzzler.java @@ -1,27 +1,31 @@ package me.xmrvizzy.skyblocker.skyblock.dwarven; -import me.xmrvizzy.skyblocker.chat.ChatListener; +import me.xmrvizzy.skyblocker.chat.ChatFilterResult; +import me.xmrvizzy.skyblocker.chat.ChatPatternListener; import me.xmrvizzy.skyblocker.config.SkyblockerConfig; import net.minecraft.block.Blocks; import net.minecraft.client.MinecraftClient; import net.minecraft.client.world.ClientWorld; +import net.minecraft.text.Text; import net.minecraft.util.math.BlockPos; -public class Puzzler extends ChatListener { +import java.util.regex.Matcher; + +public class Puzzler extends ChatPatternListener { public Puzzler() { super("^§e\\[NPC] §dPuzzler§f: ((?:§d▲|§5▶|§b◀|§a▼){10})$"); } @Override - public boolean isEnabled() { - return SkyblockerConfig.get().locations.dwarvenMines.solvePuzzler; + public ChatFilterResult state() { + return SkyblockerConfig.get().locations.dwarvenMines.solvePuzzler ? null : ChatFilterResult.PASS; } @Override - public boolean onMessage(String[] groups) { + public boolean onMatch(Text message, Matcher matcher) { int x = 181; int z = 135; - for (char c : groups[1].toCharArray()) { + for (char c : matcher.group(1).toCharArray()) { if (c == '▲') z++; else if (c == '▼') z--; else if (c == '◀') x++; -- cgit From 3221f7cd30b0b12d697dec0d52b6040e2278e305 Mon Sep 17 00:00:00 2001 From: ExternalTime <84183548+ExternalTime@users.noreply.github.com> Date: Tue, 8 Mar 2022 15:15:32 +0100 Subject: Changed chat listener tests to use the new api --- .../xmrvizzy/skyblocker/chat/ChatListenerTest.java | 34 ---------------------- .../skyblocker/chat/ChatPatternListenerTest.java | 27 +++++++++++++++++ .../skyblocker/chat/filters/AbilityFilterTest.java | 5 ++-- .../skyblocker/chat/filters/AdFilterTest.java | 26 ++++++++++++----- .../skyblocker/chat/filters/AoteFilterTest.java | 3 +- .../skyblocker/chat/filters/ChatFilterTest.java | 19 ++---------- .../skyblocker/chat/filters/ComboFilterTest.java | 6 ++-- .../skyblocker/chat/filters/HealFilterTest.java | 5 ++-- .../chat/filters/ImplosionFilterTest.java | 5 ++-- .../chat/filters/TeleportPadFilterTest.java | 4 +-- .../skyblock/dungeon/ThreeWeirdosTest.java | 4 +-- .../skyblocker/skyblock/dungeon/TriviaTest.java | 4 +-- .../skyblocker/skyblock/dwarven/FetchurTest.java | 6 ++-- .../skyblocker/skyblock/dwarven/PuzzlerTest.java | 4 +-- 14 files changed, 69 insertions(+), 83 deletions(-) delete mode 100644 src/test/java/me/xmrvizzy/skyblocker/chat/ChatListenerTest.java create mode 100644 src/test/java/me/xmrvizzy/skyblocker/chat/ChatPatternListenerTest.java diff --git a/src/test/java/me/xmrvizzy/skyblocker/chat/ChatListenerTest.java b/src/test/java/me/xmrvizzy/skyblocker/chat/ChatListenerTest.java deleted file mode 100644 index 803f72d8..00000000 --- a/src/test/java/me/xmrvizzy/skyblocker/chat/ChatListenerTest.java +++ /dev/null @@ -1,34 +0,0 @@ -package me.xmrvizzy.skyblocker.chat; - -import java.util.regex.Matcher; - -import static org.junit.jupiter.api.Assertions.*; - -public abstract class ChatListenerTest { - protected final T listener; - - public ChatListenerTest(T listener) { - this.listener = listener; - } - - protected boolean captures(String text) { - return listener.getPattern().matcher(text).matches(); - } - protected String[] getGroups(String text) { - Matcher matcher = listener.getPattern().matcher(text); - assertTrue(matcher.matches()); - String[] groups = new String[matcher.groupCount() + 1]; - for (int i = 0; i < groups.length; i++) - groups[i] = matcher.group(i); - return groups; - } - protected void assertCaptures(String text) { - assertTrue(captures(text)); - } - protected void assertNotCaptures(String text) { - assertTrue(captures(text)); - } - protected void assertGroup(String text, int group, String expect) { - assertEquals(expect, getGroups(text)[group]); - } -} \ No newline at end of file diff --git a/src/test/java/me/xmrvizzy/skyblocker/chat/ChatPatternListenerTest.java b/src/test/java/me/xmrvizzy/skyblocker/chat/ChatPatternListenerTest.java new file mode 100644 index 00000000..a4d6010a --- /dev/null +++ b/src/test/java/me/xmrvizzy/skyblocker/chat/ChatPatternListenerTest.java @@ -0,0 +1,27 @@ +package me.xmrvizzy.skyblocker.chat; + +import java.util.regex.Matcher; + +import static org.junit.jupiter.api.Assertions.*; + +public abstract class ChatPatternListenerTest { + protected final T listener; + + public ChatPatternListenerTest(T listener) { + this.listener = listener; + } + + protected Matcher matcher(String message) { + return listener.pattern.matcher(message); + } + + protected void assertMatches(String message) { + assertTrue(matcher(message).matches()); + } + + protected void assertGroup(String message, int group, String expect) { + Matcher matcher = matcher(message); + assertTrue(matcher.matches()); + assertEquals(expect, matcher.group(group)); + } +} \ No newline at end of file diff --git a/src/test/java/me/xmrvizzy/skyblocker/chat/filters/AbilityFilterTest.java b/src/test/java/me/xmrvizzy/skyblocker/chat/filters/AbilityFilterTest.java index ec2db07b..65faef5b 100644 --- a/src/test/java/me/xmrvizzy/skyblocker/chat/filters/AbilityFilterTest.java +++ b/src/test/java/me/xmrvizzy/skyblocker/chat/filters/AbilityFilterTest.java @@ -1,6 +1,5 @@ package me.xmrvizzy.skyblocker.chat.filters; -import me.xmrvizzy.skyblocker.chat.ChatListenerTest; import org.junit.jupiter.api.Test; class AbilityFilterTest extends ChatFilterTest { @@ -10,11 +9,11 @@ class AbilityFilterTest extends ChatFilterTest { @Test void charges() { - assertFilters("No more charges, next one in 13.2s!"); + assertMatches("No more charges, next one in 13.2s!"); } @Test void cooldown() { - assertFilters("This ability is on cooldown for 42s."); + assertMatches("This ability is on cooldown for 42s."); } } \ No newline at end of file diff --git a/src/test/java/me/xmrvizzy/skyblocker/chat/filters/AdFilterTest.java b/src/test/java/me/xmrvizzy/skyblocker/chat/filters/AdFilterTest.java index 639042fe..73fb5dbd 100644 --- a/src/test/java/me/xmrvizzy/skyblocker/chat/filters/AdFilterTest.java +++ b/src/test/java/me/xmrvizzy/skyblocker/chat/filters/AdFilterTest.java @@ -1,31 +1,35 @@ package me.xmrvizzy.skyblocker.chat.filters; -import me.xmrvizzy.skyblocker.chat.ChatListenerTest; +import me.xmrvizzy.skyblocker.chat.ChatPatternListenerTest; import org.junit.jupiter.api.Test; -class AdFilterTest extends ChatFilterTest { +import java.util.regex.Matcher; + +import static org.junit.jupiter.api.Assertions.*; + +class AdFilterTest extends ChatPatternListenerTest { public AdFilterTest() { super(new AdFilter()); } @Test void noRank() { - assertCaptures("§7Advertiser§7: advertisement"); + assertMatches("§7Advertiser§7: advertisement"); } @Test void vip() { - assertCaptures("§a[VIP] Advertiser§f: advertisement"); + assertMatches("§a[VIP] Advertiser§f: advertisement"); } @Test void mvp() { - assertCaptures("§b[MVP§c+§b] Advertiser§f: advertisement"); + assertMatches("§b[MVP§c+§b] Advertiser§f: advertisement"); } @Test void plusPlus() { - assertCaptures("§6[MVP§c++§6] Advertiser§f: advertisement"); + assertMatches("§6[MVP§c++§6] Advertiser§f: advertisement"); } @Test @@ -50,6 +54,14 @@ class AdFilterTest extends ChatFilterTest { @Test void notAd() { - assertNotFilters("§a[VIP] NotMatching§f: This message shouldn't match!"); + Matcher matcher = listener.pattern.matcher("§a[VIP] NotMatching§f: This message shouldn't match!"); + assertTrue(matcher.matches()); + assertFalse(listener.onMatch(null, matcher)); + } + + void assertFilters(String message) { + Matcher matcher = listener.pattern.matcher(message); + assertTrue(matcher.matches()); + assertTrue(listener.onMatch(null, matcher)); } } \ No newline at end of file diff --git a/src/test/java/me/xmrvizzy/skyblocker/chat/filters/AoteFilterTest.java b/src/test/java/me/xmrvizzy/skyblocker/chat/filters/AoteFilterTest.java index 2aa14e1c..4f736bd3 100644 --- a/src/test/java/me/xmrvizzy/skyblocker/chat/filters/AoteFilterTest.java +++ b/src/test/java/me/xmrvizzy/skyblocker/chat/filters/AoteFilterTest.java @@ -1,6 +1,5 @@ package me.xmrvizzy.skyblocker.chat.filters; -import me.xmrvizzy.skyblocker.chat.ChatListenerTest; import org.junit.jupiter.api.Test; class AoteFilterTest extends ChatFilterTest { @@ -10,6 +9,6 @@ class AoteFilterTest extends ChatFilterTest { @Test void testRegex() { - assertFilters("There are blocks in the way!"); + assertMatches("There are blocks in the way!"); } } \ No newline at end of file diff --git a/src/test/java/me/xmrvizzy/skyblocker/chat/filters/ChatFilterTest.java b/src/test/java/me/xmrvizzy/skyblocker/chat/filters/ChatFilterTest.java index ff3399a7..6b356e5c 100644 --- a/src/test/java/me/xmrvizzy/skyblocker/chat/filters/ChatFilterTest.java +++ b/src/test/java/me/xmrvizzy/skyblocker/chat/filters/ChatFilterTest.java @@ -1,26 +1,13 @@ package me.xmrvizzy.skyblocker.chat.filters; -import me.xmrvizzy.skyblocker.chat.ChatListener; -import me.xmrvizzy.skyblocker.chat.ChatListenerTest; +import me.xmrvizzy.skyblocker.chat.ChatPatternListener; +import me.xmrvizzy.skyblocker.chat.ChatPatternListenerTest; import static org.junit.jupiter.api.Assertions.assertTrue; import static org.junit.jupiter.api.Assertions.assertFalse; -public class ChatFilterTest extends ChatListenerTest { +public class ChatFilterTest extends ChatPatternListenerTest { public ChatFilterTest(T listener) { super(listener); } - - protected boolean filters(String text) { - if(!captures(text)) - return false; - String[] groups = getGroups(text); - return listener.onMessage(groups); - } - protected void assertFilters(String text) { - assertTrue(filters(text)); - } - protected void assertNotFilters(String text) { - assertFalse(filters(text)); - } } diff --git a/src/test/java/me/xmrvizzy/skyblocker/chat/filters/ComboFilterTest.java b/src/test/java/me/xmrvizzy/skyblocker/chat/filters/ComboFilterTest.java index 521668b0..8af25b5e 100644 --- a/src/test/java/me/xmrvizzy/skyblocker/chat/filters/ComboFilterTest.java +++ b/src/test/java/me/xmrvizzy/skyblocker/chat/filters/ComboFilterTest.java @@ -9,16 +9,16 @@ public class ComboFilterTest extends ChatFilterTest { @Test void testComboMF() { - assertFilters("+5 Kill Combo +3% ✯ Magic Find"); + assertMatches("+5 Kill Combo +3% ✯ Magic Find"); } @Test void testComboCoins() { - assertFilters("+10 Kill Combo +10 coins per kill"); + assertMatches("+10 Kill Combo +10 coins per kill"); } @Test void testComboExpired() { - assertFilters("Your Kill Combo has expired! You reached a 11 Kill Combo!"); + assertMatches("Your Kill Combo has expired! You reached a 11 Kill Combo!"); } } diff --git a/src/test/java/me/xmrvizzy/skyblocker/chat/filters/HealFilterTest.java b/src/test/java/me/xmrvizzy/skyblocker/chat/filters/HealFilterTest.java index f7b4d59b..5d8c12cf 100644 --- a/src/test/java/me/xmrvizzy/skyblocker/chat/filters/HealFilterTest.java +++ b/src/test/java/me/xmrvizzy/skyblocker/chat/filters/HealFilterTest.java @@ -1,6 +1,5 @@ package me.xmrvizzy.skyblocker.chat.filters; -import me.xmrvizzy.skyblocker.chat.ChatListenerTest; import org.junit.jupiter.api.Test; class HealFilterTest extends ChatFilterTest { @@ -10,11 +9,11 @@ class HealFilterTest extends ChatFilterTest { @Test void healSelf() { - assertFilters("You healed yourself for 18.3 health!"); + assertMatches("You healed yourself for 18.3 health!"); } @Test void healedYou() { - assertFilters("H3aler_ healed you for 56 health!"); + assertMatches("H3aler_ healed you for 56 health!"); } } \ No newline at end of file diff --git a/src/test/java/me/xmrvizzy/skyblocker/chat/filters/ImplosionFilterTest.java b/src/test/java/me/xmrvizzy/skyblocker/chat/filters/ImplosionFilterTest.java index a6526925..59451167 100644 --- a/src/test/java/me/xmrvizzy/skyblocker/chat/filters/ImplosionFilterTest.java +++ b/src/test/java/me/xmrvizzy/skyblocker/chat/filters/ImplosionFilterTest.java @@ -1,6 +1,5 @@ package me.xmrvizzy.skyblocker.chat.filters; -import me.xmrvizzy.skyblocker.chat.ChatListenerTest; import org.junit.jupiter.api.Test; class ImplosionFilterTest extends ChatFilterTest { @@ -10,11 +9,11 @@ class ImplosionFilterTest extends ChatFilterTest { @Test void oneEnemy() { - assertFilters("Your Implosion hit 1 enemy for 636,116.8 damage."); + assertMatches("Your Implosion hit 1 enemy for 636,116.8 damage."); } @Test void multipleEnemies() { - assertFilters("Your Implosion hit 7 enemies for 4,452,817.4 damage."); + assertMatches("Your Implosion hit 7 enemies for 4,452,817.4 damage."); } } \ No newline at end of file diff --git a/src/test/java/me/xmrvizzy/skyblocker/chat/filters/TeleportPadFilterTest.java b/src/test/java/me/xmrvizzy/skyblocker/chat/filters/TeleportPadFilterTest.java index 605d57bb..a3eadc7b 100644 --- a/src/test/java/me/xmrvizzy/skyblocker/chat/filters/TeleportPadFilterTest.java +++ b/src/test/java/me/xmrvizzy/skyblocker/chat/filters/TeleportPadFilterTest.java @@ -9,11 +9,11 @@ public class TeleportPadFilterTest extends ChatFilterTest { @Test void testTeleport() { - assertFilters("Warped from the Base Teleport Pad to the Minion Teleport Pad!"); + assertMatches("Warped from the Base Teleport Pad to the Minion Teleport Pad!"); } @Test void testNoDestination() { - assertFilters("This Teleport Pad does not have a destination set!"); + assertMatches("This Teleport Pad does not have a destination set!"); } } \ No newline at end of file diff --git a/src/test/java/me/xmrvizzy/skyblocker/skyblock/dungeon/ThreeWeirdosTest.java b/src/test/java/me/xmrvizzy/skyblocker/skyblock/dungeon/ThreeWeirdosTest.java index 18c638c7..555753b6 100644 --- a/src/test/java/me/xmrvizzy/skyblocker/skyblock/dungeon/ThreeWeirdosTest.java +++ b/src/test/java/me/xmrvizzy/skyblocker/skyblock/dungeon/ThreeWeirdosTest.java @@ -1,9 +1,9 @@ package me.xmrvizzy.skyblocker.skyblock.dungeon; -import me.xmrvizzy.skyblocker.chat.ChatListenerTest; +import me.xmrvizzy.skyblocker.chat.ChatPatternListenerTest; import org.junit.jupiter.api.Test; -class ThreeWeirdosTest extends ChatListenerTest { +class ThreeWeirdosTest extends ChatPatternListenerTest { public ThreeWeirdosTest() { super(new ThreeWeirdos()); } diff --git a/src/test/java/me/xmrvizzy/skyblocker/skyblock/dungeon/TriviaTest.java b/src/test/java/me/xmrvizzy/skyblocker/skyblock/dungeon/TriviaTest.java index 6f7950e3..37f077fb 100644 --- a/src/test/java/me/xmrvizzy/skyblocker/skyblock/dungeon/TriviaTest.java +++ b/src/test/java/me/xmrvizzy/skyblocker/skyblock/dungeon/TriviaTest.java @@ -1,9 +1,9 @@ package me.xmrvizzy.skyblocker.skyblock.dungeon; -import me.xmrvizzy.skyblocker.chat.ChatListenerTest; +import me.xmrvizzy.skyblocker.chat.ChatPatternListenerTest; import org.junit.jupiter.api.Test; -class TriviaTest extends ChatListenerTest { +class TriviaTest extends ChatPatternListenerTest { public TriviaTest() { super(new Trivia()); } diff --git a/src/test/java/me/xmrvizzy/skyblocker/skyblock/dwarven/FetchurTest.java b/src/test/java/me/xmrvizzy/skyblocker/skyblock/dwarven/FetchurTest.java index 35b8ab58..f8e0af18 100644 --- a/src/test/java/me/xmrvizzy/skyblocker/skyblock/dwarven/FetchurTest.java +++ b/src/test/java/me/xmrvizzy/skyblocker/skyblock/dwarven/FetchurTest.java @@ -1,11 +1,9 @@ package me.xmrvizzy.skyblocker.skyblock.dwarven; -import me.xmrvizzy.skyblocker.chat.ChatListenerTest; +import me.xmrvizzy.skyblocker.chat.ChatPatternListenerTest; import org.junit.jupiter.api.Test; -import static org.junit.jupiter.api.Assertions.*; - -class FetchurTest extends ChatListenerTest { +class FetchurTest extends ChatPatternListenerTest { public FetchurTest() { super(new Fetchur()); } diff --git a/src/test/java/me/xmrvizzy/skyblocker/skyblock/dwarven/PuzzlerTest.java b/src/test/java/me/xmrvizzy/skyblocker/skyblock/dwarven/PuzzlerTest.java index ab2878ef..e26e306e 100644 --- a/src/test/java/me/xmrvizzy/skyblocker/skyblock/dwarven/PuzzlerTest.java +++ b/src/test/java/me/xmrvizzy/skyblocker/skyblock/dwarven/PuzzlerTest.java @@ -1,9 +1,9 @@ package me.xmrvizzy.skyblocker.skyblock.dwarven; -import me.xmrvizzy.skyblocker.chat.ChatListenerTest; +import me.xmrvizzy.skyblocker.chat.ChatPatternListenerTest; import org.junit.jupiter.api.Test; -class PuzzlerTest extends ChatListenerTest { +class PuzzlerTest extends ChatPatternListenerTest { public PuzzlerTest() { super(new Puzzler()); } -- cgit