BloodMagic/src/main/java/WayofTime/bloodmagic/apibutnotreally/saving/BMWorldSavedData.java

59 lines
1.8 KiB
Java
Raw Normal View History

package WayofTime.bloodmagic.apibutnotreally.saving;
import WayofTime.bloodmagic.apibutnotreally.util.helper.PlayerHelper;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.nbt.NBTTagList;
import net.minecraft.world.storage.WorldSavedData;
2017-08-16 04:30:48 +00:00
import java.util.HashMap;
import java.util.Map;
import java.util.UUID;
2017-08-16 04:30:48 +00:00
public class BMWorldSavedData extends WorldSavedData {
public static final String ID = "BloodMagic-SoulNetworks";
private Map<UUID, SoulNetwork> soulNetworks = new HashMap<UUID, SoulNetwork>();
2017-08-16 04:30:48 +00:00
public BMWorldSavedData(String id) {
super(id);
}
2017-08-16 04:30:48 +00:00
public BMWorldSavedData() {
this(ID);
}
2017-08-16 04:30:48 +00:00
public SoulNetwork getNetwork(EntityPlayer player) {
return getNetwork(PlayerHelper.getUUIDFromPlayer(player));
}
2017-08-16 04:30:48 +00:00
public SoulNetwork getNetwork(UUID playerId) {
if (!soulNetworks.containsKey(playerId))
soulNetworks.put(playerId, SoulNetwork.newEmpty(playerId).setParent(this));
return soulNetworks.get(playerId);
}
@Override
2017-08-16 04:30:48 +00:00
public void readFromNBT(NBTTagCompound tagCompound) {
NBTTagList networkData = tagCompound.getTagList("networkData", 10);
2017-08-16 04:30:48 +00:00
for (int i = 0; i < networkData.tagCount(); i++) {
NBTTagCompound data = networkData.getCompoundTagAt(i);
SoulNetwork network = SoulNetwork.fromNBT(data);
network.setParent(this);
soulNetworks.put(network.getPlayerId(), network);
}
}
@Override
2017-08-16 04:30:48 +00:00
public NBTTagCompound writeToNBT(NBTTagCompound tagCompound) {
NBTTagList networkData = new NBTTagList();
for (SoulNetwork soulNetwork : soulNetworks.values())
networkData.appendTag(soulNetwork.serializeNBT());
tagCompound.setTag("networkData", networkData);
return tagCompound;
}
}