From 5b0e2d9adb53bfc7440a138182457dc08aca3c96 Mon Sep 17 00:00:00 2001 From: TheMolkaPL Date: Tue, 21 Jan 2020 17:44:56 +0100 Subject: [PATCH] Call ToolUseEvent when a tool is about to be used --- .../diddiz/LogBlock/events/ToolUseEvent.java | 59 +++++++++++++++++++ .../LogBlock/listeners/ToolListener.java | 9 +++ 2 files changed, 68 insertions(+) create mode 100644 src/main/java/de/diddiz/LogBlock/events/ToolUseEvent.java diff --git a/src/main/java/de/diddiz/LogBlock/events/ToolUseEvent.java b/src/main/java/de/diddiz/LogBlock/events/ToolUseEvent.java new file mode 100644 index 0000000..cb6c083 --- /dev/null +++ b/src/main/java/de/diddiz/LogBlock/events/ToolUseEvent.java @@ -0,0 +1,59 @@ +package de.diddiz.LogBlock.events; + +import de.diddiz.LogBlock.QueryParams; +import de.diddiz.LogBlock.Tool; +import de.diddiz.LogBlock.ToolBehavior; +import org.bukkit.entity.Player; +import org.bukkit.event.Cancellable; +import org.bukkit.event.HandlerList; +import org.bukkit.event.player.PlayerEvent; + +/** + * Fired whether a tool is about to be used by a player. + */ +public class ToolUseEvent extends PlayerEvent implements Cancellable { + + private static final HandlerList handlers = new HandlerList(); + private boolean cancel; + private final Tool tool; + private final ToolBehavior behavior; + private final QueryParams params; + + public ToolUseEvent(Player who, Tool tool, ToolBehavior behavior, QueryParams params) { + super(who); + this.tool = tool; + this.behavior = behavior; + this.params = params; + } + + @Override + public boolean isCancelled() { + return cancel; + } + + @Override + public void setCancelled(boolean cancel) { + this.cancel = cancel; + } + + public Tool getTool() { + return tool; + } + + public ToolBehavior getBehavior() { + return behavior; + } + + public QueryParams getParams() { + return params; + } + + @Override + public HandlerList getHandlers() { + return handlers; + } + + public static HandlerList getHandlerList() { + return handlers; + } +} diff --git a/src/main/java/de/diddiz/LogBlock/listeners/ToolListener.java b/src/main/java/de/diddiz/LogBlock/listeners/ToolListener.java index df889d7..e20b1c4 100644 --- a/src/main/java/de/diddiz/LogBlock/listeners/ToolListener.java +++ b/src/main/java/de/diddiz/LogBlock/listeners/ToolListener.java @@ -1,6 +1,7 @@ package de.diddiz.LogBlock.listeners; import de.diddiz.LogBlock.*; +import de.diddiz.LogBlock.events.ToolUseEvent; import de.diddiz.util.BukkitUtils; import de.diddiz.util.CuboidRegion; import org.bukkit.ChatColor; @@ -65,6 +66,9 @@ public class ToolListener implements Listener { } try { params.validate(); + if (this.callToolUseEvent(new ToolUseEvent(player, tool, behavior, params))) { + return; + } if (toolData.mode == ToolMode.ROLLBACK) { handler.new CommandRollback(player, params, true); } else if (toolData.mode == ToolMode.REDO) { @@ -85,6 +89,11 @@ public class ToolListener implements Listener { } } + private boolean callToolUseEvent(ToolUseEvent event) { + this.logblock.getServer().getPluginManager().callEvent(event); + return event.isCancelled(); + } + @EventHandler public void onPlayerChangedWorld(PlayerChangedWorldEvent event) { final Player player = event.getPlayer();