package mekanism.common.util;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.nbt.NBTTagList;
import net.minecraftforge.common.util.Constants.NBT;
public final class ItemDataUtils
{
public static final String DATA_ID = "mekData";
public static NBTTagCompound getDataMap(ItemStack stack)
{
initStack(stack);
return stack.getTagCompound().getCompoundTag(DATA_ID);
}
public static boolean hasData(ItemStack stack, String key)
{
initStack(stack);
return getDataMap(stack).hasKey(key);
}
public static void removeData(ItemStack stack, String key)
{
initStack(stack);
getDataMap(stack).removeTag(key);
}
public static int getInt(ItemStack stack, String key)
{
initStack(stack);
return getDataMap(stack).getInteger(key);
}
public static boolean getBoolean(ItemStack stack, String key)
{
initStack(stack);
return getDataMap(stack).getBoolean(key);
}
public static double getDouble(ItemStack stack, String key)
{
initStack(stack);
return getDataMap(stack).getDouble(key);
}
public static String getString(ItemStack stack, String key)
{
initStack(stack);
return getDataMap(stack).getString(key);
}
public static NBTTagCompound getCompound(ItemStack stack, String key)
{
initStack(stack);
return getDataMap(stack).getCompoundTag(key);
}
public static NBTTagList getList(ItemStack stack, String key)
{
initStack(stack);
return getDataMap(stack).getTagList(key, NBT.TAG_COMPOUND);
}
public static void setInt(ItemStack stack, String key, int i)
{
initStack(stack);
getDataMap(stack).setInteger(key, i);
}
public static void setBoolean(ItemStack stack, String key, boolean b)
{
initStack(stack);
getDataMap(stack).setBoolean(key, b);
}
public static void setDouble(ItemStack stack, String key, double d)
{
initStack(stack);
getDataMap(stack).setDouble(key, d);
}
public static void setString(ItemStack stack, String key, String s)
{
initStack(stack);
getDataMap(stack).setString(key, s);
}
public static void setCompound(ItemStack stack, String key, NBTTagCompound tag)
{
initStack(stack);
getDataMap(stack).setTag(key, tag);
}
public static void setList(ItemStack stack, String key, NBTTagList tag)
{
initStack(stack);
getDataMap(stack).setTag(key, tag);
}
private static void initStack(ItemStack stack)
{
if(stack.getTagCompound() == null)
{
stack.setTagCompound(new NBTTagCompound());
}
if(!stack.getTagCompound().hasKey(DATA_ID))
{
stack.getTagCompound().setTag(DATA_ID, new NBTTagCompound());
}
}
}