Expand on ExecuteCommandEvent

This commit is contained in:
William Blake Galbreath
2019-07-18 18:18:49 -05:00
parent aabf774656
commit f02dba84a0

View File

@@ -1,20 +1,20 @@
From 0daba673f890f25f7e57e46700e3c03dcbb613e4 Mon Sep 17 00:00:00 2001 From 43add2c57d404f64bf9f1e0185ef8c3886785aa6 Mon Sep 17 00:00:00 2001
From: William Blake Galbreath <blake.galbreath@gmail.com> From: William Blake Galbreath <blake.galbreath@gmail.com>
Date: Fri, 31 May 2019 00:08:28 -0500 Date: Fri, 31 May 2019 00:08:28 -0500
Subject: [PATCH] Add ExecuteCommandEvent Subject: [PATCH] Add ExecuteCommandEvent
--- ---
.../purpur/event/ExecuteCommandEvent.java | 87 +++++++++++++++++++ .../purpur/event/ExecuteCommandEvent.java | 130 ++++++++++++++++++
.../org/bukkit/command/SimpleCommandMap.java | 9 ++ .../org/bukkit/command/SimpleCommandMap.java | 15 +-
2 files changed, 96 insertions(+) 2 files changed, 144 insertions(+), 1 deletion(-)
create mode 100644 src/main/java/net/pl3x/purpur/event/ExecuteCommandEvent.java create mode 100644 src/main/java/net/pl3x/purpur/event/ExecuteCommandEvent.java
diff --git a/src/main/java/net/pl3x/purpur/event/ExecuteCommandEvent.java b/src/main/java/net/pl3x/purpur/event/ExecuteCommandEvent.java diff --git a/src/main/java/net/pl3x/purpur/event/ExecuteCommandEvent.java b/src/main/java/net/pl3x/purpur/event/ExecuteCommandEvent.java
new file mode 100644 new file mode 100644
index 00000000..013a8712 index 000000000..3250bd4dc
--- /dev/null --- /dev/null
+++ b/src/main/java/net/pl3x/purpur/event/ExecuteCommandEvent.java +++ b/src/main/java/net/pl3x/purpur/event/ExecuteCommandEvent.java
@@ -0,0 +1,87 @@ @@ -0,0 +1,130 @@
+package net.pl3x.purpur.event; +package net.pl3x.purpur.event;
+ +
+import org.apache.commons.lang.Validate; +import org.apache.commons.lang.Validate;
@@ -24,6 +24,7 @@ index 00000000..013a8712
+import org.bukkit.event.Event; +import org.bukkit.event.Event;
+import org.bukkit.event.HandlerList; +import org.bukkit.event.HandlerList;
+import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
+ +
+/** +/**
+ * This event is called whenever someone runs a command + * This event is called whenever someone runs a command
@@ -33,10 +34,14 @@ index 00000000..013a8712
+ private boolean cancel = false; + private boolean cancel = false;
+ private CommandSender sender; + private CommandSender sender;
+ private Command command; + private Command command;
+ private String label;
+ private String[] args;
+ +
+ public ExecuteCommandEvent(@NotNull CommandSender sender, @NotNull Command command) { + public ExecuteCommandEvent(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, @Nullable String[] args) {
+ this.sender = sender; + this.sender = sender;
+ this.command = command; + this.command = command;
+ this.label = label;
+ this.args = args;
+ } + }
+ +
+ /** + /**
@@ -81,6 +86,44 @@ index 00000000..013a8712
+ this.sender = sender; + this.sender = sender;
+ } + }
+ +
+ /**
+ * Get the label used to execute this command
+ *
+ * @return Label used to execute this command
+ */
+ @NotNull
+ public String getLabel() {
+ return label;
+ }
+
+ /**
+ * Set the label used to execute this command
+ *
+ * @param label Label used
+ */
+ public void setLabel(@NotNull String label) {
+ this.label = label;
+ }
+
+ /**
+ * Get the args passed to the command
+ *
+ * @return Args passed to the command
+ */
+ @NotNull
+ public String[] getArgs() {
+ return args;
+ }
+
+ /**
+ * Set the args passed to the command
+ *
+ * @param args Args passed to the command
+ */
+ public void setArgs(@NotNull String[] args) {
+ this.args = args;
+ }
+
+ @Override + @Override
+ public boolean isCancelled() { + public boolean isCancelled() {
+ return cancel; + return cancel;
@@ -103,25 +146,38 @@ index 00000000..013a8712
+ } + }
+} +}
diff --git a/src/main/java/org/bukkit/command/SimpleCommandMap.java b/src/main/java/org/bukkit/command/SimpleCommandMap.java diff --git a/src/main/java/org/bukkit/command/SimpleCommandMap.java b/src/main/java/org/bukkit/command/SimpleCommandMap.java
index 460fda05..b87c30a3 100644 index 460fda05a..1e0eb0999 100644
--- a/src/main/java/org/bukkit/command/SimpleCommandMap.java --- a/src/main/java/org/bukkit/command/SimpleCommandMap.java
+++ b/src/main/java/org/bukkit/command/SimpleCommandMap.java +++ b/src/main/java/org/bukkit/command/SimpleCommandMap.java
@@ -147,6 +147,15 @@ public class SimpleCommandMap implements CommandMap { @@ -147,6 +147,19 @@ public class SimpleCommandMap implements CommandMap {
return false; return false;
} }
+ // Purpur start + // Purpur start
+ net.pl3x.purpur.event.ExecuteCommandEvent event = new net.pl3x.purpur.event.ExecuteCommandEvent(sender, target); + String[] parsedArgs = Arrays.copyOfRange(args, 1, args.length);
+ net.pl3x.purpur.event.ExecuteCommandEvent event = new net.pl3x.purpur.event.ExecuteCommandEvent(sender, target, sentCommandLabel, parsedArgs);
+ if (!event.callEvent()) { + if (!event.callEvent()) {
+ return true; // cancelled + return true; // cancelled
+ } + }
+
+ sender = event.getSender(); + sender = event.getSender();
+ target = event.getCommand(); + target = event.getCommand();
+ sentCommandLabel = event.getLabel();
+ parsedArgs = event.getArgs();
+ // Purpur end + // Purpur end
+ +
// Paper start - Plugins do weird things to workaround normal registration // Paper start - Plugins do weird things to workaround normal registration
if (target.timings == null) { if (target.timings == null) {
target.timings = co.aikar.timings.TimingsManager.getCommandTiming(null, target); target.timings = co.aikar.timings.TimingsManager.getCommandTiming(null, target);
@@ -156,7 +169,7 @@ public class SimpleCommandMap implements CommandMap {
try {
try (co.aikar.timings.Timing ignored = target.timings.startTiming()) { // Paper - use try with resources
// Note: we don't return the result of target.execute as thats success / failure, we return handled (true) or not handled (false)
- target.execute(sender, sentCommandLabel, Arrays.copyOfRange(args, 1, args.length));
+ target.execute(sender, sentCommandLabel, parsedArgs); // Purpur
} // target.timings.stopTiming(); // Spigot // Paper
} catch (CommandException ex) {
server.getPluginManager().callEvent(new ServerExceptionEvent(new ServerCommandException(ex, target, sender, args))); // Paper
-- --
2.20.1 2.20.1