From 46edb06f9ba46a4fec06da76e9d2cd2da8d91bb7 Mon Sep 17 00:00:00 2001 From: Aikar Date: Mon, 18 Jun 2018 21:22:21 -0400 Subject: [PATCH] Unwrap CommandExceptions thrown by Bukkit before passing to Exception handlers --- .../java/co/aikar/commands/BukkitCommandManager.java | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/bukkit/src/main/java/co/aikar/commands/BukkitCommandManager.java b/bukkit/src/main/java/co/aikar/commands/BukkitCommandManager.java index 2b856fee..64184a15 100644 --- a/bukkit/src/main/java/co/aikar/commands/BukkitCommandManager.java +++ b/bukkit/src/main/java/co/aikar/commands/BukkitCommandManager.java @@ -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 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); + } }