Jump to content

Help! Can Still fly (in survival) once you take the armor allowing it off.


Recommended Posts

Posted

    I have made some magic armor (gravitite) that allows you to fly, but when I take it off, I can still fly.  I want it to be able to work with other ways of flight though (like Thaumcraft's Thermostatic Harness or Ars Magica's Flight Spell).

Edit: it works properly if I take the gravitite chestplate off and put the Earth chestplate on instead.

My code is:

Tick Handler:

--------------------------------------------------------------------------------------------------------------------------------------------------------

import java.util.EnumSet;

 

import net.minecraft.entity.player.EntityPlayer;

import net.minecraft.item.ItemStack;

import net.minecraft.potion.Potion;

import net.minecraft.potion.PotionEffect;

 

import net.minecraftforge.event.ForgeSubscribe;

import net.minecraftforge.event.entity.living.LivingEvent.LivingUpdateEvent;

 

import cpw.mods.fml.common.ITickHandler;

import cpw.mods.fml.common.TickType;

 

public class ServerTickHandler implements ITickHandler {

 

private boolean isWearingGravitite;

private boolean isWearingEarthChest;

//you keep flying once you take the armor off

private void onPlayerTick(EntityPlayer player) {

if (player != null && player.getCurrentItemOrArmor(4) != null && player.getCurrentItemOrArmor(3) != null && player.getCurrentItemOrArmor(2) != null && player.getCurrentItemOrArmor(1) != null) {

ItemStack Helmet = player.getCurrentItemOrArmor(4);

ItemStack Chestplate = player.getCurrentItemOrArmor(3);

ItemStack Leggings = player.getCurrentItemOrArmor(2);

ItemStack Boots = player.getCurrentItemOrArmor(1);

ItemStack EarthChestplate = new ItemStack(MagicOres.EarthChestplate);

 

isWearingGravitite = (Helmet.getItem() == MagicOres.GravititeHelmet && Chestplate.getItem() == MagicOres.GravititeChestplate && Leggings.getItem() == MagicOres.GravititeLeggings && Boots.getItem() == MagicOres.GravititeBoots);

isWearingEarthChest = (Chestplate.getItem() == MagicOres.EarthChestplate || Chestplate == EarthChestplate);

if (isWearingGravitite == true) {

player.capabilities.allowFlying = true;

player.sendPlayerAbilities();

player.setFlying(true);

 

}

if(player.capabilities.isCreativeMode == false && (isWearingGravitite == false || player.getCurrentItemOrArmor(4).getItem() != MagicOres.GravititeHelmet || player.getCurrentItemOrArmor(3).getItem() != MagicOres.GravititeChestplate || player.getCurrentItemOrArmor(2).getItem() != MagicOres.GravititeLeggings || player.getCurrentItemOrArmor(1).getItem() != MagicOres.GravititeBoots)) {

player.capabilities.allowFlying = false;

player.capabilities.isFlying = false;

player.isAirBorne = true;

player.onGround = false;

player.sendPlayerAbilities();

 

 

 

}

 

//won't work

if (player.getCurrentItemOrArmor(3) == EarthChestplate) {

player.addPotionEffect(new PotionEffect(Potion.resistance.getId(), 20, 1));

player.addPotionEffect(new PotionEffect(Potion.damageBoost.getId(), 20, 1));

player.addPotionEffect(new PotionEffect(Potion.digSpeed.getId(), 20, 1));

player.addPotionEffect(new PotionEffect(Potion.moveSlowdown.getId(), 20, 0));

}

 

if (isWearingEarthChest) {

player.addPotionEffect(new PotionEffect(Potion.resistance.getId(), 20, 1));

player.addPotionEffect(new PotionEffect(Potion.damageBoost.getId(), 20, 1));

player.addPotionEffect(new PotionEffect(Potion.digSpeed.getId(), 20, 1));

player.addPotionEffect(new PotionEffect(Potion.moveSlowdown.getId(), 20, 0));

}

}

 

 

 

 

}

 

 

 

 

 

@Override

public void tickStart(EnumSet<TickType> type, Object... tickData) {

if (type.equals(EnumSet.of(TickType.PLAYER))) {

 

onPlayerTick((EntityPlayer) tickData[0]);

}

 

}

 

@Override

public void tickEnd(EnumSet<TickType> type, Object... tickData) {

 

 

}

 

@Override

public EnumSet<TickType> ticks() {

 

return EnumSet.of(TickType.PLAYER, TickType.SERVER);

}

 

@Override

public String getLabel() {

 

return null;

}

 

}

--------------------------------------------------------------------------------------------------------------------------------------------------------

Armor Class (chestplate):

--------------------------------------------------------------------------------------------------------------------------------------------------------

import RickyRyan.mod.MagicOres.common.MagicOres;

import net.minecraft.client.renderer.texture.IconRegister;

import net.minecraft.entity.player.EntityPlayer;

import net.minecraft.item.EnumArmorMaterial;

import net.minecraft.item.ItemArmor;

import net.minecraft.item.ItemStack;

import net.minecraft.world.World;

 

public class ItemGravititeChestplate extends ItemArmor {

 

public ItemGravititeChestplate(int par1,

EnumArmorMaterial par2EnumArmorMaterial, int par3, int par4) {

super(par1, par2EnumArmorMaterial, par3, par4);

 

}

 

public void registerIcons(IconRegister iconRegister) {

 

itemIcon = iconRegister.registerIcon("MagicOres:GravititeChestplate");

 

}

 

 

 

}

--------------------------------------------------------------------------------------------------------------------------------------------------------

 

Any help will be greatly appreciated.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Announcements



×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.