geforkt von Mirrors/Paper
35 Zeilen
1.6 KiB
Diff
35 Zeilen
1.6 KiB
Diff
From 0000000000000000000000000000000000000000 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 2ab3f2ffb7266bc6a566620b4f3db31a98b9208e..553c7313e2b699be88ea01460fd299421c42b176 100644
|
|
--- a/src/main/java/net/minecraft/server/PlayerConnection.java
|
|
+++ b/src/main/java/net/minecraft/server/PlayerConnection.java
|
|
@@ -501,6 +501,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();
|
|
}
|
|
@@ -1299,6 +1300,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));
|
|
}
|
|
|