package mekanism.common.item; import java.util.List; import mekanism.api.EnumColor; import mekanism.common.Upgrade; import mekanism.common.base.IUpgradeItem; import mekanism.common.base.IUpgradeTile; import mekanism.common.tile.component.TileComponentUpgrade; import mekanism.common.util.LangUtils; import mekanism.common.util.MekanismUtils; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.EnumActionResult; import net.minecraft.util.EnumFacing; import net.minecraft.util.EnumHand; import net.minecraft.util.math.BlockPos; import net.minecraft.world.World; import net.minecraftforge.fml.relauncher.Side; import net.minecraftforge.fml.relauncher.SideOnly; import org.lwjgl.input.Keyboard; public class ItemUpgrade extends ItemMekanism implements IUpgradeItem { private Upgrade upgrade; public ItemUpgrade(Upgrade type) { super(); upgrade = type; setMaxStackSize(type.getMax()); } @Override @SideOnly(Side.CLIENT) public void addInformation(ItemStack itemstack, EntityPlayer entityplayer, List<String> list, boolean flag) { if(!Keyboard.isKeyDown(Keyboard.KEY_LSHIFT)) { list.add(LangUtils.localize("tooltip.hold") + " " + EnumColor.AQUA + "shift" + EnumColor.GREY + " " + LangUtils.localize("tooltip.forDetails")); } else { list.addAll(MekanismUtils.splitTooltip(getUpgradeType(itemstack).getDescription(), itemstack)); } } @Override public Upgrade getUpgradeType(ItemStack stack) { return upgrade; } @Override public EnumActionResult onItemUseFirst(ItemStack stack, EntityPlayer player, World world, BlockPos pos, EnumFacing side, float hitX, float hitY, float hitZ, EnumHand hand) { if(player.isSneaking()) { TileEntity tile = world.getTileEntity(pos); Upgrade type = getUpgradeType(stack); if(tile instanceof IUpgradeTile) { TileComponentUpgrade component = ((IUpgradeTile)tile).getComponent(); if(component.supports(type)) { if(!world.isRemote && component.getUpgrades(type) < type.getMax()) { component.addUpgrade(type); stack.stackSize--; } } return EnumActionResult.SUCCESS; } } return EnumActionResult.PASS; } }