From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: willies952002 <admin@domnian.com>
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 7ac07ac07ac0..7ac07ac07ac0 100644
--- a/src/main/java/net/minecraft/server/World.java
+++ b/src/main/java/net/minecraft/server/World.java
@@ -0,0 +0,0 @@ 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;
@@ -0,0 +0,0 @@ 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();
             }
 
@@ -0,0 +0,0 @@ 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.a.values() )
             {
@@ -0,0 +0,0 @@ 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();
         }
 
@@ -0,0 +0,0 @@ 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);
 
@@ -0,0 +0,0 @@ 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);
 
@@ -0,0 +0,0 @@ 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 {
--