Skip to content

Commit 84d6e71

Browse files
Fix teleport confirm<->move packet order in 1.21.3
1 parent 3ac5bf6 commit 84d6e71

File tree

1 file changed

+21
-4
lines changed

1 file changed

+21
-4
lines changed

src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/network/MixinClientPlayNetworkHandler.java

Lines changed: 21 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -55,10 +55,7 @@
5555
import net.minecraft.world.World;
5656
import net.raphimc.viabedrock.api.BedrockProtocolVersion;
5757
import org.slf4j.Logger;
58-
import org.spongepowered.asm.mixin.Final;
59-
import org.spongepowered.asm.mixin.Mixin;
60-
import org.spongepowered.asm.mixin.Mutable;
61-
import org.spongepowered.asm.mixin.Shadow;
58+
import org.spongepowered.asm.mixin.*;
6259
import org.spongepowered.asm.mixin.injection.*;
6360
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
6461

@@ -91,10 +88,30 @@ public abstract class MixinClientPlayNetworkHandler extends ClientCommonNetworkH
9188
@Shadow
9289
private ClientWorld world;
9390

91+
@Unique
92+
private Packet<?> viaFabricPlus$teleportConfirmPacket;
93+
9494
protected MixinClientPlayNetworkHandler(MinecraftClient client, ClientConnection connection, ClientConnectionState connectionState) {
9595
super(client, connection, connectionState);
9696
}
9797

98+
@WrapWithCondition(method = "onPlayerPositionLook", at = @At(value = "INVOKE", target = "Lnet/minecraft/network/ClientConnection;send(Lnet/minecraft/network/packet/Packet;)V", ordinal = 0))
99+
private boolean changePacketOrder(ClientConnection instance, Packet<?> packet) {
100+
final boolean cancel = ProtocolTranslator.getTargetVersion().equalTo(ProtocolVersion.v1_21_2);
101+
if (cancel) {
102+
this.viaFabricPlus$teleportConfirmPacket = packet;
103+
}
104+
return !cancel;
105+
}
106+
107+
@Inject(method = "onPlayerPositionLook", at = @At("RETURN"))
108+
public void changePacketOrder(PlayerPositionLookS2CPacket packet, CallbackInfo ci) {
109+
if (viaFabricPlus$teleportConfirmPacket != null) {
110+
this.connection.send(viaFabricPlus$teleportConfirmPacket);
111+
viaFabricPlus$teleportConfirmPacket = null;
112+
}
113+
}
114+
98115
@WrapWithCondition(method = "onEntity", at = @At(value = "INVOKE", target = "Lnet/minecraft/entity/TrackedPosition;setPos(Lnet/minecraft/util/math/Vec3d;)V", ordinal = 0))
99116
private boolean dontHandleEntityPositionChange(TrackedPosition instance, Vec3d pos) {
100117
return ProtocolTranslator.getTargetVersion().newerThanOrEqualTo(ProtocolVersion.v1_21_2);

0 commit comments

Comments
 (0)