Unwrap CommandExceptions thrown by Bukkit before passing to Exception handlers

This commit is contained in:
Aikar
2018-06-18 21:22:21 -04:00
parent 9975c3c24e
commit 46edb06f9b
@@ -30,6 +30,7 @@ import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.Server;
import org.bukkit.command.Command;
import org.bukkit.command.CommandException;
import org.bukkit.command.CommandMap;
import org.bukkit.command.CommandSender;
import org.bukkit.command.PluginIdentifiableCommand;
@@ -365,4 +366,12 @@ public class BukkitCommandManager extends CommandManager<
public String getCommandPrefix(CommandIssuer issuer) {
return issuer.isPlayer() ? "/" : "";
}
@Override
protected boolean handleUncaughtException(BaseCommand scope, RegisteredCommand registeredCommand, CommandIssuer sender, List<String> args, Throwable t) {
if (t instanceof CommandException && t.getCause() != null && t.getMessage().startsWith("Unhandled exception")) {
t = t.getCause();
}
return super.handleUncaughtException(scope, registeredCommand, sender, args, t);
}
}