package zmaster587.advancedRocketry.item; import java.util.List; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import zmaster587.advancedRocketry.api.DataStorage; import zmaster587.libVulpes.items.ItemIngredient; import net.minecraft.client.resources.I18n; import net.minecraft.creativetab.CreativeTabs; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; public class ItemData extends ItemIngredient { int maxData; public ItemData() { super(1); setMaxStackSize(16); } public int getMaxData(int damage) { switch(damage) { case 0: return 1000; } return 0; } public int getData(ItemStack stack) { return getDataStorage(stack).getData(); } public DataStorage.DataType getDataType(ItemStack stack) { return getDataStorage(stack).getDataType(); } public DataStorage getDataStorage(ItemStack item) { DataStorage data = new DataStorage(); if(!item.hasTagCompound()) { data.setMaxData(getMaxData(item.getItemDamage())); NBTTagCompound nbt = new NBTTagCompound(); data.writeToNBT(nbt); } else data.readFromNBT(item.getTagCompound()); return data; } public int addData(ItemStack item, int amount, DataStorage.DataType dataType) { DataStorage data = getDataStorage(item); int amt = data.addData(amount, dataType, true); NBTTagCompound nbt = new NBTTagCompound(); data.writeToNBT(nbt); item.setTagCompound(nbt); return amt; } public int removeData(ItemStack item, int amount, DataStorage.DataType dataType) { DataStorage data = getDataStorage(item); int amt = data.removeData(amount, true); NBTTagCompound nbt = new NBTTagCompound(); data.writeToNBT(nbt); item.setTagCompound(nbt); return amt; } public void setData(ItemStack item, int amount, DataStorage.DataType dataType) { DataStorage data = getDataStorage(item); data.setData(amount, dataType); NBTTagCompound nbt = new NBTTagCompound(); data.writeToNBT(nbt); item.setTagCompound(nbt); } @Override @SideOnly(Side.CLIENT) public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean bool) { super.addInformation(stack, player, list, bool); DataStorage data = getDataStorage(stack); list.add(data.getData() + " / " + data.getMaxData() + " Data"); list.add(I18n.format(data.getDataType().toString(), new Object[0])); } }