Search in sources :

Example 1 with QuietAbortException

use of com.earth2me.essentials.commands.QuietAbortException in project Essentials by drtshock.

the class Essentials method onCommandEssentials.

@Override
public boolean onCommandEssentials(final CommandSender cSender, final Command command, final String commandLabel, final String[] args, final ClassLoader classLoader, final String commandPath, final String permissionPrefix, final IEssentialsModule module) {
    // Allow plugins to override the command via onCommand
    if (!getSettings().isCommandOverridden(command.getName()) && (!commandLabel.startsWith("e") || commandLabel.equalsIgnoreCase(command.getName()))) {
        if (getSettings().isDebug()) {
            LOGGER.log(Level.INFO, "Searching for alternative to: " + commandLabel);
        }
        final Command pc = alternativeCommandsHandler.getAlternative(commandLabel);
        if (pc != null) {
            alternativeCommandsHandler.executed(commandLabel, pc);
            try {
                pc.execute(cSender, commandLabel, args);
            } catch (final Exception ex) {
                Bukkit.getLogger().log(Level.SEVERE, ex.getMessage(), ex);
                cSender.sendMessage(tl("internalError"));
            }
            return true;
        }
    }
    try {
        User user = null;
        Block bSenderBlock = null;
        if (cSender instanceof Player) {
            user = getUser((Player) cSender);
        } else if (cSender instanceof BlockCommandSender) {
            final BlockCommandSender bsender = (BlockCommandSender) cSender;
            bSenderBlock = bsender.getBlock();
        }
        if (bSenderBlock != null) {
            if (getSettings().logCommandBlockCommands()) {
                Bukkit.getLogger().log(Level.INFO, "CommandBlock at {0},{1},{2} issued server command: /{3} {4}", new Object[] { bSenderBlock.getX(), bSenderBlock.getY(), bSenderBlock.getZ(), commandLabel, EssentialsCommand.getFinalArg(args, 0) });
            }
        } else if (user == null) {
            Bukkit.getLogger().log(Level.INFO, "{0} issued server command: /{1} {2}", new Object[] { cSender.getName(), commandLabel, EssentialsCommand.getFinalArg(args, 0) });
        }
        final CommandSource sender = new CommandSource(cSender);
        // New mail notification
        if (user != null && !getSettings().isCommandDisabled("mail") && !command.getName().equals("mail") && user.isAuthorized("essentials.mail")) {
            user.notifyOfMail();
        }
        // Print version even if admin command is not available #easteregg
        if (commandLabel.equalsIgnoreCase("essversion")) {
            sender.sendMessage("This server is running Essentials " + getDescription().getVersion());
            return true;
        }
        // Check for disabled commands
        if (getSettings().isCommandDisabled(commandLabel)) {
            if (getKnownCommandsProvider().getKnownCommands().containsKey(commandLabel)) {
                final Command newCmd = getKnownCommandsProvider().getKnownCommands().get(commandLabel);
                if (!(newCmd instanceof PluginIdentifiableCommand) || !isEssentialsPlugin(((PluginIdentifiableCommand) newCmd).getPlugin())) {
                    return newCmd.execute(cSender, commandLabel, args);
                }
            }
            sender.sendMessage(tl("commandDisabled", commandLabel));
            return true;
        }
        final IEssentialsCommand cmd;
        try {
            cmd = loadCommand(commandPath, command.getName(), module, classLoader);
        } catch (final Exception ex) {
            sender.sendMessage(tl("commandNotLoaded", commandLabel));
            LOGGER.log(Level.SEVERE, tl("commandNotLoaded", commandLabel), ex);
            return true;
        }
        // Check authorization
        if (user != null && !user.isAuthorized(cmd, permissionPrefix)) {
            LOGGER.log(Level.INFO, tl("deniedAccessCommand", user.getName()));
            user.sendMessage(tl("noAccessCommand"));
            return true;
        }
        if (user != null && user.isJailed() && !user.isAuthorized(cmd, "essentials.jail.allow.")) {
            if (user.getJailTimeout() > 0) {
                user.sendMessage(tl("playerJailedFor", user.getName(), user.getFormattedJailTime()));
            } else {
                user.sendMessage(tl("jailMessage"));
            }
            return true;
        }
        // Run the command
        try {
            if (user == null) {
                cmd.run(getServer(), sender, commandLabel, command, args);
            } else {
                cmd.run(getServer(), user, commandLabel, command, args);
            }
            return true;
        } catch (final NoChargeException | QuietAbortException ex) {
            return true;
        } catch (final NotEnoughArgumentsException ex) {
            if (getSettings().isVerboseCommandUsages() && !cmd.getUsageStrings().isEmpty()) {
                sender.sendMessage(tl("commandHelpLine1", commandLabel));
                sender.sendMessage(tl("commandHelpLine2", command.getDescription()));
                sender.sendMessage(tl("commandHelpLine3"));
                for (Map.Entry<String, String> usage : cmd.getUsageStrings().entrySet()) {
                    sender.sendMessage(tl("commandHelpLineUsage", usage.getKey().replace("<command>", commandLabel), usage.getValue()));
                }
            } else {
                sender.sendMessage(command.getDescription());
                sender.sendMessage(command.getUsage().replace("<command>", commandLabel));
            }
            if (!ex.getMessage().isEmpty()) {
                sender.sendMessage(ex.getMessage());
            }
            if (ex.getCause() != null && settings.isDebug()) {
                ex.getCause().printStackTrace();
            }
            return true;
        } catch (final Exception ex) {
            showError(sender, ex, commandLabel);
            if (settings.isDebug()) {
                ex.printStackTrace();
            }
            return true;
        }
    } catch (final Throwable ex) {
        LOGGER.log(Level.SEVERE, tl("commandFailed", commandLabel), ex);
        return true;
    }
}
Also used : Player(org.bukkit.entity.Player) QuietAbortException(com.earth2me.essentials.commands.QuietAbortException) NotEnoughArgumentsException(com.earth2me.essentials.commands.NotEnoughArgumentsException) PlayerNotFoundException(com.earth2me.essentials.commands.PlayerNotFoundException) QuietAbortException(com.earth2me.essentials.commands.QuietAbortException) IOException(java.io.IOException) NoChargeException(com.earth2me.essentials.commands.NoChargeException) InvalidDescriptionException(org.bukkit.plugin.InvalidDescriptionException) PluginIdentifiableCommand(org.bukkit.command.PluginIdentifiableCommand) NoChargeException(com.earth2me.essentials.commands.NoChargeException) IEssentialsCommand(com.earth2me.essentials.commands.IEssentialsCommand) EssentialsCommand(com.earth2me.essentials.commands.EssentialsCommand) PluginCommand(org.bukkit.command.PluginCommand) Command(org.bukkit.command.Command) PluginIdentifiableCommand(org.bukkit.command.PluginIdentifiableCommand) IEssentialsCommand(com.earth2me.essentials.commands.IEssentialsCommand) Block(org.bukkit.block.Block) NotEnoughArgumentsException(com.earth2me.essentials.commands.NotEnoughArgumentsException) BlockCommandSender(org.bukkit.command.BlockCommandSender)

