From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Marvin Rieple Date: Sun, 5 Dec 2021 16:42:07 +0100 Subject: [PATCH] Fix riding distance statistics Fixes entity ride distance stats not being awarded correctly. Based upon https://hub.spigotmc.org/stash/projects/SPIGOT/repos/craftbukkit/pull-requests/900 diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java index d85f5817f1aaebff3d93ee472d4580af72f7eae2..926d0a80cbb55184955ac6720948d2e86683cc57 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java @@ -609,7 +609,14 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Ser Location curPos = this.getCraftPlayer().getLocation(); // Spigot entity.absMoveTo(d3, d4, d5, f, f1); - this.player.absMoveTo(d3, d4, d5, this.player.getYRot(), this.player.getXRot()); // CraftBukkit + // Paper start - SPIGOT-4396: Synchronize player and vehicle + // Based upon https://hub.spigotmc.org/stash/projects/SPIGOT/repos/craftbukkit/pull-requests/900 + Vec3 oldPlayerPosition = this.player.position(); + entity.positionRider(this.player); + this.player.xo = oldPlayerPosition.x; + this.player.yo = oldPlayerPosition.y; + this.player.zo = oldPlayerPosition.z; + // Paper end // Paper start - optimise out extra getCubes boolean teleportBack = flag1; // violating this is always a fail if (!teleportBack) { @@ -621,10 +628,16 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Ser } if (teleportBack) { // Paper end - optimise out extra getCubes entity.absMoveTo(d0, d1, d2, f, f1); - this.player.absMoveTo(d0, d1, d2, this.player.getYRot(), this.player.getXRot()); // CraftBukkit + // Paper start - SPIGOT-6475 + entity.positionRider(this.player); + this.player.xo = oldPlayerPosition.x; + this.player.yo = oldPlayerPosition.y; + this.player.zo = oldPlayerPosition.z; + // Paper end this.connection.send(new ClientboundMoveVehiclePacket(entity)); return; } + player.checkRidingStatistics(player.getX() - oldPlayerPosition.x, player.getY() - oldPlayerPosition.y, player.getZ() - oldPlayerPosition.z); // Paper - SPIGOT-6475: Update riding statistic // CraftBukkit start - fire PlayerMoveEvent Player player = this.getCraftPlayer();