@Override
    public boolean execute(CommandSender sender, String command, String[] args)
    {
        //was our command succeesfully executed?
        boolean success = false;

        //check if plugin is enabled
        if (!plugin.isEnabled())
        {
            try
            {
                throw new CommandException("Unhandled exception while executing command " + command + "in plugin " + plugin.getDescription().getFullName() + ": plugin is not enabled!");
            }
            catch (Throwable ex)
            {
                ex.printStackTrace();
            }
        }

        //handle permission
        if (!testPermission(sender))
        {
            return true;
        }


        //is ingame?
        if (onlyIngame() == true && !(sender instanceof Player))
        {
            sender.sendMessage(commandManager.PREFIX + commandManager.ONLYINGAME_MESSAGE);
            return true;
        }

        /**
         * from {@link org.bukkit.command.PluginCommand}
         */
        try
        {
            success = onCommand(sender, command, args);
        }
        catch (Throwable ex)
        {
            throw new CommandException("Unhandled exception executing command '" + command + "' in plugin " + plugin.getDescription().getFullName(), ex);
        }

        if (!success && usageMessage.length() > 0)
        {
            for (String line : usageMessage.replace("<command>", command).split("\n"))
            {
                sender.sendMessage(line);
            }
        }

        return success;
    }