From 37b1ebeae5ed912a9e68cd90c8f48e4612186909 Mon Sep 17 00:00:00 2001 From: Bjorn Beishline <75190918+BjornTheProgrammer@users.noreply.github.com> Date: Sun, 1 Feb 2026 11:46:18 -0700 Subject: [PATCH] Fix abilities not updating properly --- .../java/org/patchbukkit/entity/PatchBukkitPlayer.java | 9 +++++---- rust/src/java/native_callbacks/abilities.rs | 5 +++++ 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/java/patchbukkit/src/main/java/org/patchbukkit/entity/PatchBukkitPlayer.java b/java/patchbukkit/src/main/java/org/patchbukkit/entity/PatchBukkitPlayer.java index 234bb1c..150786c 100644 --- a/java/patchbukkit/src/main/java/org/patchbukkit/entity/PatchBukkitPlayer.java +++ b/java/patchbukkit/src/main/java/org/patchbukkit/entity/PatchBukkitPlayer.java @@ -1180,8 +1180,10 @@ public class PatchBukkitPlayer @Override public void setAllowFlight(boolean flight) { - var abilities = NativePatchBukkit.getAbilities(this.uuid); - abilities.withAllowFlying(flight); + var abilities = NativePatchBukkit.getAbilities(this.uuid).withAllowFlying(flight); + if (flight == false) { + abilities = abilities.withFlying(false); + } NativePatchBukkit.setAbilities(this.uuid, abilities); } @@ -1259,8 +1261,7 @@ public class PatchBukkitPlayer @Override public void setFlying(boolean value) { - var abilities = NativePatchBukkit.getAbilities(this.getUniqueId()); - abilities.withFlying(value); + var abilities = NativePatchBukkit.getAbilities(this.getUniqueId()).withFlying(value); NativePatchBukkit.setAbilities(this.getUniqueId(), abilities); } diff --git a/rust/src/java/native_callbacks/abilities.rs b/rust/src/java/native_callbacks/abilities.rs index bab6d5e..467e7eb 100644 --- a/rust/src/java/native_callbacks/abilities.rs +++ b/rust/src/java/native_callbacks/abilities.rs @@ -54,6 +54,11 @@ pub extern "C" fn rust_set_abilities( }) }); + let player = player.clone(); + ctx.runtime.spawn(async move { + player.send_abilities_update().await; + }); + return true; } }