mirror of
https://github.com/PurpurMC/Purpur.git
synced 2026-02-18 08:57:44 +01:00
Upstream has released updates that appears to apply and compile correctly Paper Changes: 9dfe1321 Delay Chunk Unloads based on Player Movement f0409edc Drop Close region files patch, doesn't add any value. 700070c5 Fix undesirable behavior around world level changes due to priority
64 lines
3.4 KiB
Diff
64 lines
3.4 KiB
Diff
From 51abcd28f8b674ab671d50a661ecdb0607e142a9 Mon Sep 17 00:00:00 2001
|
|
From: William Blake Galbreath <blake.galbreath@gmail.com>
|
|
Date: Sat, 6 Jul 2019 21:12:58 -0500
|
|
Subject: [PATCH] MC-4 Fix - Item position desync
|
|
|
|
---
|
|
src/main/java/net/minecraft/server/EntityTrackerEntry.java | 6 ++++++
|
|
src/main/java/net/minecraft/server/PacketPlayOutEntity.java | 2 ++
|
|
src/main/java/net/pl3x/purpur/PurpurConfig.java | 2 ++
|
|
3 files changed, 10 insertions(+)
|
|
|
|
diff --git a/src/main/java/net/minecraft/server/EntityTrackerEntry.java b/src/main/java/net/minecraft/server/EntityTrackerEntry.java
|
|
index 390cb8e767..4e63fd83e0 100644
|
|
--- a/src/main/java/net/minecraft/server/EntityTrackerEntry.java
|
|
+++ b/src/main/java/net/minecraft/server/EntityTrackerEntry.java
|
|
@@ -131,6 +131,12 @@ public class EntityTrackerEntry {
|
|
double vec3d_dz = this.tracker.locZ() - 2.44140625E-4D*(this.zLoc);
|
|
boolean flag1 = (vec3d_dx * vec3d_dx + vec3d_dy * vec3d_dy + vec3d_dz * vec3d_dz) >= 7.62939453125E-6D;
|
|
// Paper end - reduce allocation of Vec3D here
|
|
+ // Purpur start - fixes MC-4
|
|
+ if (net.pl3x.purpur.PurpurConfig.fixItemPositionDesync && this.tracker instanceof EntityItem) {
|
|
+ Vec3D loc = PacketPlayOutEntity.decrypt(PacketPlayOutEntity.encrypt(tracker.locX()), PacketPlayOutEntity.encrypt(tracker.locY()), PacketPlayOutEntity.encrypt(tracker.locZ()));
|
|
+ tracker.setPosition(loc.getX(), loc.getY(), loc.getZ());
|
|
+ }
|
|
+ // Purpur end
|
|
Packet<?> packet1 = null;
|
|
boolean flag2 = flag1 || this.tickCounter % 60 == 0;
|
|
boolean flag3 = Math.abs(i - this.yRot) >= 1 || Math.abs(j - this.xRot) >= 1;
|
|
diff --git a/src/main/java/net/minecraft/server/PacketPlayOutEntity.java b/src/main/java/net/minecraft/server/PacketPlayOutEntity.java
|
|
index 5b1d959354..0010448e3a 100644
|
|
--- a/src/main/java/net/minecraft/server/PacketPlayOutEntity.java
|
|
+++ b/src/main/java/net/minecraft/server/PacketPlayOutEntity.java
|
|
@@ -14,10 +14,12 @@ public class PacketPlayOutEntity implements Packet<PacketListenerPlayOut> {
|
|
protected boolean h;
|
|
protected boolean i;
|
|
|
|
+ public static long encrypt(double d) { return a(d); } // Purpur - OBFHELPER
|
|
public static long a(double d0) {
|
|
return MathHelper.d(d0 * 4096.0D);
|
|
}
|
|
|
|
+ public static Vec3D decrypt(long x, long y, long z) { return a(x, y, z); } // Purpur - OBFHELPER
|
|
public static Vec3D a(long i, long j, long k) {
|
|
return (new Vec3D((double) i, (double) j, (double) k)).a(2.44140625E-4D);
|
|
}
|
|
diff --git a/src/main/java/net/pl3x/purpur/PurpurConfig.java b/src/main/java/net/pl3x/purpur/PurpurConfig.java
|
|
index 68bad6a13a..ab88636cad 100644
|
|
--- a/src/main/java/net/pl3x/purpur/PurpurConfig.java
|
|
+++ b/src/main/java/net/pl3x/purpur/PurpurConfig.java
|
|
@@ -163,8 +163,10 @@ public class PurpurConfig {
|
|
}
|
|
|
|
public static boolean dontSendUselessEntityPackets = false;
|
|
+ public static boolean fixItemPositionDesync = false;
|
|
private static void dontSendUselessEntityPackets() {
|
|
dontSendUselessEntityPackets = getBoolean("settings.dont-send-useless-entity-packets", dontSendUselessEntityPackets);
|
|
+ fixItemPositionDesync = getBoolean("settings.fix-item-position-desync", fixItemPositionDesync);
|
|
}
|
|
|
|
public static boolean barrelSixRows = false;
|
|
--
|
|
2.26.2
|
|
|