geforkt von Mirrors/Paper
899bc53b79
Upstream has released updates that appears 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: f47abd88 SPIGOT-6242: Fix some file line endings de96535b SPIGOT-6234: enum classes don't serialize properly when implementing ConfigurationSerializable CraftBukkit Changes: 4475707d SPIGOT-6244: /spawnpoint ignores angle 8b3b096d SPIGOT-6242: Fix some file line endings 4b33c749 SPIGOT-6186: Canceling a CreatureSpawnEvent results in a "Unable to summon entity due to duplicate UUIDs" error 2b3ca726 SPIGOT-6236: Vehicle passenger portal cooldown does not change
69 Zeilen
3.3 KiB
Diff
69 Zeilen
3.3 KiB
Diff
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
From: vemacs <d@nkmem.es>
|
|
Date: Wed, 23 Nov 2016 08:31:45 -0500
|
|
Subject: [PATCH] Cache user authenticator threads
|
|
|
|
|
|
diff --git a/src/main/java/net/minecraft/server/EntityPlayer.java b/src/main/java/net/minecraft/server/EntityPlayer.java
|
|
index 35a5dbf4356b38ecf2acd699f15a103c3ee0b93c..279b91d3de42bb7d3a1b99b836a2a6c2873a2077 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.mojang.authlib.GameProfile;
|
|
import com.mojang.datafixers.util.Either;
|
|
import com.mojang.serialization.DataResult;
|
|
+import java.util.ArrayDeque; // Paper
|
|
import java.util.Collection;
|
|
+import java.util.Deque; // Paper
|
|
import java.util.Iterator;
|
|
import java.util.List;
|
|
import java.util.Optional;
|
|
@@ -42,7 +44,7 @@ public class EntityPlayer extends EntityHuman implements ICrafting {
|
|
public PlayerConnection playerConnection;
|
|
public final MinecraftServer server;
|
|
public final PlayerInteractManager playerInteractManager;
|
|
- public final List<Integer> removeQueue = Lists.newLinkedList();
|
|
+ public final Deque<Integer> removeQueue = new ArrayDeque<>(); // Paper
|
|
private final AdvancementDataPlayer advancementDataPlayer;
|
|
private final ServerStatisticManager serverStatisticManager;
|
|
private float lastHealthScored = Float.MIN_VALUE;
|
|
@@ -418,13 +420,20 @@ public class EntityPlayer extends EntityHuman implements ICrafting {
|
|
while (!this.removeQueue.isEmpty()) {
|
|
int i = Math.min(this.removeQueue.size(), Integer.MAX_VALUE);
|
|
int[] aint = new int[i];
|
|
- Iterator<Integer> iterator = this.removeQueue.iterator();
|
|
+ //Iterator<Integer> iterator = this.removeQueue.iterator(); // Paper
|
|
int j = 0;
|
|
|
|
- while (iterator.hasNext() && j < i) {
|
|
+ // Paper start
|
|
+ /* while (iterator.hasNext() && j < i) {
|
|
aint[j++] = (Integer) iterator.next();
|
|
iterator.remove();
|
|
+ } */
|
|
+
|
|
+ Integer integer;
|
|
+ while (j < i && (integer = this.removeQueue.poll()) != null) {
|
|
+ aint[j++] = integer.intValue();
|
|
}
|
|
+ // Paper end
|
|
|
|
this.playerConnection.sendPacket(new PacketPlayOutEntityDestroy(aint));
|
|
}
|
|
@@ -1410,7 +1419,14 @@ public class EntityPlayer extends EntityHuman implements ICrafting {
|
|
this.lastHealthSent = -1.0F;
|
|
this.lastFoodSent = -1;
|
|
// this.recipeBook.a((RecipeBook) entityplayer.recipeBook); // CraftBukkit
|
|
- this.removeQueue.addAll(entityplayer.removeQueue);
|
|
+ // Paper start - Optimize remove queue - vanilla copies player objects, but CB doesn't. This method currently only
|
|
+ // Applies to the same player, so we need to not duplicate our removal queue. The rest of this method does "resetting"
|
|
+ // type logic so it does need to be called, maybe? This is silly.
|
|
+ // this.removeQueue.addAll(entityplayer.removeQueue);
|
|
+ if (this.removeQueue != entityplayer.removeQueue) {
|
|
+ this.removeQueue.addAll(entityplayer.removeQueue);
|
|
+ }
|
|
+ // Paper end
|
|
this.cd = entityplayer.cd;
|
|
this.ci = entityplayer.ci;
|
|
this.setShoulderEntityLeft(entityplayer.getShoulderEntityLeft());
|