From 01fe76733f869c4f2ff6681003e31960955a39ca Mon Sep 17 00:00:00 2001 From: H31IX Date: Fri, 25 May 2012 17:38:03 -0400 Subject: [PATCH] Fire PlayerToggleFlightEvent. Fixes BUKKIT-1696 --- .../net/minecraft/server/NetServerHandler.java | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/src/main/java/net/minecraft/server/NetServerHandler.java b/src/main/java/net/minecraft/server/NetServerHandler.java index 9d002fb841..157a6aadea 100644 --- a/src/main/java/net/minecraft/server/NetServerHandler.java +++ b/src/main/java/net/minecraft/server/NetServerHandler.java @@ -42,6 +42,7 @@ import org.bukkit.event.player.PlayerToggleSprintEvent; import org.bukkit.event.player.PlayerPortalEvent; import org.bukkit.event.inventory.*; import org.bukkit.event.inventory.InventoryType.SlotType; +import org.bukkit.event.player.PlayerToggleFlightEvent; import org.bukkit.inventory.CraftingInventory; import org.bukkit.inventory.Inventory; import org.bukkit.inventory.InventoryView; @@ -1292,7 +1293,18 @@ public class NetServerHandler extends NetHandler implements ICommandListener { } public void a(Packet202Abilities packet202abilities) { - this.player.abilities.isFlying = packet202abilities.b && this.player.abilities.canFly; + // CraftBukkit start + if (this.player.abilities.canFly && this.player.abilities.isFlying != packet202abilities.b) { + PlayerToggleFlightEvent event = new PlayerToggleFlightEvent(this.server.getPlayer(this.player), packet202abilities.b); + this.server.getPluginManager().callEvent(event); + if (!event.isCancelled()) { + this.player.abilities.isFlying = packet202abilities.b; // Actually set the player's flying status + } + else { + this.player.updateAbilities(); // Tell the player their ability was reverted + } + } + // CraftBukkit end } // CraftBukkit start