diff --git a/Spigot-Server-Patches/0422-Optimise-IEntityAccess-getPlayerByUUID.patch b/Spigot-Server-Patches/0422-Optimise-IEntityAccess-getPlayerByUUID.patch new file mode 100644 index 0000000000..245a3fbfa8 --- /dev/null +++ b/Spigot-Server-Patches/0422-Optimise-IEntityAccess-getPlayerByUUID.patch @@ -0,0 +1,47 @@ +From f30c7d9a67da1929516f92711d6dd7e8b69ead6e Mon Sep 17 00:00:00 2001 +From: Spottedleaf +Date: Sat, 11 Jan 2020 21:50:56 -0800 +Subject: [PATCH] Optimise IEntityAccess#getPlayerByUUID + +Use the world entity map instead of iterating over all players + +diff --git a/src/main/java/net/minecraft/server/IEntityAccess.java b/src/main/java/net/minecraft/server/IEntityAccess.java +index c8512f9f4..467b35e3c 100644 +--- a/src/main/java/net/minecraft/server/IEntityAccess.java ++++ b/src/main/java/net/minecraft/server/IEntityAccess.java +@@ -219,6 +219,12 @@ public interface IEntityAccess { + + @Nullable + default EntityHuman b(UUID uuid) { ++ // Paper start - allow WorldServer to override ++ return this.getPlayerByUUID(uuid); ++ } ++ @Nullable ++ default EntityHuman getPlayerByUUID(UUID uuid) { ++ // Paper end + for (int i = 0; i < this.getPlayers().size(); ++i) { + EntityHuman entityhuman = (EntityHuman) this.getPlayers().get(i); + +diff --git a/src/main/java/net/minecraft/server/WorldServer.java b/src/main/java/net/minecraft/server/WorldServer.java +index 70cbff313..8526a3fda 100644 +--- a/src/main/java/net/minecraft/server/WorldServer.java ++++ b/src/main/java/net/minecraft/server/WorldServer.java +@@ -82,6 +82,15 @@ public class WorldServer extends World { + return new Throwable(entity + " Added to world at " + new java.util.Date()); + } + ++ // Paper start - optimise getPlayerByUUID ++ @Nullable ++ @Override ++ public EntityHuman getPlayerByUUID(UUID uuid) { ++ Entity player = this.entitiesByUUID.get(uuid); ++ return (player instanceof EntityHuman) ? (EntityHuman)player : null; ++ } ++ // Paper end ++ + // Paper start - Asynchronous IO + public final com.destroystokyo.paper.io.PaperFileIOThread.ChunkDataController poiDataController = new com.destroystokyo.paper.io.PaperFileIOThread.ChunkDataController() { + @Override +-- +2.24.1 +