diff options
author | ExternalTime <84183548+ExternalTime@users.noreply.github.com> | 2022-03-08 15:12:02 +0100 |
---|---|---|
committer | ExternalTime <84183548+ExternalTime@users.noreply.github.com> | 2022-03-08 15:12:02 +0100 |
commit | f2553cef257df3e52a131ed919dc015ce2a1a5d4 (patch) | |
tree | 2029a50a2e25a3c2d949ef1baa32aa7adba298aa /src/main/java/me/xmrvizzy/skyblocker/mixin | |
parent | 165d2a190cf82b90bc47cf7a3875a094fab9b81a (diff) | |
download | Skyblocker-f2553cef257df3e52a131ed919dc015ce2a1a5d4.tar.gz Skyblocker-f2553cef257df3e52a131ed919dc015ce2a1a5d4.tar.bz2 Skyblocker-f2553cef257df3e52a131ed919dc015ce2a1a5d4.zip |
Rewrote chat events interface to use fabric events API
Diffstat (limited to 'src/main/java/me/xmrvizzy/skyblocker/mixin')
-rw-r--r-- | src/main/java/me/xmrvizzy/skyblocker/mixin/ChatHudListenerMixin.java | 24 |
1 files changed, 20 insertions, 4 deletions
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(); + } } } |