From f7c695d13fd408ab150c4ad41235747ae0ed0a6e Mon Sep 17 00:00:00 2001 From: FluxCapacitor2 <31071265+FluxCapacitor2@users.noreply.github.com> Date: Sat, 5 Sep 2026 16:44:24 -0400 Subject: [PATCH] Fix projectile facing direction at launch --- .../ca/atlasengine/projectiles/AbstractProjectile.java | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/main/java/ca/atlasengine/projectiles/AbstractProjectile.java b/src/main/java/ca/atlasengine/projectiles/AbstractProjectile.java index ead07c1..e04ed7a 100644 --- a/src/main/java/ca/atlasengine/projectiles/AbstractProjectile.java +++ b/src/main/java/ca/atlasengine/projectiles/AbstractProjectile.java @@ -134,7 +134,7 @@ protected final void launch(Point from, Point to, double power, double uncertain } Vec velocity = movement.mul(ServerFlag.SERVER_TICKS_PER_SECOND); - Pos spawnPosition = new Pos(from.x(), from.y(), from.z()).withDirection(movement); + Pos spawnPosition = withProjectileView(movement, from); setInstance(instance, spawnPosition).whenComplete((ignored, throwable) -> { if (throwable != null) { remove(); @@ -232,9 +232,13 @@ public final boolean isInBlock() { private void updateProjectileRotation(Vec movement) { if (movement.isZero()) return; + position = withProjectileView(movement, position); + } + + private static Pos withProjectileView(Vec movement, Point position) { float yaw = (float) Math.toDegrees(Math.atan2(movement.x(), movement.z())); float pitch = (float) Math.toDegrees(Math.atan2(movement.y(), Math.hypot(movement.x(), movement.z()))); - position = position.withView(yaw, pitch); + return new Pos(position.x(), position.y(), position.z(), yaw, pitch); } private void callBlockCollision() {