aboutsummaryrefslogtreecommitdiff
path: root/src/main/java
diff options
context:
space:
mode:
authorKevin <92656833+kevinthegreat1@users.noreply.github.com>2023-05-17 13:41:53 -0700
committerGitHub <noreply@github.com>2023-05-17 13:41:53 -0700
commitabcb5211f69e6f437bc84a129db04e515480b742 (patch)
treeb58262d6ae4ec5df68c6789d34e608d84d30ebf4 /src/main/java
parentae4a440d758ddf0bf7d6bf17a829653e3fc58e15 (diff)
parent4e147fc6d37b5cccc8f78ab81740f8ba81ac2fa6 (diff)
downloadSkyblocker-abcb5211f69e6f437bc84a129db04e515480b742.tar.gz
Skyblocker-abcb5211f69e6f437bc84a129db04e515480b742.tar.bz2
Skyblocker-abcb5211f69e6f437bc84a129db04e515480b742.zip
Merge pull request #131 from kevinthegreat1/master
Migrated to ClientReceiveMessageEvents and some fixes
Diffstat (limited to 'src/main/java')
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/chat/ChatMessageListener.java40
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/mixin/ChatHudListenerMixin.java41
2 files changed, 38 insertions, 43 deletions
diff --git a/src/main/java/me/xmrvizzy/skyblocker/chat/ChatMessageListener.java b/src/main/java/me/xmrvizzy/skyblocker/chat/ChatMessageListener.java
index 9ee87f2b..9e6b5f64 100644
--- a/src/main/java/me/xmrvizzy/skyblocker/chat/ChatMessageListener.java
+++ b/src/main/java/me/xmrvizzy/skyblocker/chat/ChatMessageListener.java
@@ -3,17 +3,25 @@ package me.xmrvizzy.skyblocker.chat;
import me.xmrvizzy.skyblocker.chat.filters.*;
import me.xmrvizzy.skyblocker.skyblock.api.ApiKeyListener;
import me.xmrvizzy.skyblocker.skyblock.barn.HungryHiker;
+import me.xmrvizzy.skyblocker.skyblock.barn.TreasureHunter;
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 me.xmrvizzy.skyblocker.skyblock.barn.TreasureHunter;
+import me.xmrvizzy.skyblocker.utils.Utils;
+import net.fabricmc.fabric.api.client.message.v1.ClientReceiveMessageEvents;
import net.fabricmc.fabric.api.event.Event;
import net.fabricmc.fabric.api.event.EventFactory;
+import net.minecraft.client.MinecraftClient;
+import net.minecraft.client.network.ClientPlayerEntity;
import net.minecraft.text.Text;
+@FunctionalInterface
public interface ChatMessageListener {
+ /**
+ * An event called when a game message is received. Register your listeners in {@link ChatMessageListener#init()}.
+ */
Event<ChatMessageListener> EVENT = EventFactory.createArrayBacked(ChatMessageListener.class,
(listeners) -> (message, asString) -> {
for (ChatMessageListener listener : listeners) {
@@ -23,6 +31,9 @@ public interface ChatMessageListener {
return ChatFilterResult.PASS;
});
+ /**
+ * Registers {@link ChatMessageListener}s to {@link ChatMessageListener#EVENT} and registers {@link ChatMessageListener#EVENT} to {@link ClientReceiveMessageEvents#ALLOW_GAME}
+ */
static void init() {
ChatMessageListener[] listeners = new ChatMessageListener[]{
// Features
@@ -45,8 +56,33 @@ public interface ChatMessageListener {
new TeleportPadFilter(),
new AutopetFilter(),
};
- for (ChatMessageListener listener : listeners)
+ // Register all listeners to EVENT
+ for (ChatMessageListener listener : listeners) {
EVENT.register(listener);
+ }
+ // Register EVENT to ClientReceiveMessageEvents.ALLOW_GAME from fabric api
+ ClientReceiveMessageEvents.ALLOW_GAME.register((message, overlay) -> {
+ if (!Utils.isOnSkyblock) {
+ return true;
+ }
+ ChatFilterResult result = EVENT.invoker().onMessage(message, message.getString());
+ switch (result) {
+ case ACTION_BAR -> {
+ if (overlay) {
+ return true;
+ }
+ ClientPlayerEntity player = MinecraftClient.getInstance().player;
+ if (player != null) {
+ player.sendMessage(message, true);
+ return false;
+ }
+ }
+ case FILTER -> {
+ return false;
+ }
+ }
+ return true;
+ });
}
ChatFilterResult onMessage(Text message, String asString);
diff --git a/src/main/java/me/xmrvizzy/skyblocker/mixin/ChatHudListenerMixin.java b/src/main/java/me/xmrvizzy/skyblocker/mixin/ChatHudListenerMixin.java
deleted file mode 100644
index 8176a810..00000000
--- a/src/main/java/me/xmrvizzy/skyblocker/mixin/ChatHudListenerMixin.java
+++ /dev/null
@@ -1,41 +0,0 @@
-package me.xmrvizzy.skyblocker.mixin;
-
-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.ChatHud;
-import net.minecraft.client.gui.hud.MessageIndicator;
-import net.minecraft.client.network.ClientPlayerEntity;
-import net.minecraft.network.message.MessageSignatureData;
-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;
-
-@Mixin(ChatHud.class)
-public abstract class ChatHudListenerMixin {
- @Shadow
- @Final
- private MinecraftClient client;
-
- @Inject(method = "addMessage(Lnet/minecraft/text/Text;Lnet/minecraft/network/message/MessageSignatureData;ILnet/minecraft/client/gui/hud/MessageIndicator;Z)V", at = @At("HEAD"), cancellable = true)
- public void skyblocker$onMessage(Text message, MessageSignatureData signature, int ticks, MessageIndicator indicator, boolean refresh, CallbackInfo ci) {
- if (!Utils.isOnSkyblock)
- return;
- String asString = message.getString();
- ChatFilterResult result = ChatMessageListener.EVENT.invoker().onMessage(message, asString);
- switch (result) {
- case ACTION_BAR:
- ClientPlayerEntity player = client.player;
- if (player != null)
- player.sendMessage(message, true);
- case FILTER:
- ci.cancel();
- }
- }
-
-}