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: b75eeca0 Boost light task priority to ensure it doesnt hold up chunk loads 3d2bc848 Ensure VillagerTrades doesn't load async - fixes #3495 e470f1ef Add more information to Timing Reports f4a47db6 Improve Thread Pool usage to allow single threads for single cpu servers a4fe910f Fix sounds when using worldedit regen command 70ad51a8 Updated Upstream (Bukkit/CraftBukkit) d7cfa4fa Improve legacy format serialization more
64 lines
3.4 KiB
Diff
64 lines
3.4 KiB
Diff
From 1e6d612a1824e5709bda2199218af4610166a678 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.24.0
|
|
|