cn.nukkit.command.simple.SimpleCommand Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of powernukkit Show documentation
Show all versions of powernukkit Show documentation
A Minecraft Bedrock Edition server software implementation made in Java from scratch which supports all new features.
package cn.nukkit.command.simple;
import cn.nukkit.Server;
import cn.nukkit.command.Command;
import cn.nukkit.command.CommandSender;
import cn.nukkit.command.ConsoleCommandSender;
import cn.nukkit.lang.TranslationContainer;
import java.lang.reflect.Method;
/**
* @author Tee7even
*/
public class SimpleCommand extends Command {
private Object object;
private Method method;
private boolean forbidConsole;
private int maxArgs;
private int minArgs;
public SimpleCommand(Object object, Method method, String name, String description, String usageMessage, String[] aliases) {
super(name, description, usageMessage, aliases);
this.object = object;
this.method = method;
}
public void setForbidConsole(boolean forbidConsole) {
this.forbidConsole = forbidConsole;
}
public void setMaxArgs(int maxArgs) {
this.maxArgs = maxArgs;
}
public void setMinArgs(int minArgs) {
this.minArgs = minArgs;
}
public void sendUsageMessage(CommandSender sender) {
if (!this.usageMessage.equals("")) {
sender.sendMessage(new TranslationContainer("commands.generic.usage", this.usageMessage));
}
}
public void sendInGameMessage(CommandSender sender) {
sender.sendMessage(new TranslationContainer("commands.generic.ingame"));
}
@Override
public boolean execute(CommandSender sender, String commandLabel, String[] args) {
if (this.forbidConsole && sender instanceof ConsoleCommandSender) {
this.sendInGameMessage(sender);
return false;
} else if (!this.testPermission(sender)) {
return false;
} else if (this.maxArgs != 0 && args.length > this.maxArgs) {
this.sendUsageMessage(sender);
return false;
} else if (this.minArgs != 0 && args.length < this.minArgs) {
this.sendUsageMessage(sender);
return false;
}
boolean success = false;
try {
success = (Boolean) this.method.invoke(this.object, sender, commandLabel, args);
} catch (Exception exception) {
Server.getInstance().getLogger().logException(exception);
}
if (!success) {
this.sendUsageMessage(sender);
}
return success;
}
}