aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/chat/ChatListener.java17
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/chat/ChatParser.java23
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/mixin/ChatHudListenerMixin.java18
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();
}
+ */
}
}