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; } }