aboutsummaryrefslogtreecommitdiffhomepage
path: root/Spigot-Server-Patches/0174-Optimise-removeQueue.patch
diff options
context:
space:
mode:
Diffstat (limited to 'Spigot-Server-Patches/0174-Optimise-removeQueue.patch')
-rw-r--r--Spigot-Server-Patches/0174-Optimise-removeQueue.patch65
1 files changed, 65 insertions, 0 deletions
diff --git a/Spigot-Server-Patches/0174-Optimise-removeQueue.patch b/Spigot-Server-Patches/0174-Optimise-removeQueue.patch
new file mode 100644
index 0000000000..ff9a5a223f
--- /dev/null
+++ b/Spigot-Server-Patches/0174-Optimise-removeQueue.patch
@@ -0,0 +1,65 @@
+From 812cbc220dbd54319a06cb73cb47b38a4871221e Mon Sep 17 00:00:00 2001
+From: Alfie Cleveland <[email protected]>
+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 4da83a1bf..a7a71242e 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;
+@@ -36,7 +38,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;
+@@ -248,10 +250,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));
+ }
+@@ -991,7 +1000,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.0.windows.1
+