protected internal override void UpdatePlayerActionState() { hasAttacked = Func_25026_u(); float f = 16F; if (playerToAttack == null) { playerToAttack = FindPlayerToAttack(); if (playerToAttack != null) { pathToEntity = worldObj.GetPathToEntity(this, playerToAttack, f); } } else { if (!playerToAttack.IsEntityAlive()) { playerToAttack = null; } else { float f1 = playerToAttack.GetDistanceToEntity(this); if (CanEntityBeSeen(playerToAttack)) { AttackEntity(playerToAttack, f1); } else { Func_28013_b(playerToAttack, f1); } } } if (!hasAttacked && playerToAttack != null && (pathToEntity == null || rand.NextInt (20) == 0)) { pathToEntity = worldObj.GetPathToEntity(this, playerToAttack, f); } else { if (!hasAttacked && (pathToEntity == null && rand.Next(80) == 0 || rand.NextInt (80) == 0)) { Func_31021_B(); } } int i = net.minecraft.src.MathHelper.Floor_double(boundingBox.minY + 0.5D); bool flag = IsInWater(); bool flag1 = HandleLavaMovement(); rotationPitch = 0.0F; if (pathToEntity == null || rand.Next(100) == 0) { base.UpdatePlayerActionState(); pathToEntity = null; return; } net.minecraft.src.Vec3D vec3d = pathToEntity.GetPosition(this); for (double d = width * 2.0F; vec3d != null && vec3d.SquareDistanceTo(posX, vec3d .yCoord, posZ) < d * d;) { pathToEntity.IncrementPathIndex(); if (pathToEntity.IsFinished()) { vec3d = null; pathToEntity = null; } else { vec3d = pathToEntity.GetPosition(this); } } isJumping = false; if (vec3d != null) { double d1 = vec3d.xCoord - posX; double d2 = vec3d.zCoord - posZ; double d3 = vec3d.yCoord - (double)i; float f2 = (float)((System.Math.Atan2(d2, d1) * 180D) / 3.1415927410125732D) - 90F; float f3 = f2 - rotationYaw; moveForward = moveSpeed; for (; f3 < -180F; f3 += 360F) { } for (; f3 >= 180F; f3 -= 360F) { } if (f3 > 30F) { f3 = 30F; } if (f3 < -30F) { f3 = -30F; } rotationYaw += f3; if (hasAttacked && playerToAttack != null) { double d4 = playerToAttack.posX - posX; double d5 = playerToAttack.posZ - posZ; float f5 = rotationYaw; rotationYaw = (float)((System.Math.Atan2(d5, d4) * 180D) / 3.1415927410125732D) - 90F; float f4 = (((f5 - rotationYaw) + 90F) * 3.141593F) / 180F; moveStrafing = -net.minecraft.src.MathHelper.Sin(f4) * moveForward * 1.0F; moveForward = net.minecraft.src.MathHelper.Cos(f4) * moveForward * 1.0F; } if (d3 > 0.0D) { isJumping = true; } } if (playerToAttack != null) { FaceEntity(playerToAttack, 30F, 30F); } if (isCollidedHorizontally && !GetGotPath()) { isJumping = true; } if (rand.NextFloat() < 0.8F && (flag || flag1)) { isJumping = true; } }
public virtual net.minecraft.src.MovingObjectPosition Func_706_a(net.minecraft.src.Vec3D vec3d, net.minecraft.src.Vec3D vec3d1) { net.minecraft.src.Vec3D vec3d2 = vec3d.GetIntermediateWithXValue(vec3d1, minX); net.minecraft.src.Vec3D vec3d3 = vec3d.GetIntermediateWithXValue(vec3d1, maxX); net.minecraft.src.Vec3D vec3d4 = vec3d.GetIntermediateWithYValue(vec3d1, minY); net.minecraft.src.Vec3D vec3d5 = vec3d.GetIntermediateWithYValue(vec3d1, maxY); net.minecraft.src.Vec3D vec3d6 = vec3d.GetIntermediateWithZValue(vec3d1, minZ); net.minecraft.src.Vec3D vec3d7 = vec3d.GetIntermediateWithZValue(vec3d1, maxZ); if (!IsVecInYZ(vec3d2)) { vec3d2 = null; } if (!IsVecInYZ(vec3d3)) { vec3d3 = null; } if (!IsVecInXZ(vec3d4)) { vec3d4 = null; } if (!IsVecInXZ(vec3d5)) { vec3d5 = null; } if (!IsVecInXY(vec3d6)) { vec3d6 = null; } if (!IsVecInXY(vec3d7)) { vec3d7 = null; } net.minecraft.src.Vec3D vec3d8 = null; if (vec3d2 != null && (vec3d8 == null || vec3d.SquareDistanceTo(vec3d2) < vec3d.SquareDistanceTo (vec3d8))) { vec3d8 = vec3d2; } if (vec3d3 != null && (vec3d8 == null || vec3d.SquareDistanceTo(vec3d3) < vec3d.SquareDistanceTo (vec3d8))) { vec3d8 = vec3d3; } if (vec3d4 != null && (vec3d8 == null || vec3d.SquareDistanceTo(vec3d4) < vec3d.SquareDistanceTo (vec3d8))) { vec3d8 = vec3d4; } if (vec3d5 != null && (vec3d8 == null || vec3d.SquareDistanceTo(vec3d5) < vec3d.SquareDistanceTo (vec3d8))) { vec3d8 = vec3d5; } if (vec3d6 != null && (vec3d8 == null || vec3d.SquareDistanceTo(vec3d6) < vec3d.SquareDistanceTo (vec3d8))) { vec3d8 = vec3d6; } if (vec3d7 != null && (vec3d8 == null || vec3d.SquareDistanceTo(vec3d7) < vec3d.SquareDistanceTo (vec3d8))) { vec3d8 = vec3d7; } if (vec3d8 == null) { return(null); } byte byte0 = unchecked ((byte)(-1)); if (vec3d8 == vec3d2) { byte0 = 4; } if (vec3d8 == vec3d3) { byte0 = 5; } if (vec3d8 == vec3d4) { byte0 = 0; } if (vec3d8 == vec3d5) { byte0 = 1; } if (vec3d8 == vec3d6) { byte0 = 2; } if (vec3d8 == vec3d7) { byte0 = 3; } return(new net.minecraft.src.MovingObjectPosition(0, 0, 0, byte0, vec3d8)); }