From 4d9b2a209e7351b0a56cd0cd8b8468475c6b4aa6 Mon Sep 17 00:00:00 2001 From: ThisTestUser Date: Sat, 29 Jun 2024 15:31:59 -0400 Subject: [PATCH 1/4] Fix PacketOutputEvent --- .../mixin/ClientCommonNetworkHandlerMixin.java | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/src/main/java/net/wurstclient/mixin/ClientCommonNetworkHandlerMixin.java b/src/main/java/net/wurstclient/mixin/ClientCommonNetworkHandlerMixin.java index 84a4d478..d9a05dd0 100644 --- a/src/main/java/net/wurstclient/mixin/ClientCommonNetworkHandlerMixin.java +++ b/src/main/java/net/wurstclient/mixin/ClientCommonNetworkHandlerMixin.java @@ -9,10 +9,10 @@ package net.wurstclient.mixin; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; -import org.spongepowered.asm.mixin.injection.Inject; -import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; +import org.spongepowered.asm.mixin.injection.Redirect; import net.minecraft.client.network.ClientCommonNetworkHandler; +import net.minecraft.network.ClientConnection; import net.minecraft.network.listener.ClientCommonPacketListener; import net.minecraft.network.packet.Packet; import net.wurstclient.event.EventManager; @@ -22,15 +22,15 @@ import net.wurstclient.events.PacketOutputListener.PacketOutputEvent; public abstract class ClientCommonNetworkHandlerMixin implements ClientCommonPacketListener { - @Inject(at = @At("HEAD"), - method = "sendPacket(Lnet/minecraft/network/packet/Packet;)V", - cancellable = true) - private void onSendPacket(Packet packet, CallbackInfo ci) + @Redirect(method = "sendPacket(Lnet/minecraft/network/packet/Packet;)V", + at = @At(value = "INVOKE", + target = "Lnet/minecraft/network/ClientConnection;send(Lnet/minecraft/network/packet/Packet;)V")) + private void onSendPacket(ClientConnection connection, Packet packet) { PacketOutputEvent event = new PacketOutputEvent(packet); EventManager.fire(event); - if(event.isCancelled()) - ci.cancel(); + if(!event.isCancelled()) + connection.send(event.getPacket()); } } From ab11bc49e1e192cb7da8307e748720010c0b2117 Mon Sep 17 00:00:00 2001 From: ThisTestUser Date: Sat, 29 Jun 2024 15:35:47 -0400 Subject: [PATCH 2/4] Apply spotless --- .../net/wurstclient/mixin/ClientCommonNetworkHandlerMixin.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/net/wurstclient/mixin/ClientCommonNetworkHandlerMixin.java b/src/main/java/net/wurstclient/mixin/ClientCommonNetworkHandlerMixin.java index d9a05dd0..bca41969 100644 --- a/src/main/java/net/wurstclient/mixin/ClientCommonNetworkHandlerMixin.java +++ b/src/main/java/net/wurstclient/mixin/ClientCommonNetworkHandlerMixin.java @@ -24,7 +24,7 @@ public abstract class ClientCommonNetworkHandlerMixin { @Redirect(method = "sendPacket(Lnet/minecraft/network/packet/Packet;)V", at = @At(value = "INVOKE", - target = "Lnet/minecraft/network/ClientConnection;send(Lnet/minecraft/network/packet/Packet;)V")) + target = "Lnet/minecraft/network/ClientConnection;send(Lnet/minecraft/network/packet/Packet;)V")) private void onSendPacket(ClientConnection connection, Packet packet) { PacketOutputEvent event = new PacketOutputEvent(packet); From 88d8cc0dd948114c295ac71e069e2e90e88526f8 Mon Sep 17 00:00:00 2001 From: ThisTestUser Date: Mon, 8 Jul 2024 16:33:03 -0400 Subject: [PATCH 3/4] Use WrapOperation --- .../mixin/ClientCommonNetworkHandlerMixin.java | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/src/main/java/net/wurstclient/mixin/ClientCommonNetworkHandlerMixin.java b/src/main/java/net/wurstclient/mixin/ClientCommonNetworkHandlerMixin.java index bca41969..80bba53c 100644 --- a/src/main/java/net/wurstclient/mixin/ClientCommonNetworkHandlerMixin.java +++ b/src/main/java/net/wurstclient/mixin/ClientCommonNetworkHandlerMixin.java @@ -9,7 +9,9 @@ package net.wurstclient.mixin; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; -import org.spongepowered.asm.mixin.injection.Redirect; + +import com.llamalad7.mixinextras.injector.wrapoperation.Operation; +import com.llamalad7.mixinextras.injector.wrapoperation.WrapOperation; import net.minecraft.client.network.ClientCommonNetworkHandler; import net.minecraft.network.ClientConnection; @@ -22,15 +24,17 @@ import net.wurstclient.events.PacketOutputListener.PacketOutputEvent; public abstract class ClientCommonNetworkHandlerMixin implements ClientCommonPacketListener { - @Redirect(method = "sendPacket(Lnet/minecraft/network/packet/Packet;)V", + @WrapOperation( + method = "sendPacket(Lnet/minecraft/network/packet/Packet;)V", at = @At(value = "INVOKE", target = "Lnet/minecraft/network/ClientConnection;send(Lnet/minecraft/network/packet/Packet;)V")) - private void onSendPacket(ClientConnection connection, Packet packet) + private void wrapSendPacket(ClientConnection connection, Packet packet, + Operation original) { PacketOutputEvent event = new PacketOutputEvent(packet); EventManager.fire(event); if(!event.isCancelled()) - connection.send(event.getPacket()); + original.call(connection, event.getPacket()); } } From 5f9bfe86237ae58a0f4d3b6f64f37d1bc5da5937 Mon Sep 17 00:00:00 2001 From: Alexander01998 Date: Tue, 9 Jul 2024 09:01:20 +0200 Subject: [PATCH 4/4] Slight refactor to put the at parameter first --- .../wurstclient/mixin/ClientCommonNetworkHandlerMixin.java | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/src/main/java/net/wurstclient/mixin/ClientCommonNetworkHandlerMixin.java b/src/main/java/net/wurstclient/mixin/ClientCommonNetworkHandlerMixin.java index 80bba53c..41828989 100644 --- a/src/main/java/net/wurstclient/mixin/ClientCommonNetworkHandlerMixin.java +++ b/src/main/java/net/wurstclient/mixin/ClientCommonNetworkHandlerMixin.java @@ -24,10 +24,9 @@ import net.wurstclient.events.PacketOutputListener.PacketOutputEvent; public abstract class ClientCommonNetworkHandlerMixin implements ClientCommonPacketListener { - @WrapOperation( - method = "sendPacket(Lnet/minecraft/network/packet/Packet;)V", - at = @At(value = "INVOKE", - target = "Lnet/minecraft/network/ClientConnection;send(Lnet/minecraft/network/packet/Packet;)V")) + @WrapOperation(at = @At(value = "INVOKE", + target = "Lnet/minecraft/network/ClientConnection;send(Lnet/minecraft/network/packet/Packet;)V"), + method = "sendPacket(Lnet/minecraft/network/packet/Packet;)V") private void wrapSendPacket(ClientConnection connection, Packet packet, Operation original) {