diff --git a/CraftBukkit-Patches/0170-Only-fetch-an-online-UUID-in-online-mode.patch b/CraftBukkit-Patches/0170-Only-fetch-an-online-UUID-in-online-mode.patch new file mode 100644 index 0000000000..998b9534c2 --- /dev/null +++ b/CraftBukkit-Patches/0170-Only-fetch-an-online-UUID-in-online-mode.patch @@ -0,0 +1,36 @@ +From db76316cbb4f5749d66b616f879d7707983a5b0c 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 79d4d99..2c3a140 100644 +--- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java ++++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java +@@ -1396,8 +1396,14 @@ public final class CraftServer implements Server { + + OfflinePlayer result = getPlayerExact(name); + if (result == null) { +- // This is potentially blocking :( +- GameProfile profile = MinecraftServer.getServer().getUserCache().getProfile(name); ++ // Spigot Start ++ GameProfile profile = null; ++ // Only fetch an online UUID in online mode ++ if ( MinecraftServer.getServer().getOnlineMode() || org.spigotmc.SpigotConfig.bungee ) ++ { ++ profile = MinecraftServer.getServer().getUserCache().getProfile( name ); ++ } ++ // 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)); +-- +1.9.1