package buildcraftAdditions.items; 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.tileentity.TileEntity; import net.minecraft.util.IIcon; import net.minecraft.world.World; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import buildcraftAdditions.items.bases.ItemBase; import buildcraftAdditions.reference.enums.EnumMachineUpgrades; import buildcraftAdditions.tileEntities.interfaces.IUpgradableMachine; import buildcraftAdditions.utils.RenderUtils; import buildcraftAdditions.utils.Utils; /** * 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/ */ public class ItemMachineUpgrade extends ItemBase { @SideOnly(Side.CLIENT) private IIcon[] icons; public ItemMachineUpgrade() { super("upgrade"); setHasSubtypes(true); } @Override public boolean onItemUse(ItemStack stack, EntityPlayer player, World world, int x, int y, int z, int meta, float hitX, float hitY, float hitZ) { TileEntity entity = world.getTileEntity(x, y, z); if (entity != null && entity instanceof IUpgradableMachine) { IUpgradableMachine machine = (IUpgradableMachine) entity; if (machine.canAcceptUpgrade(EnumMachineUpgrades.values()[stack.getItemDamage()])) { machine.installUpgrade(EnumMachineUpgrades.values()[stack.getItemDamage()]); if (!player.capabilities.isCreativeMode) player.getCurrentEquippedItem().stackSize--; return false; } } return false; } @Override public String getUnlocalizedName(ItemStack stack) { return super.getUnlocalizedName(stack) + "." + EnumMachineUpgrades.values()[stack.getItemDamage()].getTag(); } @Override @SideOnly(Side.CLIENT) public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean advancedItemTooltips) { list.add(Utils.localize("tooltip.forUpgradableMachines")); } @Override @SideOnly(Side.CLIENT) public IIcon getIconFromDamage(int damage) { return icons[damage]; } @Override @SideOnly(Side.CLIENT) public void registerIcons(IIconRegister register) { icons = new IIcon[EnumMachineUpgrades.values().length]; for (int i = 0; i < icons.length; i++) icons[i] = RenderUtils.registerIcon(register, EnumMachineUpgrades.values()[i].getTextureName()); } @Override @SideOnly(Side.CLIENT) public void getSubItems(Item item, CreativeTabs tabs, List list) { for (EnumMachineUpgrades upgrade : EnumMachineUpgrades.values()) list.add(new ItemStack(item, 1, upgrade.ordinal())); } }