aboutsummaryrefslogtreecommitdiffhomepage
path: root/Spigot-Server-Patches-Unmapped/0481-Reduce-allocation-of-Vec3D-by-entity-tracker.patch
diff options
context:
space:
mode:
Diffstat (limited to 'Spigot-Server-Patches-Unmapped/0481-Reduce-allocation-of-Vec3D-by-entity-tracker.patch')
-rw-r--r--Spigot-Server-Patches-Unmapped/0481-Reduce-allocation-of-Vec3D-by-entity-tracker.patch61
1 files changed, 61 insertions, 0 deletions
diff --git a/Spigot-Server-Patches-Unmapped/0481-Reduce-allocation-of-Vec3D-by-entity-tracker.patch b/Spigot-Server-Patches-Unmapped/0481-Reduce-allocation-of-Vec3D-by-entity-tracker.patch
new file mode 100644
index 0000000000..a02030cca4
--- /dev/null
+++ b/Spigot-Server-Patches-Unmapped/0481-Reduce-allocation-of-Vec3D-by-entity-tracker.patch
@@ -0,0 +1,61 @@
+From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
+From: Spottedleaf <[email protected]>
+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/level/EntityTrackerEntry.java b/src/main/java/net/minecraft/server/level/EntityTrackerEntry.java
+index b64aa6c9ce906b08e43891f8c465fa4e8b2a8906..58dd349adf2bc9bac6569464ef7a7aec81729e79 100644
+--- a/src/main/java/net/minecraft/server/level/EntityTrackerEntry.java
++++ b/src/main/java/net/minecraft/server/level/EntityTrackerEntry.java
+@@ -155,8 +155,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;
+@@ -173,9 +177,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/level/PlayerChunkMap.java b/src/main/java/net/minecraft/server/level/PlayerChunkMap.java
+index 5538d97e237e448a7d3eb76a57609980c3a6bddb..ede47aaaace80280756fe4463def1ea26792c9e4 100644
+--- a/src/main/java/net/minecraft/server/level/PlayerChunkMap.java
++++ b/src/main/java/net/minecraft/server/level/PlayerChunkMap.java
+@@ -2227,9 +2227,14 @@ Sections go from 0..16. Now whenever a section is not empty, it can potentially
+ 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;