package chbachman.armour.upgrade.upgradeList; import java.util.List; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; import net.minecraftforge.common.MinecraftForge; import net.minecraftforge.event.entity.living.LivingEvent.LivingJumpEvent; import chbachman.api.configurability.Configurable; import chbachman.api.configurability.ConfigurableField; import chbachman.api.item.IModularItem; import chbachman.api.upgrade.Upgrade; import chbachman.api.util.ArmourSlot; import chbachman.armour.util.ConfigHelper; import chbachman.armour.util.EnergyUtil; import chbachman.armour.util.UpgradeUtil; import cpw.mods.fml.common.eventhandler.SubscribeEvent; public class UpgradeJumpBoost extends Upgrade { public UpgradeJumpBoost() { super("jumpBoost"); MinecraftForge.EVENT_BUS.register(this); } private int cost; @Configurable public ConfigurableField f = new ConfigurableField(this, "jumpHeight"); @Override public void registerConfigOptions() { cost = ConfigHelper.get(ConfigHelper.SPEED, this, "cost to jump high", 1000); } @SubscribeEvent public void onPlayerJump(LivingJumpEvent event) { if (event.entityLiving instanceof EntityPlayer) { EntityPlayer player = (EntityPlayer) event.entityLiving; List<ItemStack> list = UpgradeUtil.getPlayerUpgrades(player, this); int energyCost = cost; for (ItemStack stack : list) { // You might not always want to jump 10 blocks high :P if (stack != null && EnergyUtil.getEnergyStored(stack) > energyCost && !player.isSneaking()) { IModularItem modularItem = (IModularItem) stack.getItem(); (modularItem).damageArmour(stack, energyCost + 1); player.motionY += 1 * f.get(stack).getPercentage(); } } } } @Override public boolean isCompatible(IModularItem item, ItemStack stack, int armorType) { return armorType == ArmourSlot.LEGS.id; } }