diff --git a/README.md b/README.md index 46455232..fd063f09 100644 --- a/README.md +++ b/README.md @@ -229,6 +229,7 @@ See the patches list below. [FalchusSpigot-????] Improve NetworkManager [FalchusSpigot-????] Add FastNetworkManager [FalchusSpigot-????] Async knockback +[FalchusSpigot-????] Fix getOfflinePlayer [DashSpigot-0033] Fix SPIGOT-1746: Tile entities may not always tick [DashSpigot-0011] Fix MC-94186: Dragon egg falling in lazy chunks diff --git a/WindSpigot-Server/src/main/java/net/minecraft/server/UserCache.java b/WindSpigot-Server/src/main/java/net/minecraft/server/UserCache.java index 41cb2f07..646f79d0 100644 --- a/WindSpigot-Server/src/main/java/net/minecraft/server/UserCache.java +++ b/WindSpigot-Server/src/main/java/net/minecraft/server/UserCache.java @@ -170,6 +170,7 @@ public String[] a() { return (String[]) arraylist.toArray(new String[arraylist.size()]); } + public GameProfile getProfile(UUID uuid) { return this.a(uuid); } // FalchusSpigot - OBFHELPER public GameProfile a(UUID uuid) { UserCache.UserCacheEntry usercache_usercacheentry = this.d.get(uuid); @@ -357,4 +358,4 @@ public UserCacheEntry deserialize(JsonElement jsonelement, Type type, this(); } } -} \ No newline at end of file +} diff --git a/WindSpigot-Server/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/WindSpigot-Server/src/main/java/org/bukkit/craftbukkit/CraftServer.java index d96c817f..c3573639 100644 --- a/WindSpigot-Server/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/WindSpigot-Server/src/main/java/org/bukkit/craftbukkit/CraftServer.java @@ -1555,8 +1555,19 @@ public OfflinePlayer getOfflinePlayer(UUID id) { if (result == null) { result = offlinePlayers.get(id); if (result == null) { - result = new CraftOfflinePlayer(this, new GameProfile(id, null)); - offlinePlayers.put(id, result); + // FalchusSpigot start - fix like above + GameProfile profile = null; + // Only fetch an online UUID in online mode + if (MinecraftServer.getServer().getOnlineMode() || org.spigotmc.SpigotConfig.bungee) { + profile = MinecraftServer.getServer().getUserCache().getProfile(id); + } + if (profile == null) { + // Make an OfflinePlayer using a UUID since the profile has no name + result = getOfflinePlayer(new GameProfile(id, null)); + } else { + result = getOfflinePlayer(profile); + } + // FalchusSpigot end } } else { offlinePlayers.remove(id);