package chbachman.armour.upgrade.upgradeList; import net.minecraft.client.model.ModelBiped; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; import net.minecraft.util.DamageSource; import net.minecraft.world.World; import chbachman.api.item.IModularItem; import chbachman.api.nbt.helper.NBTHelper; import chbachman.api.upgrade.Upgrade; import chbachman.api.util.ArmourSlot; import chbachman.armour.items.armour.renderer.JetpackModel; import chbachman.armour.register.Vanilla; import chbachman.armour.util.ConfigHelper; import chbachman.armour.util.EnergyUtil; import chbachman.armour.util.UpgradeUtil; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; public class UpgradeHoverJetpack extends Upgrade { public UpgradeHoverJetpack() { super("jetpack"); } private int cost; @Override public void registerConfigOptions() { cost = ConfigHelper.get(ConfigHelper.SPEED, this, "cost to fly each tick", 500); } @Override public boolean isCompatible(IModularItem item, ItemStack stack, int armourType) { return armourType == ArmourSlot.CHESTPLATE.id; } @Override public int onTick(World world, EntityPlayer player, ItemStack stack, ArmourSlot slot) { if (EnergyUtil.getEnergyStored(stack) != 0) { setFlying(player, true, world); } else if (EnergyUtil.getEnergyStored(stack) == 0) { setFlying(player, false, world); } if (!UpgradeUtil.doesPlayerHaveUpgrade(player, Vanilla.calfShields) && player.capabilities.isFlying) { player.attackEntityFrom(DamageSource.onFire, 4F); } if (player.capabilities.isFlying) { return cost; } else { return 0; } } @Override public void onDequip(World world, EntityPlayer player, ItemStack stack, ArmourSlot slot) { setFlying(player, false, world); } @Override @SideOnly(Side.CLIENT) public ModelBiped getArmourModel(EntityLivingBase entityLiving, ItemStack stack, int armourSlot) { if (NBTHelper.getNBTUpgradeList(stack).contains(Vanilla.model)) { return new JetpackModel(); } return null; } private void setFlying(EntityPlayer player, boolean bool, World world) { // if(!world.isRemote){ // return; // } if (bool) { if (player.capabilities.allowFlying == true) { return; } player.capabilities.allowFlying = true; player.sendPlayerAbilities(); } else { if (player.capabilities.allowFlying == false) { return; } player.capabilities.allowFlying = false; player.capabilities.isFlying = false; player.sendPlayerAbilities(); } } }