From 975494f0230d4b62ae16e8213d3a55e878dee0ff Mon Sep 17 00:00:00 2001 From: hypherionmc Date: Sun, 17 Mar 2024 20:32:32 +0200 Subject: [PATCH] [CHANGE] Change hook in point for ChatEvent to fix compat with chat modification mods --- .../ServerGamePacketListenerImplMixin.java | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/Common/src/main/java/com/hypherionmc/craterlib/mixin/events/ServerGamePacketListenerImplMixin.java b/Common/src/main/java/com/hypherionmc/craterlib/mixin/events/ServerGamePacketListenerImplMixin.java index 1b8f1ad..76893db 100644 --- a/Common/src/main/java/com/hypherionmc/craterlib/mixin/events/ServerGamePacketListenerImplMixin.java +++ b/Common/src/main/java/com/hypherionmc/craterlib/mixin/events/ServerGamePacketListenerImplMixin.java @@ -2,8 +2,10 @@ package com.hypherionmc.craterlib.mixin.events; import com.hypherionmc.craterlib.api.event.server.CraterServerChatEvent; import com.hypherionmc.craterlib.core.event.CraterEventBus; +import net.minecraft.network.chat.Component; import net.minecraft.network.chat.PlayerChatMessage; import net.minecraft.server.level.ServerPlayer; +import net.minecraft.server.network.FilteredText; import net.minecraft.server.network.ServerGamePacketListenerImpl; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; @@ -11,15 +13,21 @@ import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; -@Mixin(ServerGamePacketListenerImpl.class) +import java.util.concurrent.CompletableFuture; + +@Mixin(value = ServerGamePacketListenerImpl.class, priority = Integer.MIN_VALUE) public class ServerGamePacketListenerImplMixin { @Shadow public ServerPlayer player; - @Inject(method = "broadcastChatMessage", at = @At("HEAD"), cancellable = true) - private void injectChatEvent(PlayerChatMessage chatMessage, CallbackInfo ci) { - CraterServerChatEvent event = new CraterServerChatEvent(this.player, chatMessage.decoratedContent().getString(), chatMessage.decoratedContent()); + @Inject( + method = "lambda$handleChat$8", + at = @At("HEAD"), + cancellable = true + ) + private void injectChatEvent(PlayerChatMessage arg, CompletableFuture completableFuture, CompletableFuture completableFuture2, Void void_, CallbackInfo ci) { + CraterServerChatEvent event = new CraterServerChatEvent(this.player, arg.decoratedContent().getString(), arg.decoratedContent()); CraterEventBus.INSTANCE.postEvent(event); if (event.wasCancelled()) ci.cancel();