aboutsummaryrefslogtreecommitdiffhomepage
path: root/CraftBukkit-Patches/0122-Use-Offline-Player-Data-Once-if-Required.patch
diff options
context:
space:
mode:
Diffstat (limited to 'CraftBukkit-Patches/0122-Use-Offline-Player-Data-Once-if-Required.patch')
-rw-r--r--CraftBukkit-Patches/0122-Use-Offline-Player-Data-Once-if-Required.patch43
1 files changed, 43 insertions, 0 deletions
diff --git a/CraftBukkit-Patches/0122-Use-Offline-Player-Data-Once-if-Required.patch b/CraftBukkit-Patches/0122-Use-Offline-Player-Data-Once-if-Required.patch
new file mode 100644
index 0000000000..e85fedaab9
--- /dev/null
+++ b/CraftBukkit-Patches/0122-Use-Offline-Player-Data-Once-if-Required.patch
@@ -0,0 +1,43 @@
+From bc602d48baa44477814f087b0130a07c22f10a10 Mon Sep 17 00:00:00 2001
+From: md_5 <[email protected]>
+Date: Sun, 13 Apr 2014 14:41:23 +1000
+Subject: [PATCH] Use Offline Player Data Once if Required.
+
+If we are online mode and the only copy of player data we can find is the player's offline mode data, we will attempt a once off conversion by reading this data and then renaming the file so it won't be used again.
+
+diff --git a/src/main/java/net/minecraft/server/WorldNBTStorage.java b/src/main/java/net/minecraft/server/WorldNBTStorage.java
+index 93ff8d3..efdcad7 100644
+--- a/src/main/java/net/minecraft/server/WorldNBTStorage.java
++++ b/src/main/java/net/minecraft/server/WorldNBTStorage.java
+@@ -196,10 +196,28 @@ public class WorldNBTStorage implements IDataManager, IPlayerFileData {
+
+ try {
+ File file1 = new File(this.playerDir, entityhuman.getUniqueID().toString() + ".dat");
++ // Spigot Start
++ boolean usingWrongFile = false;
++ if ( !file1.exists() )
++ {
++ file1 = new File( this.playerDir, UUID.nameUUIDFromBytes( ( "OfflinePlayer:" + entityhuman.getName() ).getBytes( "UTF-8" ) ).toString() + ".dat");
++ if ( file1.exists() )
++ {
++ usingWrongFile = true;
++ org.bukkit.Bukkit.getServer().getLogger().warning( "Using offline mode UUID file for player " + entityhuman.getName() + " as it is the only copy we can find." );
++ }
++ }
++ // Spigot End
+
+ if (file1.exists() && file1.isFile()) {
+ nbttagcompound = NBTCompressedStreamTools.a((InputStream) (new FileInputStream(file1)));
+ }
++ // Spigot Start
++ if ( usingWrongFile )
++ {
++ file1.renameTo( new File( file1.getPath() + ".offline-read" ) );
++ }
++ // Spigot End
+ } catch (Exception exception) {
+ a.warn("Failed to load player data for " + entityhuman.getName());
+ }
+--
+1.9.1
+