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() {