PaperMC/Spigot-Server-Patches/0150-Optimise-removeQueue.patch
Aikar 05466e3b47
[Auto] Update Upstream
Upstream has released updates that appear to apply compile correctly.
This update has not been tested by PaperMC and as with ANY update, please do your own testing.

Bukkit Changes:
d2834556 SPIGOT-4219: Event for PigZombies angering.

CraftBukkit Changes:
a9c796f1 SPIGOT-4184: Fix furnaces not matching Vanilla smelt or animations
195f071e SPIGOT-4219: Event for PigZombies angering.
5e3082c7 SPIGOT-4230: Improve legacy block types
2018-08-05 19:46:43 -04:00

65 lines
2.7 KiB
Diff

From ebb301f7d984c0b8b4e17421060351a161896c9b 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 9bb70c151d..9505511b14 100644
--- a/src/main/java/net/minecraft/server/EntityPlayer.java
+++ b/src/main/java/net/minecraft/server/EntityPlayer.java
@@ -5,8 +5,10 @@ import com.mojang.authlib.GameProfile;
import io.netty.buffer.Unpooled;
import io.netty.util.concurrent.Future;
import io.netty.util.concurrent.GenericFutureListener;
+import java.util.ArrayDeque; // Paper
import java.util.ArrayList;
import java.util.Collection;
+import java.util.Deque; // Paper
import java.util.Iterator;
import java.util.List;
import java.util.Random;
@@ -44,7 +46,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 AdvancementDataPlayer cg;
private final ServerStatisticManager ch;
private float ci = Float.MIN_VALUE;
@@ -364,10 +366,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));
}
@@ -1132,7 +1141,11 @@ public class EntityPlayer extends EntityHuman implements ICrafting {
this.lastHealthSent = -1.0F;
this.cp = -1;
// this.cz.a((RecipeBook) entityplayer.cz); // CraftBukkit
- this.removeQueue.addAll(entityplayer.removeQueue);
+ // Paper start - Optimize remove queue
+ //this.removeQueue.addAll(entityplayer.removeQueue);
+ if (this.removeQueue != entityplayer.removeQueue) {
+ this.removeQueue.addAll(entityplayer.removeQueue);
+ }
this.cy = entityplayer.cy;
this.cD = entityplayer.cD;
this.setShoulderEntityLeft(entityplayer.getShoulderEntityLeft());
--
2.18.0