package zmaster587.advancedRocketry.item; import java.util.List; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.client.resources.I18n; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraftforge.common.util.ForgeDirection; import zmaster587.advancedRocketry.api.DataStorage; import zmaster587.advancedRocketry.world.util.MultiData; public class ItemMultiData extends Item { public ItemMultiData() { super(); } public void setMaxData(ItemStack stack, int amount) { MultiData data = getDataStorage(stack); data.setMaxData(amount); NBTTagCompound nbt; if(!stack.hasTagCompound()) { nbt= new NBTTagCompound(); } else nbt = stack.getTagCompound(); data.writeToNBT(nbt); stack.setTagCompound(nbt); } public int getData(ItemStack stack, DataStorage.DataType type) { return getDataStorage(stack).getDataAmount(type); } public int getMaxData(ItemStack stack) { return getDataStorage(stack).getMaxData(); } private MultiData getDataStorage(ItemStack item) { MultiData data = new MultiData(); if(!item.hasTagCompound()) { NBTTagCompound nbt = new NBTTagCompound(); data.writeToNBT(nbt); } else data.readFromNBT(item.getTagCompound()); return data; } public boolean isFull(ItemStack item, DataStorage.DataType dataType) { return getDataStorage(item).getMaxData() == getData(item, dataType); } public int addData(ItemStack item, int amount, DataStorage.DataType dataType) { MultiData data = getDataStorage(item); int amt = data.addData(amount, dataType, ForgeDirection.UNKNOWN,true); NBTTagCompound nbt; if(item.hasTagCompound()) nbt = item.getTagCompound(); else nbt = new NBTTagCompound(); data.writeToNBT(nbt); item.setTagCompound(nbt); return amt; } public int removeData(ItemStack item, int amount, DataStorage.DataType dataType) { MultiData data = getDataStorage(item); int amt = data.extractData(amount, dataType, ForgeDirection.UNKNOWN, true); NBTTagCompound nbt; if(item.hasTagCompound()) nbt = item.getTagCompound(); else nbt = new NBTTagCompound(); data.writeToNBT(nbt); item.setTagCompound(nbt); return amt; } public void setData(ItemStack item, int amount, DataStorage.DataType dataType) { MultiData data = getDataStorage(item); data.setDataAmount(amount, dataType); NBTTagCompound nbt; if(item.hasTagCompound()) nbt = item.getTagCompound(); else 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); MultiData data = getDataStorage(stack); for(DataStorage.DataType type : DataStorage.DataType.values()) { if(type != DataStorage.DataType.UNDEFINED) list.add(data.getDataAmount(type) + " / " + data.getMaxData() + " " + I18n.format(type.toString(), new Object[0]) + " Data"); } } }