Search in sources :

Example 1 with ParserException

use of org.cubeengine.butler.parameter.argument.ParserException 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;
}
Also used : TooFewArgumentsException(org.cubeengine.butler.parameter.TooFewArgumentsException) ParserException(org.cubeengine.butler.parameter.argument.ParserException) RestrictedSourceException(org.cubeengine.butler.filter.RestrictedSourceException) TooManyArgumentsException(org.cubeengine.butler.parameter.TooManyArgumentsException) CommandException(org.cubeengine.butler.exception.CommandException) ExecutionException(java.util.concurrent.ExecutionException) CommandSource(org.spongepowered.api.command.CommandSource) SilentException(org.cubeengine.butler.exception.SilentException) InvocationTargetException(java.lang.reflect.InvocationTargetException)

Aggregations

InvocationTargetException (java.lang.reflect.InvocationTargetException)1 ExecutionException (java.util.concurrent.ExecutionException)1 CommandException (org.cubeengine.butler.exception.CommandException)1 SilentException (org.cubeengine.butler.exception.SilentException)1 RestrictedSourceException (org.cubeengine.butler.filter.RestrictedSourceException)1 TooFewArgumentsException (org.cubeengine.butler.parameter.TooFewArgumentsException)1 TooManyArgumentsException (org.cubeengine.butler.parameter.TooManyArgumentsException)1 ParserException (org.cubeengine.butler.parameter.argument.ParserException)1 CommandSource (org.spongepowered.api.command.CommandSource)1