46 lines
2.9 KiB
Diff
46 lines
2.9 KiB
Diff
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
From: Marvin Rieple <derrieple@gmail.com>
|
|
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();
|