package com.austinv11.collectiveframework.minecraft.books.core;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.nbt.NBTTagList;
import net.minecraft.nbt.NBTTagString;
import net.minecraft.server.MinecraftServer;
import net.minecraft.world.WorldSavedData;
import net.minecraftforge.common.util.Constants;
import java.util.HashMap;
public class LocalBookData extends WorldSavedData {
public static String IDENTIFIER = "CF_LOCAL_BOOK_DATA";
private static HashMap<String, NBTTagCompound> data = new HashMap<String, NBTTagCompound>();
private static boolean hasLoaded = false;
public LocalBookData() {
this(IDENTIFIER);
}
public LocalBookData(String identifier) {
super(identifier);
}
@Override
public void readFromNBT(NBTTagCompound tag) {
NBTTagList list = tag.getTagList("data", Constants.NBT.TAG_STRING);
for (int i = 0; i < list.tagCount(); i++)
data.put(list.getStringTagAt(i), tag.getCompoundTag(list.getStringTagAt(i)));
}
@Override
public void writeToNBT(NBTTagCompound tag) {
NBTTagList list = new NBTTagList();
for (String key : data.keySet()) {
list.appendTag(new NBTTagString(key));
tag.setTag(key, data.get(key));
}
tag.setTag("data", list);
}
private static LocalBookData loadData() {
if (!hasLoaded)
createData();
return (LocalBookData) MinecraftServer.getServer().worldServerForDimension(0).loadItemData(LocalBookData.class, IDENTIFIER);
}
private static void createData() {
MinecraftServer.getServer().worldServerForDimension(0).setItemData(IDENTIFIER, new LocalBookData());
hasLoaded = true;
}
public static NBTTagCompound retrieveLocalData(String key) {
loadData();
return data.get(key);
}
public static void putLocalData(String key, NBTTagCompound tag) {
loadData();
data.put(key, tag);
}
}