From b77e7651e707f611e899dd2b0fd483197e584a0f Mon Sep 17 00:00:00 2001 From: Hykilpikonna Date: Fri, 21 Feb 2020 14:38:15 -0500 Subject: [PATCH] [+] Create getNeededRotations() --- .../org/hydev/hyritone/util/PlayerUtils.java | 23 +++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/src/main/java/org/hydev/hyritone/util/PlayerUtils.java b/src/main/java/org/hydev/hyritone/util/PlayerUtils.java index 27007694..c686c99a 100644 --- a/src/main/java/org/hydev/hyritone/util/PlayerUtils.java +++ b/src/main/java/org/hydev/hyritone/util/PlayerUtils.java @@ -45,4 +45,27 @@ public class PlayerUtils player().getPosY() + player().getEyeHeight(player().getPose()), player().getPosZ()); } + + /** + * Get what does it take to rotate to a direction + * + * @param vec Final direction + * @return Rotation required + * @author Wurst7 https://github.com/Wurst-Imperium/Wurst7 + */ + public static Rotation getNeededRotations(Vec3d vec) + { + Vec3d eyesPos = getEyesPos(); + + double diffX = vec.x - eyesPos.x; + double diffY = vec.y - eyesPos.y; + double diffZ = vec.z - eyesPos.z; + + double diffXZ = Math.sqrt(diffX * diffX + diffZ * diffZ); + + float yaw = (float)Math.toDegrees(Math.atan2(diffZ, diffX)) - 90F; + float pitch = (float)-Math.toDegrees(Math.atan2(diffY, diffXZ)); + + return new Rotation(yaw, pitch); + } }