geforkt von Mirrors/Paper
b31089a929
Upstream has released updates that appear to apply and compile correctly. This update has not been tested by PaperMC and as with ANY update, please do your own testing Bukkit Changes: d264e972 #591: Add option for a consumer before spawning an item 1c537fce #590: Add spawn and transform reasons for piglin zombification. CraftBukkit Changes: ee5006d1 #810: Add option for a consumer before spawning an item f6a39d3c #809: Add spawn and transform reasons for piglin zombification. 0c24068a Organise imports Spigot Changes: bff52619 Organise imports
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 d40d41faae13ee17bbe1c7bd4b64126bcaee5643..3960a975e74ed81c45819fe5e0f01c6c18252982 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 d1ec4de8b64934bb5e9346398bc471dab8457b83..2654afa43b8322752267ca71447567e91323922e 100644
|
|
--- a/src/main/java/net/minecraft/server/PlayerChunkMap.java
|
|
+++ b/src/main/java/net/minecraft/server/PlayerChunkMap.java
|
|
@@ -2135,9 +2135,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;
|