private void Auth(CommandSender sender, String[] args) {
    final Player player = (Player) sender;
    final PreAuthenticateEvent event = new PreAuthenticateEvent(
        new PlayerInformation(player.getName()));
    extraauth.getServer().getPluginManager().callEvent(event);
    if (event.isCancelled()) {
      extraauth
          .getServer()
          .getPluginManager()
          .callEvent(
              new AuthenticateFailedEvent(new PlayerInformation(player
                  .getName()), FailedReason.CANCELED));
      send(sender, extraauth.Lang._("Command.Auth.Event.Failed"));
    } else {
      final FailedReason ret = extraauth.DB.Auth(player, (Object[]) args);
      if (ret == FailedReason.SUCCESSFULL) {
        extraauth
            .getServer()
            .getPluginManager()
            .callEvent(
                new AuthenticateSuccessfullEvent(new PlayerInformation(player
                    .getName())));
        send(sender, extraauth.Lang._("Command.Auth.Success"));
      } else {
        extraauth
            .getServer()
            .getPluginManager()
            .callEvent(
                new AuthenticateFailedEvent(new PlayerInformation(player
                    .getName()), ret));

        if (ret == FailedReason.NOT_REGISTERED)
          send(sender, extraauth.Lang._("Command.Auth.NotRegistered.Failed"));
        else if (ret == FailedReason.ALREADY_AUTHED)
          send(sender, extraauth.Lang._("Command.Auth.AlreadyAuthed.Failed"));
        else if (ret == FailedReason.WRONG_KEY)
          send(sender, extraauth.Lang._("Command.Auth.WrongKey.Failed"));
        else if (ret == FailedReason.INVALID_METHOD)
          send(sender, extraauth.Lang._("Command.Auth.InvalidMethod.Failed"));
        else if (ret == FailedReason.INVALID_ARGS)
          send(sender, extraauth.Lang._("Command.InvalidArgs"));
        else
          send(sender, extraauth.Lang._("Command.Auth.Unknown.Failed"));
      }
    }

  }