974b0afca9
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.
65 lines
2.6 KiB
Diff
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
|
|
|