public EntityArrow(World par1World, EntityLiving par2EntityLiving, float par3) : base(par1World) { XTile = -1; YTile = -1; ZTile = -1; InTile = 0; InData = 0; InGround = false; DoesArrowBelongToPlayer = false; ArrowShake = 0; TicksInAir = 0; Damage = 2D; ArrowCritical = false; ShootingEntity = par2EntityLiving; DoesArrowBelongToPlayer = par2EntityLiving is EntityPlayer; SetSize(0.5F, 0.5F); SetLocationAndAngles(par2EntityLiving.PosX, par2EntityLiving.PosY + par2EntityLiving.GetEyeHeight(), par2EntityLiving.PosZ, par2EntityLiving.RotationYaw, par2EntityLiving.RotationPitch); PosX -= MathHelper2.Cos((RotationYaw / 180F) * (float)Math.PI) * 0.16F; PosY -= 0.10000000149011612F; PosZ -= MathHelper2.Sin((RotationYaw / 180F) * (float)Math.PI) * 0.16F; SetPosition(PosX, PosY, PosZ); YOffset = 0.0F; MotionX = -MathHelper2.Sin((RotationYaw / 180F) * (float)Math.PI) * MathHelper2.Cos((RotationPitch / 180F) * (float)Math.PI); MotionZ = MathHelper2.Cos((RotationYaw / 180F) * (float)Math.PI) * MathHelper2.Cos((RotationPitch / 180F) * (float)Math.PI); MotionY = -MathHelper2.Sin((RotationPitch / 180F) * (float)Math.PI); SetArrowHeading(MotionX, MotionY, MotionZ, par3 * 1.5F, 1.0F); }
/// <summary> /// Updates look /// </summary> public virtual void OnUpdateLook() { Entity.RotationPitch = 0.0F; if (Field_46147_d) { Field_46147_d = false; double d = PosX - Entity.PosX; double d1 = PosY - (Entity.PosY + (double)Entity.GetEyeHeight()); double d2 = PosZ - Entity.PosZ; double d3 = MathHelper2.Sqrt_double(d * d + d2 * d2); float f1 = (float)((Math.Atan2(d2, d) * 180D) / Math.PI) - 90F; float f2 = (float)(-((Math.Atan2(d1, d3) * 180D) / Math.PI)); Entity.RotationPitch = UpdateRotation(Entity.RotationPitch, f2, Field_46150_c); Entity.RotationYawHead = UpdateRotation(Entity.RotationYawHead, f1, Field_46149_b); } else { Entity.RotationYawHead = UpdateRotation(Entity.RotationYawHead, Entity.RenderYawOffset, 10F); } float f; for (f = Entity.RotationYawHead - Entity.RenderYawOffset; f < -180F; f += 360F) { } for (; f >= 180F; f -= 360F) { } if (!Entity.GetNavigator().NoPath()) { if (f < -75F) { Entity.RotationYawHead = Entity.RenderYawOffset - 75F; } if (f > 75F) { Entity.RotationYawHead = Entity.RenderYawOffset + 75F; } } }
/// <summary> /// Performs a ranged attack according to the AI's rangedAttackID. /// </summary> private void DoRangedAttack() { if (RangedAttackID == 1) { EntityArrow entityarrow = new EntityArrow(WorldObj, EntityHost, AttackTarget, 1.6F, 12F); WorldObj.PlaySoundAtEntity(EntityHost, "random.bow", 1.0F, 1.0F / (EntityHost.GetRNG().NextFloat() * 0.4F + 0.8F)); WorldObj.SpawnEntityInWorld(entityarrow); } else if (RangedAttackID == 2) { EntitySnowball entitysnowball = new EntitySnowball(WorldObj, EntityHost); float d = AttackTarget.PosX - EntityHost.PosX; float d1 = (AttackTarget.PosY + AttackTarget.GetEyeHeight()) - 1.1000000238418579F - entitysnowball.PosY; float d2 = AttackTarget.PosZ - EntityHost.PosZ; float f = MathHelper2.Sqrt_double(d * d + d2 * d2) * 0.2F; entitysnowball.SetThrowableHeading(d, d1 + f, d2, 1.6F, 12F); WorldObj.PlaySoundAtEntity(EntityHost, "random.bow", 1.0F, 1.0F / (EntityHost.GetRNG().NextFloat() * 0.4F + 0.8F)); WorldObj.SpawnEntityInWorld(entitysnowball); } }
public EntityArrow(World par1World, EntityLiving par2EntityLiving, EntityLiving par3EntityLiving, float par4, float par5) : base(par1World) { XTile = -1; YTile = -1; ZTile = -1; InTile = 0; InData = 0; InGround = false; DoesArrowBelongToPlayer = false; ArrowShake = 0; TicksInAir = 0; Damage = 2D; ArrowCritical = false; ShootingEntity = par2EntityLiving; DoesArrowBelongToPlayer = par2EntityLiving is EntityPlayer; PosY = (par2EntityLiving.PosY + par2EntityLiving.GetEyeHeight()) - 0.10000000149011612F; float d = par3EntityLiving.PosX - par2EntityLiving.PosX; float d1 = (par3EntityLiving.PosY + par3EntityLiving.GetEyeHeight()) - 0.69999998807907104F - PosY; float d2 = par3EntityLiving.PosZ - par2EntityLiving.PosZ; float d3 = MathHelper2.Sqrt_double(d * d + d2 * d2); //JAVA TO C# CONVERTER TODO TASK: Octal literals cannot be represented in C#: if (d3 < 9.9999999999999995E-008D) { return; } else { float f = (float)((Math.Atan2(d2, d) * 180D) / Math.PI) - 90F; float f1 = (float)(-((Math.Atan2(d1, d3) * 180D) / Math.PI)); float d4 = d / d3; float d5 = d2 / d3; SetLocationAndAngles(par2EntityLiving.PosX + d4, PosY, par2EntityLiving.PosZ + d5, f, f1); YOffset = 0.0F; float f2 = (float)d3 * 0.2F; SetArrowHeading(d, d1 + f2, d2, par4, par5); return; } }
public EntityThrowable(World par1World, EntityLiving par2EntityLiving) : base(par1World) { XTile = -1; YTile = -1; ZTile = -1; InTile = 0; InGround = false; ThrowableShake = 0; TicksInAir = 0; Thrower = par2EntityLiving; SetSize(0.25F, 0.25F); SetLocationAndAngles(par2EntityLiving.PosX, par2EntityLiving.PosY + par2EntityLiving.GetEyeHeight(), par2EntityLiving.PosZ, par2EntityLiving.RotationYaw, par2EntityLiving.RotationPitch); PosX -= MathHelper2.Cos((RotationYaw / 180F) * (float)Math.PI) * 0.16F; PosY -= 0.10000000149011612F; PosZ -= MathHelper2.Sin((RotationYaw / 180F) * (float)Math.PI) * 0.16F; SetPosition(PosX, PosY, PosZ); YOffset = 0.0F; float f = 0.4F; MotionX = -MathHelper2.Sin((RotationYaw / 180F) * (float)Math.PI) * MathHelper2.Cos((RotationPitch / 180F) * (float)Math.PI) * f; MotionZ = MathHelper2.Cos((RotationYaw / 180F) * (float)Math.PI) * MathHelper2.Cos((RotationPitch / 180F) * (float)Math.PI) * f; MotionY = -MathHelper2.Sin(((RotationPitch + Func_40074_d()) / 180F) * (float)Math.PI) * f; SetThrowableHeading(MotionX, MotionY, MotionZ, Func_40077_c(), 1.0F); }
/// <summary> /// Returns a vector representing the projection along the given entity's view for the given distance /// </summary> public static Vec3D ProjectViewFromEntity(EntityLiving par0EntityLiving, double par1) { double d = par0EntityLiving.PrevPosX + (par0EntityLiving.PosX - par0EntityLiving.PrevPosX) * par1; double d1 = par0EntityLiving.PrevPosY + (par0EntityLiving.PosY - par0EntityLiving.PrevPosY) * par1 + (double)par0EntityLiving.GetEyeHeight(); double d2 = par0EntityLiving.PrevPosZ + (par0EntityLiving.PosZ - par0EntityLiving.PrevPosZ) * par1; double d3 = d + (double)(ObjectX * 1.0F); double d4 = d1 + (double)(ObjectY * 1.0F); double d5 = d2 + (double)(ObjectZ * 1.0F); return(Vec3D.CreateVector(d3, d4, d5)); }
/// <summary> /// Updates the task /// </summary> public override void UpdateTask() { IdleTime--; IdleEntity.GetLookHelper().SetLookPosition(IdleEntity.PosX + LookX, IdleEntity.PosY + (double)IdleEntity.GetEyeHeight(), IdleEntity.PosZ + LookZ, 10F, IdleEntity.GetVerticalFaceSpeed()); }