From 09f1f88f58a03f61092f8636ad780d42db87d8d9 Mon Sep 17 00:00:00 2001 From: Warrior <50800980+Warriorrrr@users.noreply.github.com> Date: Tue, 18 Feb 2025 01:03:48 +0100 Subject: [PATCH] Fix getForwards/SidewaysMovement for players (#12140) --- .../java/org/bukkit/entity/LivingEntity.java | 30 ++++++++++++------- .../craftbukkit/entity/CraftPlayer.java | 16 ++++++++++ 2 files changed, 35 insertions(+), 11 deletions(-) diff --git a/paper-api/src/main/java/org/bukkit/entity/LivingEntity.java b/paper-api/src/main/java/org/bukkit/entity/LivingEntity.java index d21a228bb..5c1a36819 100644 --- a/paper-api/src/main/java/org/bukkit/entity/LivingEntity.java +++ b/paper-api/src/main/java/org/bukkit/entity/LivingEntity.java @@ -1115,10 +1115,13 @@ public interface LivingEntity extends Attributable, Damageable, ProjectileSource * Retrieves the sideways movement direction of the entity. *
* The returned value ranges from -1 to 1, where: - * - Positive 1 represents movement to the left. - * - Negative 1 represents movement to the right. - *
- * Please note that for entities of type {@link Player}, this value is updated only when riding another entity. + *
* This method specifically provides information about the entity's sideways movement, whereas {@link #getVelocity()} returns * a vector representing the entity's overall current momentum. @@ -1131,9 +1134,11 @@ public interface LivingEntity extends Attributable, Damageable, ProjectileSource * Retrieves the upwards movement direction of the entity. *
* The returned value ranges from -1 to 1, where: - * - Positive 1 represents upward movement. - * - Negative 1 represents downward movement. - *
+ *
* This method specifically provides information about the entity's vertical movement, @@ -1148,10 +1153,13 @@ public interface LivingEntity extends Attributable, Damageable, ProjectileSource * Retrieves the forwards movement direction of the entity. *
* The returned value ranges from -1 to 1, where: - * - Positive 1 represents movement forwards. - * - Negative 1 represents movement backwards. - *
- * Please note that for entities of type {@link Player}, this value is updated only when riding another entity. + *
* This method specifically provides information about the entity's forward and backward movement, * whereas {@link #getVelocity()} returns a vector representing the entity's overall current momentum. diff --git a/paper-server/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/paper-server/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java index 3260f20b6..218a27def 100644 --- a/paper-server/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/paper-server/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java @@ -3583,4 +3583,20 @@ public class CraftPlayer extends CraftHumanEntity implements Player { handle.containerMenu.broadcastChanges(); return new PaperPlayerGiveResult(leftovers.build(), drops.build()); } + + @Override + public float getSidewaysMovement() { + final boolean leftMovement = this.getHandle().getLastClientInput().left(); + final boolean rightMovement = this.getHandle().getLastClientInput().right(); + + return leftMovement == rightMovement ? 0 : leftMovement ? 1 : -1; + } + + @Override + public float getForwardsMovement() { + final boolean forwardMovement = this.getHandle().getLastClientInput().forward(); + final boolean backwardMovement = this.getHandle().getLastClientInput().backward(); + + return forwardMovement == backwardMovement ? 0 : forwardMovement ? 1 : -1; + } }