mirror of https://github.com/Minestom/Minestom.git
WIP CommandExecutionOption, missing the ignoreMessage option
This commit is contained in:
parent
c20cf38399
commit
435e3ea363
|
@ -0,0 +1,39 @@
|
||||||
|
package net.minestom.server.command;
|
||||||
|
|
||||||
|
public class CommandExecutionOption {
|
||||||
|
|
||||||
|
private boolean ignoreEvent = false;
|
||||||
|
private boolean ignorePermission = false;
|
||||||
|
private boolean ignoreMessage = false;
|
||||||
|
|
||||||
|
public CommandExecutionOption() {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean isIgnoreEvent() {
|
||||||
|
return ignoreEvent;
|
||||||
|
}
|
||||||
|
|
||||||
|
public CommandExecutionOption ignoreEvent(boolean ignoreEvent) {
|
||||||
|
this.ignoreEvent = ignoreEvent;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean isIgnorePermission() {
|
||||||
|
return ignorePermission;
|
||||||
|
}
|
||||||
|
|
||||||
|
public CommandExecutionOption ignorePermission(boolean ignorePermission) {
|
||||||
|
this.ignorePermission = ignorePermission;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean isIgnoreMessage() {
|
||||||
|
return ignoreMessage;
|
||||||
|
}
|
||||||
|
|
||||||
|
public CommandExecutionOption ignoreMessage(boolean ignoreMessage) {
|
||||||
|
this.ignoreMessage = ignoreMessage;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
}
|
|
@ -143,15 +143,17 @@ public final class CommandManager {
|
||||||
/**
|
/**
|
||||||
* Executes a command for a {@link ConsoleSender}.
|
* Executes a command for a {@link ConsoleSender}.
|
||||||
*
|
*
|
||||||
* @param sender the sender of the command
|
* @param sender the sender of the command
|
||||||
* @param command the raw command string (without the command prefix)
|
* @param command the raw command string (without the command prefix)
|
||||||
|
* @param executionOption options to disable certain parts of the execution
|
||||||
* @return the execution result
|
* @return the execution result
|
||||||
*/
|
*/
|
||||||
@NotNull
|
@NotNull
|
||||||
public CommandResult execute(@NotNull CommandSender sender, @NotNull String command) {
|
public CommandResult execute(@NotNull CommandSender sender, @NotNull String command,
|
||||||
|
@NotNull CommandExecutionOption executionOption) {
|
||||||
|
|
||||||
// Command event
|
// Command event
|
||||||
if (sender instanceof Player) {
|
if (sender instanceof Player && !executionOption.isIgnoreEvent()) {
|
||||||
Player player = (Player) sender;
|
Player player = (Player) sender;
|
||||||
|
|
||||||
PlayerCommandEvent playerCommandEvent = new PlayerCommandEvent(player, command);
|
PlayerCommandEvent playerCommandEvent = new PlayerCommandEvent(player, command);
|
||||||
|
@ -167,7 +169,7 @@ public final class CommandManager {
|
||||||
|
|
||||||
{
|
{
|
||||||
// Check for rich-command
|
// Check for rich-command
|
||||||
final CommandResult result = this.dispatcher.execute(sender, command);
|
final CommandResult result = this.dispatcher.execute(sender, command, executionOption);
|
||||||
if (result.getType() != CommandResult.Type.UNKNOWN) {
|
if (result.getType() != CommandResult.Type.UNKNOWN) {
|
||||||
return result;
|
return result;
|
||||||
} else {
|
} else {
|
||||||
|
@ -190,6 +192,16 @@ public final class CommandManager {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Executes a command with the default options.
|
||||||
|
*
|
||||||
|
* @see #execute(CommandSender, String, CommandExecutionOption)
|
||||||
|
*/
|
||||||
|
@NotNull
|
||||||
|
public CommandResult execute(@NotNull CommandSender sender, @NotNull String command) {
|
||||||
|
return execute(sender, command, new CommandExecutionOption());
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Executes the command using a {@link ServerSender} to do not
|
* Executes the command using a {@link ServerSender} to do not
|
||||||
* print the command messages, and rely instead on the command return data.
|
* print the command messages, and rely instead on the command return data.
|
||||||
|
|
|
@ -3,6 +3,7 @@ package net.minestom.server.command.builder;
|
||||||
import com.google.common.cache.Cache;
|
import com.google.common.cache.Cache;
|
||||||
import com.google.common.cache.CacheBuilder;
|
import com.google.common.cache.CacheBuilder;
|
||||||
import it.unimi.dsi.fastutil.ints.Int2ObjectRBTreeMap;
|
import it.unimi.dsi.fastutil.ints.Int2ObjectRBTreeMap;
|
||||||
|
import net.minestom.server.command.CommandExecutionOption;
|
||||||
import net.minestom.server.command.CommandSender;
|
import net.minestom.server.command.CommandSender;
|
||||||
import net.minestom.server.command.builder.arguments.Argument;
|
import net.minestom.server.command.builder.arguments.Argument;
|
||||||
import net.minestom.server.command.builder.exception.ArgumentSyntaxException;
|
import net.minestom.server.command.builder.exception.ArgumentSyntaxException;
|
||||||
|
@ -87,11 +88,12 @@ public class CommandDispatcher {
|
||||||
* @return the command result
|
* @return the command result
|
||||||
*/
|
*/
|
||||||
@NotNull
|
@NotNull
|
||||||
public CommandResult execute(@NotNull CommandSender source, @NotNull String commandString) {
|
public CommandResult execute(@NotNull CommandSender source, @NotNull String commandString,
|
||||||
|
@NotNull CommandExecutionOption executionOption) {
|
||||||
CommandResult commandResult = parse(commandString);
|
CommandResult commandResult = parse(commandString);
|
||||||
ParsedCommand parsedCommand = commandResult.parsedCommand;
|
ParsedCommand parsedCommand = commandResult.parsedCommand;
|
||||||
if (parsedCommand != null) {
|
if (parsedCommand != null) {
|
||||||
commandResult.commandData = parsedCommand.execute(source, commandString);
|
commandResult.commandData = parsedCommand.execute(source, commandString, executionOption);
|
||||||
}
|
}
|
||||||
return commandResult;
|
return commandResult;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
package net.minestom.server.command.builder;
|
package net.minestom.server.command.builder;
|
||||||
|
|
||||||
|
import net.minestom.server.command.CommandExecutionOption;
|
||||||
import net.minestom.server.command.CommandSender;
|
import net.minestom.server.command.CommandSender;
|
||||||
import net.minestom.server.command.builder.condition.CommandCondition;
|
import net.minestom.server.command.builder.condition.CommandCondition;
|
||||||
import net.minestom.server.command.builder.exception.ArgumentSyntaxException;
|
import net.minestom.server.command.builder.exception.ArgumentSyntaxException;
|
||||||
|
@ -35,12 +36,13 @@ public class ParsedCommand {
|
||||||
* @return the command data, null if none
|
* @return the command data, null if none
|
||||||
*/
|
*/
|
||||||
@Nullable
|
@Nullable
|
||||||
public CommandData execute(@NotNull CommandSender source, @NotNull String commandString) {
|
public CommandData execute(@NotNull CommandSender source, @NotNull String commandString,
|
||||||
|
@NotNull CommandExecutionOption executionOption) {
|
||||||
// Global listener
|
// Global listener
|
||||||
command.globalListener(source, arguments, commandString);
|
command.globalListener(source, arguments, commandString);
|
||||||
// Command condition check
|
// Command condition check
|
||||||
final CommandCondition condition = command.getCondition();
|
final CommandCondition condition = command.getCondition();
|
||||||
if (condition != null) {
|
if (condition != null && !executionOption.isIgnorePermission()) {
|
||||||
final boolean result = condition.canUse(source, commandString);
|
final boolean result = condition.canUse(source, commandString);
|
||||||
if (!result)
|
if (!result)
|
||||||
return null;
|
return null;
|
||||||
|
|
Loading…
Reference in New Issue