diff --git a/src/api/java/baritone/api/utils/RayTraceUtils.java b/src/api/java/baritone/api/utils/RayTraceUtils.java index 4f763e392..d80f84e5e 100644 --- a/src/api/java/baritone/api/utils/RayTraceUtils.java +++ b/src/api/java/baritone/api/utils/RayTraceUtils.java @@ -50,7 +50,7 @@ public final class RayTraceUtils { } else { start = entity.getPositionEyes(1.0F); // do whatever is correct } - Vec3d direction = RotationUtils.calcVec3dFromRotation(rotation); + Vec3d direction = RotationUtils.calcLookDirectionFromRotation(rotation); Vec3d end = start.add( direction.x * blockReachDistance, direction.y * blockReachDistance, diff --git a/src/api/java/baritone/api/utils/RotationUtils.java b/src/api/java/baritone/api/utils/RotationUtils.java index 1991ab878..4ebb22dd5 100644 --- a/src/api/java/baritone/api/utils/RotationUtils.java +++ b/src/api/java/baritone/api/utils/RotationUtils.java @@ -37,11 +37,13 @@ public final class RotationUtils { * Constant that a degree value is multiplied by to get the equivalent radian value */ public static final double DEG_TO_RAD = Math.PI / 180.0; + public static final float DEG_TO_RAD_F = (float) DEG_TO_RAD; /** * Constant that a radian value is multiplied by to get the equivalent degree value */ public static final double RAD_TO_DEG = 180.0 / Math.PI; + public static final float RAD_TO_DEG_F = (float) RAD_TO_DEG; /** * Offsets from the root block position to the center of each side. @@ -122,12 +124,17 @@ public final class RotationUtils { * @param rotation The input rotation * @return Look vector for the rotation */ + public static Vec3d calcLookDirectionFromRotation(Rotation rotation) { + float flatZ = MathHelper.cos((-rotation.getYaw() * DEG_TO_RAD_F) - (float) Math.PI); + float flatX = MathHelper.sin((-rotation.getYaw() * DEG_TO_RAD_F) - (float) Math.PI); + float pitchBase = -MathHelper.cos(-rotation.getPitch() * DEG_TO_RAD_F); + float pitchHeight = MathHelper.sin(-rotation.getPitch() * DEG_TO_RAD_F); + return new Vec3d(flatX * pitchBase, pitchHeight, flatZ * pitchBase); + } + + @Deprecated public static Vec3d calcVec3dFromRotation(Rotation rotation) { - float f = MathHelper.cos(-rotation.getYaw() * (float) DEG_TO_RAD - (float) Math.PI); - float f1 = MathHelper.sin(-rotation.getYaw() * (float) DEG_TO_RAD - (float) Math.PI); - float f2 = -MathHelper.cos(-rotation.getPitch() * (float) DEG_TO_RAD); - float f3 = MathHelper.sin(-rotation.getPitch() * (float) DEG_TO_RAD); - return new Vec3d((double) (f1 * f2), (double) f3, (double) (f * f2)); + return calcLookDirectionFromRotation(rotation); } /** diff --git a/src/main/java/baritone/behavior/ElytraBehavior.java b/src/main/java/baritone/behavior/ElytraBehavior.java index 3ff824474..11512b7b1 100644 --- a/src/main/java/baritone/behavior/ElytraBehavior.java +++ b/src/main/java/baritone/behavior/ElytraBehavior.java @@ -622,10 +622,10 @@ public final class ElytraBehavior extends Behavior implements IElytraBehavior, H double motionX = motion.x; double motionY = motion.y; double motionZ = motion.z; - float flatZ = MathHelper.cos(-rotationYaw * 0.017453292F - (float) Math.PI); // 0.174... is Math.PI / 180 - float flatX = MathHelper.sin(-rotationYaw * 0.017453292F - (float) Math.PI); - float pitchBase = -MathHelper.cos(-rotationPitch * 0.017453292F); - float pitchHeight = MathHelper.sin(-rotationPitch * 0.017453292F); + float flatZ = MathHelper.cos((-rotationYaw * RotationUtils.DEG_TO_RAD_F) - (float) Math.PI); + float flatX = MathHelper.sin((-rotationYaw * RotationUtils.DEG_TO_RAD_F) - (float) Math.PI); + float pitchBase = -MathHelper.cos(-rotationPitch * RotationUtils.DEG_TO_RAD_F); + float pitchHeight = MathHelper.sin(-rotationPitch * RotationUtils.DEG_TO_RAD_F); Vec3d lookDirection = new Vec3d(flatX * pitchBase, pitchHeight, flatZ * pitchBase); if (firework) { @@ -635,7 +635,7 @@ public final class ElytraBehavior extends Behavior implements IElytraBehavior, H motionZ += lookDirection.z * 0.1 + (lookDirection.z * 1.5 - motionZ) * 0.5; } - float pitchRadians = rotationPitch * 0.017453292F; + float pitchRadians = rotationPitch * RotationUtils.DEG_TO_RAD_F; double pitchBase2 = Math.sqrt(lookDirection.x * lookDirection.x + lookDirection.z * lookDirection.z); double flatMotion = Math.sqrt(motionX * motionX + motionZ * motionZ); double thisIsAlwaysOne = lookDirection.length();