diff options
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(); + } } } |