diff --git a/src/main/java/net/minecraft/entity/player/EntityPlayerMP.java b/src/main/java/net/minecraft/entity/player/EntityPlayerMP.java index 5d72871..077c3c4 100644 --- a/src/main/java/net/minecraft/entity/player/EntityPlayerMP.java +++ b/src/main/java/net/minecraft/entity/player/EntityPlayerMP.java @@ -1015,6 +1015,7 @@ public void setData(PlayerData playerData) { + playerData.setProfile(getGameProfile()); this.playerData = playerData; } diff --git a/src/main/java/net/minecraft/server/management/ServerConfigurationManager.java b/src/main/java/net/minecraft/server/management/ServerConfigurationManager.java index 9d5ee24..5d25fee 100644 --- a/src/main/java/net/minecraft/server/management/ServerConfigurationManager.java +++ b/src/main/java/net/minecraft/server/management/ServerConfigurationManager.java @@ -8,6 +8,7 @@ import cpw.mods.fml.common.FMLCommonHandler; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; + import java.io.File; import java.net.SocketAddress; import java.text.SimpleDateFormat; @@ -71,6 +72,7 @@ import org.ultramine.server.PermissionHandler; import org.ultramine.permission.internal.OpPermissionProxySet; import org.ultramine.server.chunk.IChunkLoadCallback; +import org.ultramine.server.data.ServerDataLoader; public abstract class ServerConfigurationManager { @@ -119,14 +121,14 @@ serverDataLoader.initializeConnectionToPlayer(p_72355_1_, p_72355_2_, nethandlerplayserver); } - public void initializeConnectionToPlayer_body(NetworkManager p_72355_1_, EntityPlayerMP p_72355_2_, NetHandlerPlayServer nethandlerplayserver) + public void initializeConnectionToPlayer_body(NetworkManager p_72355_1_, EntityPlayerMP p_72355_2_, NetHandlerPlayServer nethandlerplayserver, NBTTagCompound nbttagcompound) { GameProfile gameprofile = p_72355_2_.getGameProfile(); PlayerProfileCache playerprofilecache = this.mcServer.func_152358_ax(); GameProfile gameprofile1 = playerprofilecache.func_152652_a(gameprofile.getId()); String s = gameprofile1 == null ? gameprofile.getName() : gameprofile1.getName(); playerprofilecache.func_152649_a(gameprofile); - NBTTagCompound nbttagcompound = this.readPlayerDataFromFile(p_72355_2_); +// NBTTagCompound nbttagcompound = this.readPlayerDataFromFile(p_72355_2_); World playerWorld = this.mcServer.worldServerForDimension(p_72355_2_.dimension); if (playerWorld==null) diff --git a/src/main/java/org/ultramine/server/data/NBTFileDataProvider.java b/src/main/java/org/ultramine/server/data/NBTFileDataProvider.java index 4c8b829..84f2bc1 100644 --- a/src/main/java/org/ultramine/server/data/NBTFileDataProvider.java +++ b/src/main/java/org/ultramine/server/data/NBTFileDataProvider.java @@ -6,6 +6,7 @@ import java.io.IOException; import java.util.ArrayList; import java.util.List; +import java.util.UUID; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; @@ -35,13 +36,27 @@ @Override public NBTTagCompound loadPlayer(GameProfile player) { - return ((SaveHandler)mgr.getPlayerNBTLoader()).getPlayerData(player.getName()); + File dir = ((SaveHandler)mgr.getPlayerNBTLoader()).getPlayerSaveDir(); + File file = new File(dir, player.getId().toString() + ".dat"); + if(file.exists()) + { + try + { + return CompressedStreamTools.readCompressed(new FileInputStream(file)); + } + catch(IOException e) + { + log.warn("Failed to load player data for " + player.getName(), e); + } + } + + return null; } @Override public void savePlayer(GameProfile player, NBTTagCompound nbt) { - safeWriteNBT(new File(((SaveHandler)mgr.getPlayerNBTLoader()).getPlayerSaveDir(), player.getName() + ".dat"), nbt); + safeWriteNBT(new File(((SaveHandler)mgr.getPlayerNBTLoader()).getPlayerSaveDir(), player.getId().toString() + ".dat"), nbt); } @Override @@ -49,7 +64,7 @@ { checkPlayerDir(); - return readPlayerData(getPlayerDataNBT(player.getName())); + return readPlayerData(getPlayerDataNBT(player.getId().toString())); } public List loadAllPlayerData() @@ -79,7 +94,7 @@ public void savePlayerData(PlayerData data) { NBTTagCompound nbt = new NBTTagCompound(); - nbt.setString("id", data.getProfile().getId()); + nbt.setString("id", data.getProfile().getId().toString()); nbt.setString("name", data.getProfile().getName()); for(PlayerDataExtensionInfo info : mgr.getDataLoader().getDataExtProviders()) { @@ -88,7 +103,7 @@ nbt.setTag(info.getTagName(), extnbt); } - safeWriteNBT(new File(umPlayerDir, data.getProfile() + ".dat"), nbt); + safeWriteNBT(new File(umPlayerDir, data.getProfile().getId().toString() + ".dat"), nbt); } private void checkPlayerDir() @@ -121,9 +136,6 @@ private PlayerData readPlayerData(NBTTagCompound nbt) { - String id = nbt.getString("id"); - String username = nbt.getString("name"); - List infos = mgr.getDataLoader().getDataExtProviders(); List data = new ArrayList(infos.size()); @@ -132,7 +144,10 @@ data.add(info.createFromNBT(nbt)); } - return new PlayerData(new GameProfile(id, username), data); + PlayerData pdata = new PlayerData(data); + if(nbt != null && nbt.hasKey("id") && nbt.hasKey("name")) + pdata.setProfile(new GameProfile(UUID.fromString(nbt.getString("id")), nbt.getString("name"))); + return pdata; } private void safeWriteNBT(File file, NBTTagCompound nbt) diff --git a/src/main/java/org/ultramine/server/data/player/PlayerData.java b/src/main/java/org/ultramine/server/data/player/PlayerData.java index 56d4c7c..46f8e36 100644 --- a/src/main/java/org/ultramine/server/data/player/PlayerData.java +++ b/src/main/java/org/ultramine/server/data/player/PlayerData.java @@ -8,13 +8,12 @@ public class PlayerData { - private final GameProfile profile; + private GameProfile profile; private final Map, PlayerDataExtension> data = new HashMap, PlayerDataExtension>(); private final PlayerCoreData coreData; - public PlayerData(GameProfile profile, List list) + public PlayerData(List list) { - this.profile = profile; for(PlayerDataExtension o : list) data.put(o.getClass(), o); coreData = get(PlayerCoreData.class); @@ -24,6 +23,11 @@ { return profile; } + + public void setProfile(GameProfile profile) + { + this.profile = profile; + } public T get(Class clazz) {