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 f73a94ac7009d41cd99b229e28d969586d6df419..0c87166beb89dd220e2f7aed1c47a331297eef0d 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java @@ -606,7 +606,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) { @@ -618,10 +625,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();