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 { --