Exemplo n.º 1
0
 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);
 }
Exemplo n.º 2
0
        /// <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);
     }
 }
Exemplo n.º 4
0
        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);
        }
Exemplo n.º 6
0
        /// <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));
        }
Exemplo n.º 7
0
 /// <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());
 }