Fix root cause of camel mount offset bug

Fixes PaperMC/Paper#8640
This commit is contained in:
BillyGalbreath
2022-12-15 06:16:01 -06:00
parent 1f9d676ea8
commit ecc06717cc
2 changed files with 32 additions and 25 deletions

View File

@@ -1,25 +0,0 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: BillyGalbreath <blake.galbreath@gmail.com>
Date: Thu, 15 Dec 2022 02:03:38 -0600
Subject: [PATCH] Fix MC-258430 Camel LastPoseTime
This isn't a proper fix, but just a temporary workaround by
resetting the LastPoseTime when a player mounts a camel.
diff --git a/src/main/java/net/minecraft/world/entity/animal/camel/Camel.java b/src/main/java/net/minecraft/world/entity/animal/camel/Camel.java
index f9d77ad2493b9ba67e8f45ce248d29a8e9ab7b80..1074d6bda611feb60230168774cc3f8b278c8a38 100644
--- a/src/main/java/net/minecraft/world/entity/animal/camel/Camel.java
+++ b/src/main/java/net/minecraft/world/entity/animal/camel/Camel.java
@@ -85,6 +85,12 @@ public class Camel extends AbstractHorse implements PlayerRideableJumping, Rider
public int getPurpurBreedTime() {
return this.level.purpurConfig.camelBreedingTicks;
}
+
+ @Override
+ protected void doPlayerRide(Player player) {
+ resetLastPoseChangeTick(this.level.getGameTime());
+ super.doPlayerRide(player);
+ }
// Purpur end
@Override

View File

@@ -0,0 +1,32 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: BillyGalbreath <blake.galbreath@gmail.com>
Date: Thu, 15 Dec 2022 02:03:38 -0600
Subject: [PATCH] Fix Paper#8640
diff --git a/src/main/java/net/minecraft/network/protocol/game/ClientboundSetTimePacket.java b/src/main/java/net/minecraft/network/protocol/game/ClientboundSetTimePacket.java
index fa3c960992cc240161817e54659d83fed259f2fe..b9c24f56b4ec36c07f188b6c406186684a2b3f4f 100644
--- a/src/main/java/net/minecraft/network/protocol/game/ClientboundSetTimePacket.java
+++ b/src/main/java/net/minecraft/network/protocol/game/ClientboundSetTimePacket.java
@@ -8,7 +8,7 @@ public class ClientboundSetTimePacket implements Packet<ClientGamePacketListener
private long dayTime; public void setDayTime(long dayTime) { this.dayTime = dayTime; } // Purpur
public ClientboundSetTimePacket(long time, long timeOfDay, boolean doDaylightCycle) {
- this.gameTime = time % 192000; // Paper - fix guardian beam
+ this.gameTime = time % 192000; // Paper - fix guardian beam // Purpur - diff on change
long l = timeOfDay;
if (!doDaylightCycle) {
l = -timeOfDay;
diff --git a/src/main/java/net/minecraft/world/entity/animal/camel/Camel.java b/src/main/java/net/minecraft/world/entity/animal/camel/Camel.java
index f9d77ad2493b9ba67e8f45ce248d29a8e9ab7b80..be6a6617e5312601c25c1bf3dce3f577c19437b9 100644
--- a/src/main/java/net/minecraft/world/entity/animal/camel/Camel.java
+++ b/src/main/java/net/minecraft/world/entity/animal/camel/Camel.java
@@ -590,7 +590,7 @@ public class Camel extends AbstractHorse implements PlayerRideableJumping, Rider
@VisibleForTesting
public void resetLastPoseChangeTick(long lastPoseTick) {
- this.entityData.set(LAST_POSE_CHANGE_TICK, lastPoseTick);
+ this.entityData.set(LAST_POSE_CHANGE_TICK, lastPoseTick % 192000); // Purpur - paper alter's client time in Paper#8630, last pose tick must match
}
public long getPoseTime() {