Add some NPE protection to saving player data to disk

This commit is contained in:
Pahimar 2015-02-07 12:17:58 -05:00
parent 5c8c98b46d
commit 32b111d6dc

View file

@ -241,39 +241,48 @@ public class TransmutationKnowledgeRegistry
public void loadPlayerFromDiskIfNeeded(EntityPlayer entityPlayer)
{
if (!playerKnowledgeMap.containsKey(entityPlayer.getUniqueID()))
if (entityPlayer != null && entityPlayer.getUniqueID() != null)
{
TransmutationKnowledge playerTransmutationKnowledge = new TransmutationKnowledge();
File playerKnowledgeFile = new File(playerKnowledgeDirectory, entityPlayer.getUniqueID().toString() + ".json");
if (playerKnowledgeFile.exists() && playerKnowledgeFile.isFile())
if (!playerKnowledgeMap.containsKey(entityPlayer.getUniqueID()))
{
playerTransmutationKnowledge = SerializationHelper.readTransmutationKnowledgeFromFile(playerKnowledgeDirectory, entityPlayer.getUniqueID().toString() + ".json");
}
TransmutationKnowledge playerTransmutationKnowledge = new TransmutationKnowledge();
playerKnowledgeMap.put(entityPlayer.getUniqueID(), playerTransmutationKnowledge);
File playerKnowledgeFile = new File(playerKnowledgeDirectory, entityPlayer.getUniqueID().toString() + ".json");
if (playerKnowledgeFile.exists() && playerKnowledgeFile.isFile())
{
playerTransmutationKnowledge = SerializationHelper.readTransmutationKnowledgeFromFile(playerKnowledgeDirectory, entityPlayer.getUniqueID().toString() + ".json");
}
playerKnowledgeMap.put(entityPlayer.getUniqueID(), playerTransmutationKnowledge);
}
}
}
public void unloadPlayer(EntityPlayer entityPlayer)
{
if (playerKnowledgeMap.containsKey(entityPlayer.getUniqueID()))
if (entityPlayer != null && entityPlayer.getUniqueID() != null)
{
savePlayerKnowledgeToDisk(entityPlayer);
playerKnowledgeMap.remove(entityPlayer.getUniqueID());
if (playerKnowledgeMap.containsKey(entityPlayer.getUniqueID()))
{
savePlayerKnowledgeToDisk(entityPlayer);
playerKnowledgeMap.remove(entityPlayer.getUniqueID());
}
}
}
public void savePlayerKnowledgeToDisk(EntityPlayer entityPlayer)
{
if (playerKnowledgeMap.containsKey(entityPlayer.getUniqueID()) && playerKnowledgeMap.get(entityPlayer.getUniqueID()).hasBeenModified())
if (entityPlayer != null && entityPlayer.getUniqueID() != null)
{
SerializationHelper.writeTransmutationKnowledgeToFile(playerKnowledgeDirectory, entityPlayer.getUniqueID().toString() + ".json", playerKnowledgeMap.get(entityPlayer.getUniqueID()));
}
else
{
SerializationHelper.writeTransmutationKnowledgeToFile(playerKnowledgeDirectory, entityPlayer.getUniqueID().toString() + ".json", new TransmutationKnowledge());
if (playerKnowledgeMap.containsKey(entityPlayer.getUniqueID()) && playerKnowledgeMap.get(entityPlayer.getUniqueID()).hasBeenModified())
{
SerializationHelper.writeTransmutationKnowledgeToFile(playerKnowledgeDirectory, entityPlayer.getUniqueID().toString() + ".json", playerKnowledgeMap.get(entityPlayer.getUniqueID()));
}
else
{
SerializationHelper.writeTransmutationKnowledgeToFile(playerKnowledgeDirectory, entityPlayer.getUniqueID().toString() + ".json", new TransmutationKnowledge());
}
}
}