Jump to content

[1.7.10] isAirBorne Always Evaluating False (Solved)


Recommended Posts

Posted

Is there any workaround for getting if an entity is in the air, or falling?

 

	@Override
public boolean onLeftClickEntity(ItemStack stack, EntityPlayer player, Entity entity)
{
	if (entity.worldObj.isRemote && entity.worldObj != null && entity.worldObj.isDaytime())
	{
		stack.damageItem(5, player);
		if(!entity.isAirBorne)
		{
			System.out.println("grounded");
			entity.setVelocity(0.0D, 1.0D, 0.0D);
			player.setVelocity(0.0D, 1.0D, 0.0D);
		}
		else
		{
			System.out.println("airborne");
			entity.setVelocity(0.0D, -1.0D, 0.0D);
		}
	}
	return true;
}

This always prints "grounded" and adds more positive velocity to both.

Posted

> entity.worldObj.isRemote && entity.worldObj != null - you are accessing world before null-check оО

 

 

> entity.worldObj != null - i'm not sure, but world can't be null

 

> entity.worldObj.isRemote - it happens at client, not at server, replace with !entity.worldObj.isRemote

Posted

What i did in my personal armar was to check "isCollided", as isAirborne did not work.

 

Don't quote me on that but i think entities are airborne when they are hit by something that sends them to the air, like iron golems or creepers. Never tried it though.

Posted

This is on a sword by the way, not armor. :P

 

And ugh how did I miss that method, I went through the autocomplete list like 6 times...well, onGround + motion works, thanks!  :D  Also I derped, you can't have the isRemote check in here because you need to affect the position of entities on the server.  With that check in, the entities just snap back to where they originally were when their position on the server is re-evaluated.

 

	@Override
public boolean onLeftClickEntity(ItemStack stack, EntityPlayer player, Entity entity)
{
	WorldServer overworldInst = MinecraftServer.getServer().worldServers[0];
	if (overworldInst.isDaytime())
	{
		if (player.onGround && player instanceof EntityLivingBase)
		{
			if(entity.onGround && entity instanceof EntityLivingBase)
			{
				entity.motionX = 0.0D;
				entity.motionY = 0.8D;
				entity.motionZ = 0.0D;
				player.jump();
				stack.damageItem(5, player);
			}
			else
			{
				Vec3 playerLook = player.getLookVec();
				entity.motionX = playerLook.xCoord * 2;
				entity.motionY = 0.0D;
				entity.motionZ = playerLook.zCoord * 2;
				stack.damageItem(1, player);
			}
		}
	}
	return true;
}

 

However, the damaging of the stack is buggy, when the durability runs out, it plays the break noise, but resets the damage to full.  If you try to break a block with it, the "new" sword disappears.

Posted

Alright, and one other thing about swords that's not being obvious to me right now: what do I have to do to make it damage entities normally at night?  Currently it does nothing at night.

Posted

	@Override
public boolean onLeftClickEntity(ItemStack stack, EntityPlayer player, Entity entity)
{
	WorldServer overworldInst = MinecraftServer.getServer().worldServers[0];
	if (overworldInst.isDaytime())
	{
		if (player.onGround && player instanceof EntityLivingBase)
		{
			if(entity.onGround && entity instanceof EntityLivingBase)
			{
				Vec3 playerLook = player.getLookVec();
				entity.motionX = 0.0D;
				entity.motionY = 1.0D;
				entity.motionZ = 0.0D;
				player.setVelocity((playerLook.xCoord * 0.5) * -1.0D, 0.0D, (playerLook.zCoord * 0.5) * -1.0D);
				stack.damageItem(5, player);
				return true;
			}
			else
			{
				Vec3 playerLook = player.getLookVec();
				entity.motionX = playerLook.xCoord * 2;
				entity.motionY = 0.0D;
				entity.motionZ = playerLook.zCoord * 2;
				stack.damageItem(1, player);
				return true;
			}
		}
		else
		{
			return false;
		}
	}
	else
	{
		return false;
	}
}

 

There we go :D  That hits like a sword while jumping or at night, and does the special actions while on the ground during the day.

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.