diff options
Diffstat (limited to 'Spigot-Server-Patches/0312-World-EntityHuman-Lookup-Optimizations.patch')
-rw-r--r-- | Spigot-Server-Patches/0312-World-EntityHuman-Lookup-Optimizations.patch | 82 |
1 files changed, 82 insertions, 0 deletions
diff --git a/Spigot-Server-Patches/0312-World-EntityHuman-Lookup-Optimizations.patch b/Spigot-Server-Patches/0312-World-EntityHuman-Lookup-Optimizations.patch new file mode 100644 index 0000000000..796ed803a9 --- /dev/null +++ b/Spigot-Server-Patches/0312-World-EntityHuman-Lookup-Optimizations.patch @@ -0,0 +1,82 @@ +From df9635bc942ea00aedd136fdea9d06027e38b337 Mon Sep 17 00:00:00 2001 +From: willies952002 <[email protected]> +Date: Mon, 30 Jul 2018 02:42:49 -0400 +Subject: [PATCH] World EntityHuman Lookup Optimizations + + +diff --git a/src/main/java/net/minecraft/server/World.java b/src/main/java/net/minecraft/server/World.java +index 5d60b36678..3acea908c2 100644 +--- a/src/main/java/net/minecraft/server/World.java ++++ b/src/main/java/net/minecraft/server/World.java +@@ -76,6 +76,7 @@ public abstract class World implements IEntityAccess, GeneratorAccess, IIBlockAc + private final List<TileEntity> c = Lists.newArrayList(); + private final Set<TileEntity> tileEntityListUnload = com.google.common.collect.Sets.newHashSet(); // Paper + public final List<EntityHuman> players = Lists.newArrayList(); ++ public final Map<String, EntityHuman> playersByName = Maps.newHashMap(); // Paper - World EntityHuman Lookup Optimizations + public final List<Entity> k = Lists.newArrayList(); + protected final IntHashMap<Entity> entitiesById = new IntHashMap<>(); + private final long F = 16777215L; +@@ -1030,6 +1031,8 @@ public abstract class World implements IEntityAccess, GeneratorAccess, IIBlockAc + EntityHuman entityhuman = (EntityHuman) entity; + + this.players.add(entityhuman); ++ this.playersByName.put(entityhuman.getName(), entityhuman); ++ // Paper end + this.everyoneSleeping(); + } + +@@ -1072,6 +1075,7 @@ public abstract class World implements IEntityAccess, GeneratorAccess, IIBlockAc + entity.die(); + if (entity instanceof EntityHuman) { + this.players.remove(entity); ++ this.playersByName.remove(entity.getName()); // Paper - World EntityHuman Lookup Optimizations + // Spigot start + for ( WorldPersistentData worldData : worldMaps.worldMap.values() ) + { +@@ -1105,6 +1109,7 @@ public abstract class World implements IEntityAccess, GeneratorAccess, IIBlockAc + entity.die(); + if (entity instanceof EntityHuman) { + this.players.remove(entity); ++ this.playersByName.remove(entity.getName()); // Paper - World EntityHuman Lookup Optimizations + this.everyoneSleeping(); + } + +@@ -2667,6 +2672,8 @@ public abstract class World implements IEntityAccess, GeneratorAccess, IIBlockAc + + @Nullable + public EntityHuman a(String s) { ++ // Paper start - World EntityHuman Lookup Optimizations ++ /* + for (int i = 0; i < this.players.size(); ++i) { + EntityHuman entityhuman = (EntityHuman) this.players.get(i); + +@@ -2676,10 +2683,15 @@ public abstract class World implements IEntityAccess, GeneratorAccess, IIBlockAc + } + + return null; ++ */ ++ return this.playersByName.get(s); ++ // Paper end + } + + @Nullable + public EntityHuman b(UUID uuid) { ++ // Paper start - World EntityHuman Lookup Optimizations ++ /* + for (int i = 0; i < this.players.size(); ++i) { + EntityHuman entityhuman = (EntityHuman) this.players.get(i); + +@@ -2689,6 +2701,10 @@ public abstract class World implements IEntityAccess, GeneratorAccess, IIBlockAc + } + + return null; ++ */ ++ Entity entity = ((WorldServer)this).entitiesByUUID.get(uuid); ++ return entity instanceof EntityHuman ? (EntityHuman) entity : null; ++ // Paper end + } + + public void checkSession() throws ExceptionWorldConflict { +-- +2.21.0 + |