/** {@inheritDoc} */
  @Override
  protected void runImpl() {
    Player activePlayer = getConnection().getActivePlayer();

    Iterator<Player> it = World.getInstance().getPlayersIterator();

    List<Player> matches = new ArrayList<Player>(MAX_RESULTS);

    if (activePlayer != null && activePlayer.getLevel() < 10) {
      sendPacket(SM_SYSTEM_MESSAGE.LEVEL_NOT_ENOUGH_FOR_SEARCH("10"));
      return;
    }
    while (it.hasNext() && matches.size() < MAX_RESULTS) {
      Player player = it.next();
      if (!player.isSpawned()) continue;
      else if (player.getFriendList().getStatus() == Status.OFFLINE) continue;
      else if (lfgOnly == 1 && !player.isLookingForGroup()) continue;
      else if (!name.isEmpty() && !player.getName().toLowerCase().contains(name.toLowerCase()))
        continue;
      else if (minLevel != 0xFF && player.getLevel() < minLevel) continue;
      else if (maxLevel != 0xFF && player.getLevel() > maxLevel) continue;
      else if (classMask > 0 && (player.getPlayerClass().getMask() & classMask) == 0) continue;
      else if (region > 0 && player.getActiveRegion().getMapId() != region) continue;
      else if ((player.getCommonData().getRace() != activePlayer.getCommonData().getRace())
          && (CustomConfig.FACTIONS_SEARCH_MODE == false)) continue;
      else
      // This player matches criteria
      {
        matches.add(player);
      }
    }

    sendPacket(new SM_PLAYER_SEARCH(matches, region));
  }
 /**
  * This method is called just after player logged in to the game.<br>
  * <br>
  * <b><font color='red'>NOTICE: </font> This method called only from {@link CM_ENTER_WORLD} and
  * must not be called from anywhere else.</b>
  *
  * @param player
  */
 public static void playerLoggedIn(Player player) {
   log.info(
       "Player logged in: "
           + player.getName()
           + " Account: "
           + player.getClientConnection().getAccount().getName());
   player.getCommonData().setOnline(true);
   DAOManager.getDAO(PlayerDAO.class).onlinePlayer(player, true);
   player.getFriendList().setStatus(Status.ONLINE);
   player.onLoggedIn();
 }
  /** {@inheritDoc} */
  @Override
  protected void runImpl() {

    Player activePlayer = getConnection().getActivePlayer();
    Friend target = activePlayer.getFriendList().getFriend(targetName);
    if (target == null) {
      log.warn(
          activePlayer.getName()
              + " tried to delete friend "
              + targetName
              + " who is not his friend");
      sendPacket(SM_SYSTEM_MESSAGE.BUDDYLIST_NOT_IN_LIST);
    } else {
      SocialService.deleteFriend(activePlayer, target.getOid());
    }
  }
  /** {@inheritDoc} */
  @Override
  protected void runImpl() {
    Player activePlayer = getConnection().getActivePlayer();

    if (!note.equals(activePlayer.getCommonData().getNote())) {

      activePlayer.getCommonData().setNote(note);

      for (Friend friend : activePlayer.getFriendList()) // For all my friends
      {

        if (friend.isOnline()) // If the player is online
        {
          friend
              .getPlayer()
              .getClientConnection()
              .sendPacket(new SM_FRIEND_LIST()); // Send him a new friend list packet
        }
      }
    }
  }