mirror of
https://github.com/PaperMC/Paper.git
synced 2024-12-15 07:01:36 +08:00
38 lines
1.5 KiB
Diff
38 lines
1.5 KiB
Diff
|
From 1e7d68cf958496b9e67872eeb5cc01364bd15339 Mon Sep 17 00:00:00 2001
|
||
|
From: Aikar <aikar@aikar.co>
|
||
|
Date: Sun, 3 May 2020 14:25:55 -0400
|
||
|
Subject: [PATCH] Sync position on teleportation
|
||
|
|
||
|
We've seen many a cases where the "last good" x/y/z is desynced from
|
||
|
the x/y/z that is checked for moving too fast.
|
||
|
|
||
|
Theory is that when you have multiple movement packets queued up,
|
||
|
and the player is teleported after the first then the 2nd and 3rd come in,
|
||
|
it is triggering a massive movement velocity.
|
||
|
|
||
|
This will ensure that the servers position is synchronized anytime player is teleported.
|
||
|
|
||
|
diff --git a/src/main/java/net/minecraft/server/PlayerConnection.java b/src/main/java/net/minecraft/server/PlayerConnection.java
|
||
|
index 02bda8bee4..a188d9f3b6 100644
|
||
|
--- a/src/main/java/net/minecraft/server/PlayerConnection.java
|
||
|
+++ b/src/main/java/net/minecraft/server/PlayerConnection.java
|
||
|
@@ -500,6 +500,7 @@ public class PlayerConnection implements PacketListenerPlayIn {
|
||
|
this.o = this.teleportPos.x;
|
||
|
this.p = this.teleportPos.y;
|
||
|
this.q = this.teleportPos.z;
|
||
|
+ this.syncPosition(); // Paper
|
||
|
if (this.player.H()) {
|
||
|
this.player.I();
|
||
|
}
|
||
|
@@ -1271,6 +1272,7 @@ public class PlayerConnection implements PacketListenerPlayIn {
|
||
|
|
||
|
this.A = this.e;
|
||
|
this.player.setLocation(d0, d1, d2, f, f1);
|
||
|
+ this.syncPosition(); // Paper
|
||
|
this.player.playerConnection.sendPacket(new PacketPlayOutPosition(d0 - d3, d1 - d4, d2 - d5, f - f2, f1 - f3, set, this.teleportAwait));
|
||
|
}
|
||
|
|
||
|
--
|
||
|
2.26.2
|
||
|
|