Example 2 with QuietAbortException

use of com.earth2me.essentials.commands.QuietAbortException in project Essentials by EssentialsX.

the class Essentials method onCommandEssentials.

@Override
public boolean onCommandEssentials(final CommandSender cSender, final Command command, final String commandLabel, final String[] args, final ClassLoader classLoader, final String commandPath, final String permissionPrefix, final IEssentialsModule module) {
    // Allow plugins to override the command via onCommand
    if (!getSettings().isCommandOverridden(command.getName()) && (!commandLabel.startsWith("e") || commandLabel.equalsIgnoreCase(command.getName()))) {
        if (getSettings().isDebug()) {
            LOGGER.log(Level.INFO, "Searching for alternative to: " + commandLabel);
        }
        final Command pc = alternativeCommandsHandler.getAlternative(commandLabel);
        if (pc != null) {
            alternativeCommandsHandler.executed(commandLabel, pc);
            try {
                pc.execute(cSender, commandLabel, args);
            } catch (final Exception ex) {
                Bukkit.getLogger().log(Level.SEVERE, ex.getMessage(), ex);
                cSender.sendMessage(tl("internalError"));
            }
            return true;
        }
    }
    try {
        User user = null;
        Block bSenderBlock = null;
        if (cSender instanceof Player) {
            user = getUser((Player) cSender);
        } else if (cSender instanceof BlockCommandSender) {
            final BlockCommandSender bsender = (BlockCommandSender) cSender;
            bSenderBlock = bsender.getBlock();
        }
        if (bSenderBlock != null) {
            if (getSettings().logCommandBlockCommands()) {
                Bukkit.getLogger().log(Level.INFO, "CommandBlock at {0},{1},{2} issued server command: /{3} {4}", new Object[] { bSenderBlock.getX(), bSenderBlock.getY(), bSenderBlock.getZ(), commandLabel, EssentialsCommand.getFinalArg(args, 0) });
            }
        } else if (user == null) {
            Bukkit.getLogger().log(Level.INFO, "{0} issued server command: /{1} {2}", new Object[] { cSender.getName(), commandLabel, EssentialsCommand.getFinalArg(args, 0) });
        }
        final CommandSource sender = new CommandSource(cSender);
        // New mail notification
        if (user != null && !getSettings().isCommandDisabled("mail") && !command.getName().equals("mail") && user.isAuthorized("essentials.mail")) {
            user.notifyOfMail();
        }
        // Print version even if admin command is not available #easteregg
        if (commandLabel.equalsIgnoreCase("essversion")) {
            sender.sendMessage("This server is running Essentials " + getDescription().getVersion());
            return true;
        }
        // Check for disabled commands
        if (getSettings().isCommandDisabled(commandLabel)) {
            if (getKnownCommandsProvider().getKnownCommands().containsKey(commandLabel)) {
                final Command newCmd = getKnownCommandsProvider().getKnownCommands().get(commandLabel);
                if (!(newCmd instanceof PluginIdentifiableCommand) || !isEssentialsPlugin(((PluginIdentifiableCommand) newCmd).getPlugin())) {
                    return newCmd.execute(cSender, commandLabel, args);
                }
            }
            sender.sendMessage(tl("commandDisabled", commandLabel));
            return true;
        }
        final IEssentialsCommand cmd;
        try {
            cmd = loadCommand(commandPath, command.getName(), module, classLoader);
        } catch (final Exception ex) {
            sender.sendMessage(tl("commandNotLoaded", commandLabel));
            LOGGER.log(Level.SEVERE, tl("commandNotLoaded", commandLabel), ex);
            return true;
        }
        // Check authorization
        if (user != null && !user.isAuthorized(cmd, permissionPrefix)) {
            LOGGER.log(Level.INFO, tl("deniedAccessCommand", user.getName()));
            user.sendMessage(tl("noAccessCommand"));
            return true;
        }
        if (user != null && user.isJailed() && !user.isAuthorized(cmd, "essentials.jail.allow.")) {
            if (user.getJailTimeout() > 0) {
                user.sendMessage(tl("playerJailedFor", user.getName(), user.getFormattedJailTime()));
            } else {
                user.sendMessage(tl("jailMessage"));
            }
            return true;
        }
        // Run the command
        try {
            if (user == null) {
                cmd.run(getServer(), sender, commandLabel, command, args);
            } else {
                cmd.run(getServer(), user, commandLabel, command, args);
            }
            return true;
        } catch (final NoChargeException | QuietAbortException ex) {
            return true;
        } catch (final NotEnoughArgumentsException ex) {
            if (getSettings().isVerboseCommandUsages() && !cmd.getUsageStrings().isEmpty()) {
                sender.sendMessage(tl("commandHelpLine1", commandLabel));
                sender.sendMessage(tl("commandHelpLine2", command.getDescription()));
                sender.sendMessage(tl("commandHelpLine3"));
                for (Map.Entry<String, String> usage : cmd.getUsageStrings().entrySet()) {
                    sender.sendMessage(tl("commandHelpLineUsage", usage.getKey().replace("<command>", commandLabel), usage.getValue()));
                }
            } else {
                sender.sendMessage(command.getDescription());
                sender.sendMessage(command.getUsage().replace("<command>", commandLabel));
            }
            if (!ex.getMessage().isEmpty()) {
                sender.sendMessage(ex.getMessage());
            }
            if (ex.getCause() != null && settings.isDebug()) {
                ex.getCause().printStackTrace();
            }
            return true;
        } catch (final Exception ex) {
            showError(sender, ex, commandLabel);
            if (settings.isDebug()) {
                ex.printStackTrace();
            }
            return true;
        }
    } catch (final Throwable ex) {
        LOGGER.log(Level.SEVERE, tl("commandFailed", commandLabel), ex);
        return true;
    }
}
Also used : Player(org.bukkit.entity.Player) QuietAbortException(com.earth2me.essentials.commands.QuietAbortException) NotEnoughArgumentsException(com.earth2me.essentials.commands.NotEnoughArgumentsException) PlayerNotFoundException(com.earth2me.essentials.commands.PlayerNotFoundException) QuietAbortException(com.earth2me.essentials.commands.QuietAbortException) IOException(java.io.IOException) NoChargeException(com.earth2me.essentials.commands.NoChargeException) InvalidDescriptionException(org.bukkit.plugin.InvalidDescriptionException) PluginIdentifiableCommand(org.bukkit.command.PluginIdentifiableCommand) NoChargeException(com.earth2me.essentials.commands.NoChargeException) IEssentialsCommand(com.earth2me.essentials.commands.IEssentialsCommand) EssentialsCommand(com.earth2me.essentials.commands.EssentialsCommand) PluginCommand(org.bukkit.command.PluginCommand) Command(org.bukkit.command.Command) PluginIdentifiableCommand(org.bukkit.command.PluginIdentifiableCommand) IEssentialsCommand(com.earth2me.essentials.commands.IEssentialsCommand) Block(org.bukkit.block.Block) NotEnoughArgumentsException(com.earth2me.essentials.commands.NotEnoughArgumentsException) BlockCommandSender(org.bukkit.command.BlockCommandSender)

Aggregations

EssentialsCommand (com.earth2me.essentials.commands.EssentialsCommand)2 IEssentialsCommand (com.earth2me.essentials.commands.IEssentialsCommand)2 NoChargeException (com.earth2me.essentials.commands.NoChargeException)2 NotEnoughArgumentsException (com.earth2me.essentials.commands.NotEnoughArgumentsException)2 PlayerNotFoundException (com.earth2me.essentials.commands.PlayerNotFoundException)2 QuietAbortException (com.earth2me.essentials.commands.QuietAbortException)2 IOException (java.io.IOException)2 Block (org.bukkit.block.Block)2 BlockCommandSender (org.bukkit.command.BlockCommandSender)2 Command (org.bukkit.command.Command)2 PluginCommand (org.bukkit.command.PluginCommand)2 PluginIdentifiableCommand (org.bukkit.command.PluginIdentifiableCommand)2 Player (org.bukkit.entity.Player)2 InvalidDescriptionException (org.bukkit.plugin.InvalidDescriptionException)2