papermc/Spigot-Server-Patches/0172-Optimise-removeQueue.patch
Zach Brown 974b0afca9
Remove last bit of chunk exists region file fix
CraftBukkit removed their implementation that caused this issue,
switching to Mojang's implementation which doesn't appear to share it. I
already removed the important bit in the last upstream merge, this is
just unused and unnecessary now. So we remove it.
2017-04-29 05:27:31 -05:00

65 lines
2.6 KiB
Diff

From e11ca040e04967c5991c13652e8d683f5d05d191 Mon Sep 17 00:00:00 2001
From: Alfie Cleveland <alfeh@me.com>
Date: Fri, 25 Nov 2016 13:22:40 +0000
Subject: [PATCH] Optimise removeQueue
diff --git a/src/main/java/net/minecraft/server/EntityPlayer.java b/src/main/java/net/minecraft/server/EntityPlayer.java
index eca224bdb..58d40f994 100644
--- a/src/main/java/net/minecraft/server/EntityPlayer.java
+++ b/src/main/java/net/minecraft/server/EntityPlayer.java
@@ -4,7 +4,9 @@ import com.google.common.collect.Lists;
import com.google.common.collect.Sets;
import com.mojang.authlib.GameProfile;
import io.netty.buffer.Unpooled;
+import java.util.ArrayDeque; // Paper
import java.util.Collection;
+import java.util.Deque; // Paper
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
@@ -38,7 +40,7 @@ public class EntityPlayer extends EntityHuman implements ICrafting {
public final PlayerInteractManager playerInteractManager;
public double d;
public double e;
- public final List<Integer> removeQueue = Lists.newLinkedList();
+ public final Deque<Integer> removeQueue = new ArrayDeque<>(); // Paper
private final ServerStatisticManager bU;
private float bV = Float.MIN_VALUE;
private int bW = Integer.MIN_VALUE;
@@ -251,10 +253,17 @@ public class EntityPlayer extends EntityHuman implements ICrafting {
Iterator iterator = this.removeQueue.iterator();
int j = 0;
- while (iterator.hasNext() && j < i) {
+ // Paper start
+ /* while (iterator.hasNext() && j < i) {
aint[j++] = ((Integer) iterator.next()).intValue();
iterator.remove();
+ } */
+
+ Integer integer;
+ while (j < i && (integer = this.removeQueue.poll()) != null) {
+ aint[j++] = integer.intValue();
}
+ // Paper end
this.playerConnection.sendPacket(new PacketPlayOutEntityDestroy(aint));
}
@@ -995,7 +1004,12 @@ public class EntityPlayer extends EntityHuman implements ICrafting {
this.lastSentExp = -1;
this.lastHealthSent = -1.0F;
this.cc = -1;
- this.removeQueue.addAll(((EntityPlayer) entityhuman).removeQueue);
+ // this.removeQueue.addAll(((EntityPlayer) entityhuman).removeQueue); // Paper
+ // Paper start
+ if (this.removeQueue != ((EntityPlayer) entityhuman).removeQueue) {
+ this.removeQueue.addAll(((EntityPlayer) entityhuman).removeQueue);
+ }
+ // Paper end
}
protected void a(MobEffect mobeffect) {
--
2.12.2.windows.2