geforkt von Mirrors/Paper
bc127ea819
Upstream has released updates that appear to apply and compile correctly. This update has not been tested by PaperMC and as with ANY update, please do your own testing Bukkit Changes: eec4aab0 SPIGOT-6657: Add getPlayer to SheepDyeWoolEvent 205213c6 SPIGOT-6656: CauldronLevelChangeEvent is not fired correctly when dripstone fills the cauldron CraftBukkit Changes: b8c522d5 SPIGOT-6657: Add getPlayer to SheepDyeWoolEvent f04a77dc SPIGOT-6656: CauldronLevelChangeEvent is not fired correctly when dripstone fills the cauldron d1dbcebc SPIGOT-6653: Canceling snow bucket placement removes snow from bucket 4f34a67b #891: Fix scheduler task ID overflow and duplication issues Spigot Changes: d03d7f12 BUILDTOOLS-604: Rebuild patches
32 Zeilen
1.9 KiB
Diff
32 Zeilen
1.9 KiB
Diff
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
From: Spottedleaf <Spottedleaf@users.noreply.github.com>
|
|
Date: Fri, 12 Jun 2020 16:51:39 -0700
|
|
Subject: [PATCH] Prevent position desync in playerconnection causing tp
|
|
exploit
|
|
|
|
Caused the server to revert to the player's overworld coordinates
|
|
after teleporting into the end.
|
|
|
|
Sidenote: The underlying issue is that the move call can teleport
|
|
entities and do other things like kill the entity. In the future,
|
|
to fix all exploits derieved from this usually unexpected
|
|
behaviour, we need to move all of this dangerous logic outside
|
|
of the move call and into an appropriate place in the tick method.
|
|
|
|
diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
|
|
index 5ec29d1d73a4a828d35cec259469c4929368623f..c9bc5e355411d9b6d7cabab6cb8d96bfefe635a5 100644
|
|
--- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
|
|
+++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
|
|
@@ -1325,6 +1325,11 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Ser
|
|
|
|
this.player.move(MoverType.PLAYER, new Vec3(d7, d8, d9));
|
|
this.player.setOnGround(packet.isOnGround()); // CraftBukkit - SPIGOT-5810, SPIGOT-5835: reset by this.player.move
|
|
+ // Paper start - prevent position desync
|
|
+ if (this.awaitingPositionFromClient != null) {
|
|
+ return; // ... thanks Mojang for letting move calls teleport across dimensions.
|
|
+ }
|
|
+ // Paper end - prevent position desync
|
|
double d12 = d8;
|
|
|
|
d7 = d0 - this.player.getX();
|