use of org.cubeengine.butler.exception.CommandException in project core by CubeEngine.
the class CommandExceptionHandler method handleException.
@Override
public boolean handleException(Throwable t, CommandBase command, CommandInvocation invocation) {
if (t instanceof InvocationTargetException || t instanceof ExecutionException) {
t = t.getCause();
}
CommandSource sender = (CommandSource) invocation.getCommandSource();
if (!(t instanceof CommandException)) {
return false;
}
logger.debug("Command failed: {}: {}", t.getClass(), t.getMessage());
if (t instanceof PermissionDeniedException) {
PermissionDeniedException e = (PermissionDeniedException) t;
if (e.getMessage() != null) {
i18n.send(sender, NEGATIVE, e.getMessage(), e.getArgs());
} else {
i18n.send(sender, NEGATIVE, "You're not allowed to do this!");
i18n.send(sender, NEGATIVE, "Contact an administrator if you think this is a mistake!");
}
i18n.send(sender, NEGATIVE, "Missing permission: {name}", e.getPermission().getName());
} else if (t instanceof TooFewArgumentsException) {
i18n.send(sender, NEGATIVE, "You've given too few arguments.");
i18n.send(sender, NEUTRAL, "Proper usage: {input#usage}", command.getDescriptor().getUsage(invocation));
} else if (t instanceof TooManyArgumentsException) {
i18n.send(sender, NEGATIVE, "You've given too many arguments.");
i18n.send(sender, NEUTRAL, "Proper usage: {input#usage}", command.getDescriptor().getUsage(invocation));
} else if (t instanceof ParserException) {
i18n.send(sender, NEGATIVE, t.getMessage(), ((ParserException) t).getArgs());
} else if (t instanceof RestrictedSourceException) {
// TODO handle Restriction when its not for CommandSource (maybe programming error)
i18n.send(sender, NEGATIVE, "You cannot execute this command!");
if (t.getMessage() != null) {
i18n.send(sender, NEUTRAL, t.getMessage());
}
} else if (t instanceof SilentException) {
// do nothing
} else // Unknown cmd exception. Handle later
{
return false;
}
return true;
}
Aggregations