461353e2cb
This was useful when plugins first started upgrading to uuid because each plugin would implement their own way for grabbing uuid's from mojang. Because none of them shared the result they would quickly hit the limits on the api causing the conversion to either fail or pause for long periods of time. The global api cache was a (very hacky) way to force all plugins to share a cache but caused a few issues with plugins that expected a full implementation of the HTTPURLConnection. Due to the fact that most servers/plugins have updated now it seems to be a good time to remove this as its usefulness mostly has expired.
38 lines
1.8 KiB
Diff
38 lines
1.8 KiB
Diff
From eaf2b27a126ac66cd87adea0b79e617045362c94 Mon Sep 17 00:00:00 2001
|
|
From: Maxim Van de Wynckel <maxim_vdw@hotmail.com>
|
|
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 acc2105..7cb8a31 100644
|
|
--- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java
|
|
+++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
|
|
@@ -1281,8 +1281,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));
|
|
--
|
|
2.1.0
|
|
|