mirror of
https://github.com/PurpurMC/Purpur.git
synced 2026-02-20 09:57:43 +01:00
ExecuteCommandEvent
This commit is contained in:
committed by
granny
parent
964cbc2610
commit
13257215f7
@@ -1,172 +0,0 @@
|
|||||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
||||||
From: William Blake Galbreath <blake.galbreath@gmail.com>
|
|
||||||
Date: Fri, 31 May 2019 00:08:28 -0500
|
|
||||||
Subject: [PATCH] ExecuteCommandEvent
|
|
||||||
|
|
||||||
|
|
||||||
diff --git a/src/main/java/org/bukkit/command/SimpleCommandMap.java b/src/main/java/org/bukkit/command/SimpleCommandMap.java
|
|
||||||
index 5df19bd701c67506689fc7f49d91f99ebfbc83f0..a09b5458191eb5df4787859b72a37fa1fa2bffba 100644
|
|
||||||
--- a/src/main/java/org/bukkit/command/SimpleCommandMap.java
|
|
||||||
+++ b/src/main/java/org/bukkit/command/SimpleCommandMap.java
|
|
||||||
@@ -153,6 +153,19 @@ public class SimpleCommandMap implements CommandMap {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
+ // Purpur start
|
|
||||||
+ String[] parsedArgs = Arrays.copyOfRange(args, 1, args.length);
|
|
||||||
+ org.purpurmc.purpur.event.ExecuteCommandEvent event = new org.purpurmc.purpur.event.ExecuteCommandEvent(sender, target, sentCommandLabel, parsedArgs);
|
|
||||||
+ if (!event.callEvent()) {
|
|
||||||
+ return true; // cancelled
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ sender = event.getSender();
|
|
||||||
+ target = event.getCommand();
|
|
||||||
+ sentCommandLabel = event.getLabel();
|
|
||||||
+ parsedArgs = event.getArgs();
|
|
||||||
+ // Purpur end
|
|
||||||
+
|
|
||||||
// Paper start - Plugins do weird things to workaround normal registration
|
|
||||||
if (target.timings == null) {
|
|
||||||
target.timings = co.aikar.timings.TimingsManager.getCommandTiming(null, target);
|
|
||||||
@@ -162,7 +175,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 com.destroystokyo.paper.event.server.ServerExceptionEvent(new com.destroystokyo.paper.exception.ServerCommandException(ex, target, sender, args))); // Paper
|
|
||||||
diff --git a/src/main/java/org/purpurmc/purpur/event/ExecuteCommandEvent.java b/src/main/java/org/purpurmc/purpur/event/ExecuteCommandEvent.java
|
|
||||||
new file mode 100644
|
|
||||||
index 0000000000000000000000000000000000000000..55feef2321c7d966c72a33a58cf10136a9cacfa6
|
|
||||||
--- /dev/null
|
|
||||||
+++ b/src/main/java/org/purpurmc/purpur/event/ExecuteCommandEvent.java
|
|
||||||
@@ -0,0 +1,127 @@
|
|
||||||
+package org.purpurmc.purpur.event;
|
|
||||||
+
|
|
||||||
+import com.google.common.base.Preconditions;
|
|
||||||
+import org.bukkit.command.Command;
|
|
||||||
+import org.bukkit.command.CommandSender;
|
|
||||||
+import org.bukkit.event.Cancellable;
|
|
||||||
+import org.bukkit.event.Event;
|
|
||||||
+import org.bukkit.event.HandlerList;
|
|
||||||
+import org.jetbrains.annotations.ApiStatus;
|
|
||||||
+import org.jspecify.annotations.NullMarked;
|
|
||||||
+import org.jspecify.annotations.Nullable;
|
|
||||||
+
|
|
||||||
+/**
|
|
||||||
+ * This event is called whenever someone runs a command
|
|
||||||
+ */
|
|
||||||
+@NullMarked
|
|
||||||
+public class ExecuteCommandEvent extends Event implements Cancellable {
|
|
||||||
+ private static final HandlerList handlers = new HandlerList();
|
|
||||||
+ private boolean cancel = false;
|
|
||||||
+ private CommandSender sender;
|
|
||||||
+ private Command command;
|
|
||||||
+ private String label;
|
|
||||||
+ private @Nullable String[] args;
|
|
||||||
+
|
|
||||||
+ @ApiStatus.Internal
|
|
||||||
+ public ExecuteCommandEvent(CommandSender sender, Command command, String label, @Nullable String[] args) {
|
|
||||||
+ this.sender = sender;
|
|
||||||
+ this.command = command;
|
|
||||||
+ this.label = label;
|
|
||||||
+ this.args = args;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ /**
|
|
||||||
+ * Gets the command that the player is attempting to execute.
|
|
||||||
+ *
|
|
||||||
+ * @return Command the player is attempting to execute
|
|
||||||
+ */
|
|
||||||
+ public Command getCommand() {
|
|
||||||
+ return command;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ /**
|
|
||||||
+ * Sets the command that the player will execute.
|
|
||||||
+ *
|
|
||||||
+ * @param command New command that the player will execute
|
|
||||||
+ * @throws IllegalArgumentException if command is null or empty
|
|
||||||
+ */
|
|
||||||
+ public void setCommand(Command command) throws IllegalArgumentException {
|
|
||||||
+ Preconditions.checkArgument(command != null, "Command cannot be null");
|
|
||||||
+ this.command = command;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ /**
|
|
||||||
+ * Gets the sender that this command will be executed as.
|
|
||||||
+ *
|
|
||||||
+ * @return Sender this command will be executed as
|
|
||||||
+ */
|
|
||||||
+ public CommandSender getSender() {
|
|
||||||
+ return sender;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ /**
|
|
||||||
+ * Sets the sender that this command will be executed as.
|
|
||||||
+ *
|
|
||||||
+ * @param sender New sender which this event will execute as
|
|
||||||
+ * @throws IllegalArgumentException if the sender provided is null
|
|
||||||
+ */
|
|
||||||
+ public void setSender(final CommandSender sender) throws IllegalArgumentException {
|
|
||||||
+ Preconditions.checkArgument(sender != null, "Sender cannot be null");
|
|
||||||
+ this.sender = sender;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ /**
|
|
||||||
+ * Get the label used to execute this command
|
|
||||||
+ *
|
|
||||||
+ * @return Label used to execute this command
|
|
||||||
+ */
|
|
||||||
+ public String getLabel() {
|
|
||||||
+ return label;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ /**
|
|
||||||
+ * Set the label used to execute this command
|
|
||||||
+ *
|
|
||||||
+ * @param label Label used
|
|
||||||
+ */
|
|
||||||
+ public void setLabel(String label) {
|
|
||||||
+ this.label = label;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ /**
|
|
||||||
+ * Get the args passed to the command
|
|
||||||
+ *
|
|
||||||
+ * @return Args passed to the command
|
|
||||||
+ */
|
|
||||||
+ public String[] getArgs() {
|
|
||||||
+ return args;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ /**
|
|
||||||
+ * Set the args passed to the command
|
|
||||||
+ *
|
|
||||||
+ * @param args Args passed to the command
|
|
||||||
+ */
|
|
||||||
+ public void setArgs(String[] args) {
|
|
||||||
+ this.args = args;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ @Override
|
|
||||||
+ public boolean isCancelled() {
|
|
||||||
+ return cancel;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ @Override
|
|
||||||
+ public void setCancelled(boolean cancel) {
|
|
||||||
+ this.cancel = cancel;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ @Override
|
|
||||||
+ public HandlerList getHandlers() {
|
|
||||||
+ return handlers;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ public static HandlerList getHandlerList() {
|
|
||||||
+ return handlers;
|
|
||||||
+ }
|
|
||||||
+}
|
|
||||||
@@ -0,0 +1,31 @@
|
|||||||
|
--- a/src/main/java/org/bukkit/command/SimpleCommandMap.java
|
||||||
|
+++ b/src/main/java/org/bukkit/command/SimpleCommandMap.java
|
||||||
|
@@ -153,6 +_,19 @@
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
+ // Purpur start - ExecuteCommandEvent
|
||||||
|
+ String[] parsedArgs = Arrays.copyOfRange(args, 1, args.length);
|
||||||
|
+ org.purpurmc.purpur.event.ExecuteCommandEvent event = new org.purpurmc.purpur.event.ExecuteCommandEvent(sender, target, sentCommandLabel, parsedArgs);
|
||||||
|
+ if (!event.callEvent()) {
|
||||||
|
+ return true; // cancelled
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ sender = event.getSender();
|
||||||
|
+ target = event.getCommand();
|
||||||
|
+ sentCommandLabel = event.getLabel();
|
||||||
|
+ parsedArgs = event.getArgs();
|
||||||
|
+ // Purpur end - ExecuteCommandEvent
|
||||||
|
+
|
||||||
|
// Paper start - Plugins do weird things to workaround normal registration
|
||||||
|
if (target.timings == null) {
|
||||||
|
target.timings = co.aikar.timings.TimingsManager.getCommandTiming(null, target);
|
||||||
|
@@ -162,7 +_,7 @@
|
||||||
|
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 - ExecuteCommandEvent
|
||||||
|
} // target.timings.stopTiming(); // Spigot // Paper
|
||||||
|
} catch (CommandException ex) {
|
||||||
|
server.getPluginManager().callEvent(new com.destroystokyo.paper.event.server.ServerExceptionEvent(new com.destroystokyo.paper.exception.ServerCommandException(ex, target, sender, args))); // Paper
|
||||||
@@ -0,0 +1,127 @@
|
|||||||
|
package org.purpurmc.purpur.event;
|
||||||
|
|
||||||
|
import com.google.common.base.Preconditions;
|
||||||
|
import org.bukkit.command.Command;
|
||||||
|
import org.bukkit.command.CommandSender;
|
||||||
|
import org.bukkit.event.Cancellable;
|
||||||
|
import org.bukkit.event.Event;
|
||||||
|
import org.bukkit.event.HandlerList;
|
||||||
|
import org.jetbrains.annotations.ApiStatus;
|
||||||
|
import org.jspecify.annotations.NullMarked;
|
||||||
|
import org.jspecify.annotations.Nullable;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This event is called whenever someone runs a command
|
||||||
|
*/
|
||||||
|
@NullMarked
|
||||||
|
public class ExecuteCommandEvent extends Event implements Cancellable {
|
||||||
|
private static final HandlerList handlers = new HandlerList();
|
||||||
|
private boolean cancel = false;
|
||||||
|
private CommandSender sender;
|
||||||
|
private Command command;
|
||||||
|
private String label;
|
||||||
|
private @Nullable String[] args;
|
||||||
|
|
||||||
|
@ApiStatus.Internal
|
||||||
|
public ExecuteCommandEvent(CommandSender sender, Command command, String label, @Nullable String[] args) {
|
||||||
|
this.sender = sender;
|
||||||
|
this.command = command;
|
||||||
|
this.label = label;
|
||||||
|
this.args = args;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets the command that the player is attempting to execute.
|
||||||
|
*
|
||||||
|
* @return Command the player is attempting to execute
|
||||||
|
*/
|
||||||
|
public Command getCommand() {
|
||||||
|
return command;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sets the command that the player will execute.
|
||||||
|
*
|
||||||
|
* @param command New command that the player will execute
|
||||||
|
* @throws IllegalArgumentException if command is null or empty
|
||||||
|
*/
|
||||||
|
public void setCommand(Command command) throws IllegalArgumentException {
|
||||||
|
Preconditions.checkArgument(command != null, "Command cannot be null");
|
||||||
|
this.command = command;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets the sender that this command will be executed as.
|
||||||
|
*
|
||||||
|
* @return Sender this command will be executed as
|
||||||
|
*/
|
||||||
|
public CommandSender getSender() {
|
||||||
|
return sender;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sets the sender that this command will be executed as.
|
||||||
|
*
|
||||||
|
* @param sender New sender which this event will execute as
|
||||||
|
* @throws IllegalArgumentException if the sender provided is null
|
||||||
|
*/
|
||||||
|
public void setSender(final CommandSender sender) throws IllegalArgumentException {
|
||||||
|
Preconditions.checkArgument(sender != null, "Sender cannot be null");
|
||||||
|
this.sender = sender;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the label used to execute this command
|
||||||
|
*
|
||||||
|
* @return Label used to execute this command
|
||||||
|
*/
|
||||||
|
public String getLabel() {
|
||||||
|
return label;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set the label used to execute this command
|
||||||
|
*
|
||||||
|
* @param label Label used
|
||||||
|
*/
|
||||||
|
public void setLabel(String label) {
|
||||||
|
this.label = label;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the args passed to the command
|
||||||
|
*
|
||||||
|
* @return Args passed to the command
|
||||||
|
*/
|
||||||
|
public String[] getArgs() {
|
||||||
|
return args;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set the args passed to the command
|
||||||
|
*
|
||||||
|
* @param args Args passed to the command
|
||||||
|
*/
|
||||||
|
public void setArgs(String[] args) {
|
||||||
|
this.args = args;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isCancelled() {
|
||||||
|
return cancel;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setCancelled(boolean cancel) {
|
||||||
|
this.cancel = cancel;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public HandlerList getHandlers() {
|
||||||
|
return handlers;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static HandlerList getHandlerList() {
|
||||||
|
return handlers;
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user