e792da723a
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: 30885166 Update to Minecraft 1.16.4 CraftBukkit Changes: 3af81c71 Update to Minecraft 1.16.4 Spigot Changes: f011ca24 Update to Minecraft 1.16.4 Co-authored-by: Mariell Hoversholm <proximyst@proximyst.com>
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 09b2ad46f051c94988061018100086847ce0fb9a..ea275587cbe06f5624b4a5d05095e6d0964ea9b9 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());
|