diff options
Diffstat (limited to 'src/main')
3 files changed, 47 insertions, 11 deletions
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 diff --git a/src/main/java/me/xmrvizzy/skyblocker/mixin/ChatHudListenerMixin.java b/src/main/java/me/xmrvizzy/skyblocker/mixin/ChatHudListenerMixin.java index c22364d6..6cc6cb0e 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/mixin/ChatHudListenerMixin.java +++ b/src/main/java/me/xmrvizzy/skyblocker/mixin/ChatHudListenerMixin.java @@ -1,33 +1,28 @@ package me.xmrvizzy.skyblocker.mixin; -import me.xmrvizzy.skyblocker.config.SkyblockerConfig; -import me.xmrvizzy.skyblocker.skyblock.ChatFilter; -import me.xmrvizzy.skyblocker.skyblock.dungeon.DungeonPuzzles; -import me.xmrvizzy.skyblocker.skyblock.dwarven.Fetchur; -import me.xmrvizzy.skyblocker.skyblock.dwarven.Puzzler; +import me.xmrvizzy.skyblocker.chat.ChatParser; import me.xmrvizzy.skyblocker.utils.Utils; -import net.minecraft.client.MinecraftClient; import net.minecraft.client.gui.hud.ChatHudListener; 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; -import java.util.List; import java.util.UUID; @Mixin(ChatHudListener.class) public class ChatHudListenerMixin { - @Shadow @Final private MinecraftClient client; - private final ChatFilter filter = new ChatFilter(); + private final ChatParser parser = new ChatParser(); @Inject(method = "onChatMessage", at = @At("HEAD"), cancellable = true) public void onMessage(MessageType messageType, Text message, UUID senderUuid, CallbackInfo ci) { + if (Utils.isSkyblock && parser.shouldFilter(message.getString())) + ci.cancel(); + + /* String msg = message.getString(); if (Utils.isDungeons) { @@ -61,6 +56,7 @@ public class ChatHudListenerMixin { if(filter.shouldFilter(msg)) ci.cancel(); } + */ } } |