From 8d4b1b8394c5d417ffd4739b1ac542372aff0e9b Mon Sep 17 00:00:00 2001 From: Elias Date: Tue, 27 Oct 2026 02:10:05 +0100 Subject: [PATCH 1/4] Update CraftServer.java --- .../main/java/org/bukkit/craftbukkit/CraftServer.java | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) 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 d96c817f6..06d89c9e7 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,15 @@ 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); + } + // Make an OfflinePlayer using a UUID since the profile has no name + result = getOfflinePlayer(Objects.requireNonNullElseGet(profile, () -> new GameProfile(id, null))); + // FalchusSpigot end } } else { offlinePlayers.remove(id); From 07e2fe80366689fdd7a8efe28f47c3cd6f92e282 Mon Sep 17 00:00:00 2001 From: Elias Date: Tue, 27 Oct 2026 02:10:38 +0100 Subject: [PATCH 2/4] Update README.md --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 464552325..fd063f099 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 From a50ce21af321599a4e7c47183b3d7b1b07fe539c Mon Sep 17 00:00:00 2001 From: Elias Date: Tue, 27 Oct 2026 13:33:54 +0100 Subject: [PATCH 3/4] Update UserCache.java --- .../src/main/java/net/minecraft/server/UserCache.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) 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 41cb2f07c..646f79d05 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 +} From d16e22074256198de69faecee4d80f69780c50ac Mon Sep 17 00:00:00 2001 From: Elias Date: Thu, 29 Oct 2026 21:14:51 +0100 Subject: [PATCH 4/4] PLEASE USE MODERN JAVA --- .../src/main/java/org/bukkit/craftbukkit/CraftServer.java | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) 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 06d89c9e7..c35736399 100644 --- a/WindSpigot-Server/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/WindSpigot-Server/src/main/java/org/bukkit/craftbukkit/CraftServer.java @@ -1561,8 +1561,12 @@ public OfflinePlayer getOfflinePlayer(UUID id) { if (MinecraftServer.getServer().getOnlineMode() || org.spigotmc.SpigotConfig.bungee) { profile = MinecraftServer.getServer().getUserCache().getProfile(id); } - // Make an OfflinePlayer using a UUID since the profile has no name - result = getOfflinePlayer(Objects.requireNonNullElseGet(profile, () -> new GameProfile(id, null))); + 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 {