From d7369326d1a72446a6ff7f1ccd088c96f18b3451 Mon Sep 17 00:00:00 2001 From: Faris Rehman Date: Mon, 22 Aug 2016 13:42:47 +0100 Subject: [PATCH 1/2] Created FlyStatusChangeEvent Created FlyStatusChangeEvent, ready for implementation in the command. --- .../src/net/ess3/api/events/FlyStatusChangeEvent.java | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 Essentials/src/net/ess3/api/events/FlyStatusChangeEvent.java diff --git a/Essentials/src/net/ess3/api/events/FlyStatusChangeEvent.java b/Essentials/src/net/ess3/api/events/FlyStatusChangeEvent.java new file mode 100644 index 00000000000..ece3c19b349 --- /dev/null +++ b/Essentials/src/net/ess3/api/events/FlyStatusChangeEvent.java @@ -0,0 +1,9 @@ +package net.ess3.api.events; + +import net.ess3.api.IUser; + +public class FlyStatusChangeEvent extends StatusChangeEvent { + public FlyStatusChangeEvent(IUser affected, IUser controller, boolean value) { + super(affected, controller, value); + } +} From 2409eb4a5d0af87dce459b565b91f395157f7abc Mon Sep 17 00:00:00 2001 From: Faris Rehman Date: Mon, 22 Aug 2016 13:47:41 +0100 Subject: [PATCH 2/2] Implement FlyStatusChangeEvent Implement FlyStatusChangeEvent in the /fly command. --- .../essentials/commands/Commandfly.java | 30 +++++++++++-------- 1 file changed, 18 insertions(+), 12 deletions(-) diff --git a/Essentials/src/com/earth2me/essentials/commands/Commandfly.java b/Essentials/src/com/earth2me/essentials/commands/Commandfly.java index 40ddfccf215..580a2cf805e 100644 --- a/Essentials/src/com/earth2me/essentials/commands/Commandfly.java +++ b/Essentials/src/com/earth2me/essentials/commands/Commandfly.java @@ -3,10 +3,10 @@ import com.earth2me.essentials.CommandSource; import com.earth2me.essentials.User; import org.bukkit.Server; +import net.ess3.api.events.FlyStatusChangeEvent; import static com.earth2me.essentials.I18n.tl; - public class Commandfly extends EssentialsToggleCommand { public Commandfly() { super("fly", "essentials.fly.others"); @@ -27,17 +27,23 @@ void togglePlayer(CommandSource sender, User user, Boolean enabled) { if (enabled == null) { enabled = !user.getBase().getAllowFlight(); } - - user.getBase().setFallDistance(0f); - user.getBase().setAllowFlight(enabled); - - if (!user.getBase().getAllowFlight()) { - user.getBase().setFlying(false); - } - - user.sendMessage(tl("flyMode", tl(enabled ? "enabled" : "disabled"), user.getDisplayName())); - if (!sender.isPlayer() || !sender.getPlayer().equals(user.getBase())) { - sender.sendMessage(tl("flyMode", tl(enabled ? "enabled" : "disabled"), user.getDisplayName())); + + + final User controller = sender.isPlayer() ? ess.getUser(sender.getPlayer()) : null; + FlyStatusChangeEvent event = new FlyStatusChangeEvent(user, controller, enabled); + ess.getServer().getPluginManager().callEvent(event); + + if (!event.isCancelled()) { + user.getBase().setFallDistance(0f); + user.getBase().setAllowFlight(enabled); + + if (!user.getBase().getAllowFlight()) { + user.getBase().setFlying(false); + } + + user.sendMessage(tl("flyMode", tl(enabled ? "enabled" : "disabled"), user.getDisplayName())); + if (!sender.isPlayer() || !sender.getPlayer().equals(user.getBase())) { + sender.sendMessage(tl("flyMode", tl(enabled ? "enabled" : "disabled"), user.getDisplayName())); + } } } }