private void sendCommand(CommandInfo info) throws CommandException
    {
    	CommandHandler ch = queue.getMethod().getAnnotation(CommandHandler.class);
    	boolean playerOnly = ch.playerOnly();

        if (info.getArgsLength() < info.getCommandHandler().min())
        {
            info.getSender().sendMessage("Too few arguments.");
            info.getRegisteredCommand().displayDefaultUsage(info.getSender(), info.getCommand(), info.getParentCommand());
            return;
//            throw new CommandException("Too few arguments.");
        }
        if (info.getCommandHandler().max() != -1 && info.getArgsLength() > info.getCommandHandler().max())
        {
            info.getSender().sendMessage("Too many arguments.");
            info.getRegisteredCommand().displayDefaultUsage(info.getSender(), info.getCommand(), info.getParentCommand());
            return;
//            throw new CommandException("Too many arguments.");
        }
        if (!info.getSender().hasPermission(info.getCommandHandler().permission()))
        {
            Colorizer.send(info.getSender(), "<red>" + info.getCommandHandler().noPermission());
            return;
        }
        if(playerOnly && !info.isPlayer())
        {
             //maybe make this configurable some how
             info.getSender().sendMessage("This command can only be executed in game.");
             return;
        }
        try
        {
            queue.getMethod().invoke(queue.getObject(), info);
        }
            catch (IllegalAccessException e)
        {
            e.printStackTrace();
        }
            catch (InvocationTargetException e)
        {
            e.printStackTrace();
        }
    }