package buildcraftAdditions.items; /** * Copyright (c) 2014-2015, AEnterprise * http://buildcraftadditions.wordpress.com/ * Buildcraft Additions is distributed under the terms of GNU GPL v3.0 * Please check the contents of the license located in * http://buildcraftadditions.wordpress.com/wiki/licensing-stuff/ */ import java.util.List; import net.minecraft.client.renderer.texture.IIconRegister; 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; import net.minecraft.util.IIcon; import cpw.mods.fml.common.registry.GameRegistry; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraftforge.fluids.Fluid; import net.minecraftforge.fluids.FluidRegistry; import net.minecraftforge.fluids.FluidStack; import net.minecraftforge.fluids.ItemFluidContainer; import buildcraftAdditions.BuildcraftAdditions; import buildcraftAdditions.utils.RenderUtils; import buildcraftAdditions.utils.Utils; public class ItemCanister extends ItemFluidContainer { @SideOnly(Side.CLIENT) private IIcon overlay; public ItemCanister(String name, int canisterCapacity) { super(0); setMaxStackSize(1); setCreativeTab(BuildcraftAdditions.bcaCannisters); setUnlocalizedName(name); setCapacity(canisterCapacity); setTextureName("bcadditions:" + name); GameRegistry.registerItem(this, name); } @Override @SideOnly(Side.CLIENT) public void addInformation(ItemStack itemStack, EntityPlayer player, List list, boolean visible) { FluidStack fStack = Utils.getFluidStackFromItemStack(itemStack); if (fStack == null) list.add(String.format(Utils.localize("tooltip.FluidCapacity"), capacity / 1000)); else list.add(String.format(Utils.localize("tooltip.storedFluid"), fStack.getFluid().getLocalizedName(fStack), fStack.amount)); } @Override @SideOnly(Side.CLIENT) public void registerIcons(IIconRegister register) { super.registerIcons(register); overlay = RenderUtils.registerIcon(register, "fluidOverlay"); } public ItemStack getFilledItemStack(FluidStack fluidStack) { ItemStack itemStack = new ItemStack(this); itemStack.stackTagCompound = new NBTTagCompound(); NBTTagCompound fluidTag = fluidStack.writeToNBT(new NBTTagCompound()); if (fluidStack.amount > capacity) fluidTag.setInteger("Amount", capacity); itemStack.getTagCompound().setTag("Fluid", fluidTag); return itemStack; } @Override @SideOnly(Side.CLIENT) public void getSubItems(Item item, CreativeTabs tab, List list) { super.getSubItems(item, tab, list); for (Fluid fluid : FluidRegistry.getRegisteredFluids().values()) if (fluid != null) list.add(getFilledItemStack(new FluidStack(fluid, capacity))); } @SideOnly(Side.CLIENT) public IIcon getOverlay() { return overlay; } }