/**
* MrCrayfish's Furniture Mod
* Copyright (C) 2016 MrCrayfish (http://www.mrcrayfish.com/)
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package com.mrcrayfish.furniture.util;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
/**
* NBTHelper
*
* @author pahimar
* @license Lesser GNU Public License v3 (http://www.gnu.org/licenses/lgpl.html)
*/
public class NBTHelper
{
/**
* Initializes the NBT Tag Compound for the given ItemStack if it is null
*
* @param itemStack
* The ItemStack for which its NBT Tag Compound is being checked
* for initialization
*/
private static void initNBTTagCompound(ItemStack itemStack)
{
if (itemStack.getTagCompound() == null)
{
itemStack.setTagCompound(new NBTTagCompound());
}
}
public static boolean hasTag(ItemStack itemStack, String keyName)
{
if (itemStack.getTagCompound() != null)
return itemStack.getTagCompound().hasKey(keyName);
return false;
}
public static void removeTag(ItemStack itemStack, String keyName)
{
if (itemStack.getTagCompound() != null)
{
itemStack.getTagCompound().removeTag(keyName);
}
}
// String
public static String getString(ItemStack itemStack, String keyName)
{
initNBTTagCompound(itemStack);
if (!itemStack.getTagCompound().hasKey(keyName))
{
setString(itemStack, keyName, "");
}
return itemStack.getTagCompound().getString(keyName);
}
public static void setString(ItemStack itemStack, String keyName, String keyValue)
{
initNBTTagCompound(itemStack);
itemStack.getTagCompound().setString(keyName, keyValue);
}
// boolean
public static boolean getBoolean(ItemStack itemStack, String keyName)
{
initNBTTagCompound(itemStack);
if (!itemStack.getTagCompound().hasKey(keyName))
{
setBoolean(itemStack, keyName, false);
}
return itemStack.getTagCompound().getBoolean(keyName);
}
public static void setBoolean(ItemStack itemStack, String keyName, boolean keyValue)
{
initNBTTagCompound(itemStack);
itemStack.getTagCompound().setBoolean(keyName, keyValue);
}
// byte
public static byte getByte(ItemStack itemStack, String keyName)
{
initNBTTagCompound(itemStack);
if (!itemStack.getTagCompound().hasKey(keyName))
{
setByte(itemStack, keyName, (byte) 0);
}
return itemStack.getTagCompound().getByte(keyName);
}
public static void setByte(ItemStack itemStack, String keyName, byte keyValue)
{
initNBTTagCompound(itemStack);
itemStack.getTagCompound().setByte(keyName, keyValue);
}
// short
public static short getShort(ItemStack itemStack, String keyName)
{
initNBTTagCompound(itemStack);
if (!itemStack.getTagCompound().hasKey(keyName))
{
setShort(itemStack, keyName, (short) 0);
}
return itemStack.getTagCompound().getShort(keyName);
}
public static void setShort(ItemStack itemStack, String keyName, short keyValue)
{
initNBTTagCompound(itemStack);
itemStack.getTagCompound().setShort(keyName, keyValue);
}
// int
public static int getInt(ItemStack itemStack, String keyName)
{
initNBTTagCompound(itemStack);
if (!itemStack.getTagCompound().hasKey(keyName))
{
setInteger(itemStack, keyName, 0);
}
return itemStack.getTagCompound().getInteger(keyName);
}
public static void setInteger(ItemStack itemStack, String keyName, int keyValue)
{
initNBTTagCompound(itemStack);
itemStack.getTagCompound().setInteger(keyName, keyValue);
}
// long
public static long getLong(ItemStack itemStack, String keyName)
{
initNBTTagCompound(itemStack);
if (!itemStack.getTagCompound().hasKey(keyName))
{
setLong(itemStack, keyName, 0);
}
return itemStack.getTagCompound().getLong(keyName);
}
public static void setLong(ItemStack itemStack, String keyName, long keyValue)
{
initNBTTagCompound(itemStack);
itemStack.getTagCompound().setLong(keyName, keyValue);
}
// float
public static float getFloat(ItemStack itemStack, String keyName)
{
initNBTTagCompound(itemStack);
if (!itemStack.getTagCompound().hasKey(keyName))
{
setFloat(itemStack, keyName, 0);
}
return itemStack.getTagCompound().getFloat(keyName);
}
public static void setFloat(ItemStack itemStack, String keyName, float keyValue)
{
initNBTTagCompound(itemStack);
itemStack.getTagCompound().setFloat(keyName, keyValue);
}
// double
public static double getDouble(ItemStack itemStack, String keyName)
{
initNBTTagCompound(itemStack);
if (!itemStack.getTagCompound().hasKey(keyName))
{
setDouble(itemStack, keyName, 0);
}
return itemStack.getTagCompound().getDouble(keyName);
}
public static void setDouble(ItemStack itemStack, String keyName, double keyValue)
{
initNBTTagCompound(itemStack);
itemStack.getTagCompound().setDouble(keyName, keyValue);
}
public static NBTTagCompound getCompoundTag(ItemStack itemStack, String tagName)
{
initNBTTagCompound(itemStack);
if (!itemStack.getTagCompound().hasKey(tagName))
{
itemStack.getTagCompound().setTag(tagName, new NBTTagCompound());
}
return itemStack.getTagCompound().getCompoundTag(tagName);
}
public static void setCompoundTag(ItemStack itemStack, String tagName, NBTTagCompound tagValue)
{
initNBTTagCompound(itemStack);
itemStack.getTagCompound().setTag(tagName, tagValue);
}
}