c97ce029e9
PaperMC believes that 1.16.2 is now ready for general release as we fixed the main issue plagueing the 1.16.x release, the MapLike data conversion issues. Until now, it was not safe for a server to convert a world to 1.16.2 without data conversion issues around villages and potentially other things. If you did, those MapLike errors meant something went wrong. This is now resolved. Big thanks to all those that helped, notably @BillyGalbreath and @Proximyst who did large parts of the update process with me. Please as always, backup your worlds and test before updating to 1.16.2! If you update to 1.16.2, there is no going back to an older build than this. --------------------------------- Co-authored-by: William Blake Galbreath <Blake.Galbreath@GMail.com> Co-authored-by: Mariell Hoversholm <proximyst@proximyst.com> Co-authored-by: krolik-exe <69214078+krolik-exe@users.noreply.github.com> Co-authored-by: BillyGalbreath <BillyGalbreath@users.noreply.github.com> Co-authored-by: stonar96 <minecraft.stonar96@gmail.com> Co-authored-by: Shane Freeder <theboyetronic@gmail.com> Co-authored-by: Jason <jasonpenilla2@me.com> Co-authored-by: kashike <kashike@vq.lc> Co-authored-by: Aurora <21148213+aurorasmiles@users.noreply.github.com> Co-authored-by: KennyTV <kennytv@t-online.de> Co-authored-by: commandblockguy <commandblockguy1@gmail.com> Co-authored-by: DigitalRegent <misterwener@gmail.com> Co-authored-by: ishland <ishlandmc@yeah.net>
62 Zeilen
4.4 KiB
Diff
62 Zeilen
4.4 KiB
Diff
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
From: Spottedleaf <spottedleaf@spottedleaf.dev>
|
|
Date: Mon, 27 Apr 2020 00:04:16 -0700
|
|
Subject: [PATCH] Reduce allocation of Vec3D by entity tracker
|
|
|
|
|
|
diff --git a/src/main/java/net/minecraft/server/EntityTrackerEntry.java b/src/main/java/net/minecraft/server/EntityTrackerEntry.java
|
|
index 8fecf1172c50669604ac097c8e5d81f83087a063..831298e3bb0de4ef1bec933cf378889ca4cbcde8 100644
|
|
--- a/src/main/java/net/minecraft/server/EntityTrackerEntry.java
|
|
+++ b/src/main/java/net/minecraft/server/EntityTrackerEntry.java
|
|
@@ -127,8 +127,12 @@ public class EntityTrackerEntry {
|
|
++this.o;
|
|
i = MathHelper.d(this.tracker.yaw * 256.0F / 360.0F);
|
|
j = MathHelper.d(this.tracker.pitch * 256.0F / 360.0F);
|
|
- Vec3D vec3d = this.tracker.getPositionVector().d(PacketPlayOutEntity.a(this.xLoc, this.yLoc, this.zLoc));
|
|
- boolean flag1 = vec3d.g() >= 7.62939453125E-6D;
|
|
+ // Paper start - reduce allocation of Vec3D here
|
|
+ double vec3d_dx = this.tracker.locX() - 2.44140625E-4D*(this.xLoc);
|
|
+ double vec3d_dy = this.tracker.locY() - 2.44140625E-4D*(this.yLoc);
|
|
+ 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
|
|
Packet<?> packet1 = null;
|
|
boolean flag2 = flag1 || this.tickCounter % 60 == 0;
|
|
boolean flag3 = Math.abs(i - this.yRot) >= 1 || Math.abs(j - this.xRot) >= 1;
|
|
@@ -145,9 +149,11 @@ public class EntityTrackerEntry {
|
|
// CraftBukkit end
|
|
|
|
if (this.tickCounter > 0 || this.tracker instanceof EntityArrow) {
|
|
- long k = PacketPlayOutEntity.a(vec3d.x);
|
|
- long l = PacketPlayOutEntity.a(vec3d.y);
|
|
- long i1 = PacketPlayOutEntity.a(vec3d.z);
|
|
+ // Paper start - remove allocation of Vec3D here
|
|
+ long k = PacketPlayOutEntity.a(vec3d_dx);
|
|
+ long l = PacketPlayOutEntity.a(vec3d_dy);
|
|
+ long i1 = PacketPlayOutEntity.a(vec3d_dz);
|
|
+ // Paper end - remove allocation of Vec3D here
|
|
boolean flag4 = k < -32768L || k > 32767L || l < -32768L || l > 32767L || i1 < -32768L || i1 > 32767L;
|
|
|
|
if (!flag4 && this.o <= 400 && !this.q && this.r == this.tracker.isOnGround()) {
|
|
diff --git a/src/main/java/net/minecraft/server/PlayerChunkMap.java b/src/main/java/net/minecraft/server/PlayerChunkMap.java
|
|
index 18cde447a983da69ed6deb079ff372004619c903..8de089ebf56d25c7799f822cdd26511a4651223d 100644
|
|
--- a/src/main/java/net/minecraft/server/PlayerChunkMap.java
|
|
+++ b/src/main/java/net/minecraft/server/PlayerChunkMap.java
|
|
@@ -2134,9 +2134,14 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d {
|
|
public void updatePlayer(EntityPlayer entityplayer) {
|
|
org.spigotmc.AsyncCatcher.catchOp("player tracker update"); // Spigot
|
|
if (entityplayer != this.tracker) {
|
|
- Vec3D vec3d = entityplayer.getPositionVector().d(this.tracker.getPositionVector()); // MC-155077, SPIGOT-5113
|
|
+ // Paper start - remove allocation of Vec3D here
|
|
+ //Vec3D vec3d = entityplayer.getPositionVector().d(this.tracker.getPositionVector()); // MC-155077, SPIGOT-5113
|
|
+ double vec3d_dx = entityplayer.locX() - this.tracker.locX();
|
|
+ double vec3d_dy = entityplayer.locY() - this.tracker.locY();
|
|
+ double vec3d_dz = entityplayer.locZ() - this.tracker.locZ();
|
|
+ // Paper end - remove allocation of Vec3D here
|
|
int i = Math.min(this.b(), (PlayerChunkMap.this.viewDistance - 1) * 16);
|
|
- boolean flag = vec3d.x >= (double) (-i) && vec3d.x <= (double) i && vec3d.z >= (double) (-i) && vec3d.z <= (double) i && this.tracker.a(entityplayer);
|
|
+ boolean flag = vec3d_dx >= (double) (-i) && vec3d_dx <= (double) i && vec3d_dz >= (double) (-i) && vec3d_dz <= (double) i && this.tracker.a(entityplayer); // Paper - remove allocation of Vec3D here
|
|
|
|
if (flag) {
|
|
boolean flag1 = this.tracker.attachedToPlayer;
|