From c0f8bb52a9cd63f07574e4a35d7ac05f5935eb32 Mon Sep 17 00:00:00 2001 From: md_5 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 fb08743..81e8bdb 100644 --- a/src/main/java/net/minecraft/server/WorldNBTStorage.java +++ b/src/main/java/net/minecraft/server/WorldNBTStorage.java @@ -164,10 +164,28 @@ public class WorldNBTStorage implements IDataManager, IPlayerFileData { try { File file = new File(this.playerDir, entityhuman.getUniqueID().toString() + ".dat"); + // Spigot Start + boolean usingWrongFile = false; + if ( !file.exists() ) + { + file = new File( this.playerDir, UUID.nameUUIDFromBytes( ( "OfflinePlayer:" + entityhuman.getName() ).getBytes( "UTF-8" ) ).toString() + ".dat"); + if ( file.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 (file.exists() && file.isFile()) { nbttagcompound = NBTCompressedStreamTools.a((InputStream) (new FileInputStream(file))); } + // Spigot Start + if ( usingWrongFile ) + { + file.renameTo( new File( file.getPath() + ".offline-read" ) ); + } + // Spigot End } catch (Exception exception) { WorldNBTStorage.b.warn("Failed to load player data for " + entityhuman.getName()); } -- 2.5.0