1
mirror of https://github.com/CarmJos/EasyPlugin.git synced 2024-09-19 19:25:45 +00:00

feat(command): 允许子指令不处理报错,统一交由父CommandHandler处理。

This commit is contained in:
Carm Jos 2022-08-25 02:34:24 +08:00
parent 8f03c2a1b3
commit b0c8091cb7
2 changed files with 11 additions and 3 deletions

View File

@ -1,5 +1,6 @@
package cc.carm.lib.easyplugin.command;
import jdk.internal.foreign.CABI;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.command.TabExecutor;
@ -45,6 +46,11 @@ public abstract class CommandHandler implements TabExecutor, NamedExecutor {
public abstract Void noPermission(CommandSender sender);
public Void onException(CommandSender sender, SubCommand<?> cmd, Exception ex) {
sender.sendMessage("Error occurred when executing " + cmd.getName() + ": " + ex.getLocalizedMessage());
return null;
}
@Override
public @NotNull List<String> getAliases() {
return aliases;
@ -91,8 +97,10 @@ public abstract class CommandHandler implements TabExecutor, NamedExecutor {
} else {
try {
sub.execute(this.plugin, sender, this.shortenArgs(args));
} catch (ArrayIndexOutOfBoundsException var9) {
} catch (ArrayIndexOutOfBoundsException ex) {
this.unknownCommand(sender, args);
} catch (Exception ex) {
this.onException(sender, sub, ex);
}
}

View File

@ -38,10 +38,10 @@ public abstract class SubCommand<C extends CommandHandler> implements NamedExecu
return this.aliases;
}
public abstract Void execute(JavaPlugin plugin, CommandSender sender, String[] args);
public abstract Void execute(JavaPlugin plugin, CommandSender sender, String[] args) throws Exception;
public List<String> tabComplete(JavaPlugin plugin, CommandSender sender, String[] args) {
return Collections.emptyList();
}
}