package crazypants.enderio.item.darksteel.upgrade; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.init.Blocks; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import crazypants.enderio.config.Config; import crazypants.enderio.item.darksteel.DarkSteelItems; public class JumpUpgrade extends AbstractUpgrade { private static final String KEY_LEVEL = "level"; private static String UPGRADE_NAME = "jumpBoost"; public static JumpUpgrade JUMP_ONE = new JumpUpgrade("enderio.darksteel.upgrade.jump_one", 1, Config.darkSteelJumpOneCost); public static JumpUpgrade JUMP_TWO = new JumpUpgrade("enderio.darksteel.upgrade.jump_two", 2, Config.darkSteelJumpTwoCost); public static JumpUpgrade JUMP_THREE = new JumpUpgrade("enderio.darksteel.upgrade.jump_three", 3, Config.darkSteelJumpThreeCost); private short level; public static boolean isEquipped(EntityPlayer player) { ItemStack boots = player.getEquipmentInSlot(1); return loadFromItem(boots) != null; } public static JumpUpgrade loadFromItem(ItemStack stack) { if(stack == null) { return null; } if(stack.stackTagCompound == null) { return null; } if(!stack.stackTagCompound.hasKey(KEY_UPGRADE_PREFIX + UPGRADE_NAME)) { return null; } return new JumpUpgrade((NBTTagCompound) stack.stackTagCompound.getTag(KEY_UPGRADE_PREFIX + UPGRADE_NAME)); } public JumpUpgrade(NBTTagCompound tag) { super(UPGRADE_NAME, tag); this.level = tag.getShort(KEY_LEVEL); } public JumpUpgrade(String unlocName, int level, int levelCost) { super(UPGRADE_NAME, unlocName, new ItemStack(Blocks.piston), levelCost); this.level = (short) level; } @Override public boolean canAddToItem(ItemStack stack) { if(stack == null || stack.getItem() != DarkSteelItems.itemDarkSteelBoots || !EnergyUpgrade.itemHasAnyPowerUpgrade(stack)) { return false; } JumpUpgrade up = loadFromItem(stack); if(up == null) { return getLevel() == 1; } return up.getLevel() == getLevel() - 1; } @Override public boolean hasUpgrade(ItemStack stack) { if(!super.hasUpgrade(stack)) { return false; } JumpUpgrade up = loadFromItem(stack); if(up == null) { return false; } return up.unlocName.equals(unlocName); } @Override public void writeUpgradeToNBT(NBTTagCompound upgradeRoot) { upgradeRoot.setShort(KEY_LEVEL, getLevel()); } public short getLevel() { return level; } }