From 82ca29b33f5a5a9cb0bbc8d27f264629ba39519c Mon Sep 17 00:00:00 2001 From: Maxim Van de Wynckel Date: Wed, 30 Jul 2014 01:19:51 +0200 Subject: [PATCH] Only fetch an online UUID in online mode The previous code would get an online UUID even in offline mode that breaks plugins if the player joins. Example: You want to store data for player "Test" who never joined. An online UUID is created and you save it using that UUID. The player Test joins with an offline UUID but that will not match the online UUID of the saved data. diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java index 27de6ba424..9689bf967c 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java @@ -1639,8 +1639,14 @@ public final class CraftServer implements Server { OfflinePlayer result = getPlayerExact(name); if (result == null) { - // This is potentially blocking :( - GameProfile profile = console.getProfileCache().get(name).orElse(null); + // Spigot Start + GameProfile profile = null; + // Only fetch an online UUID in online mode + if ( getOnlineMode() || org.spigotmc.SpigotConfig.bungee ) + { + profile = console.getProfileCache().get(name).orElse(null); + } + // Spigot end if (profile == null) { // Make an OfflinePlayer using an offline mode UUID since the name has no profile result = getOfflinePlayer(new GameProfile(UUID.nameUUIDFromBytes(("OfflinePlayer:" + name).getBytes(Charsets.UTF_8)), name)); -- 2.34.1