/*
  Called when this packet has been received.
  Creates the PlayerMP of the client, then assign him/her a tempID.
   */
  @Override
  public void received(Connection connection, Object object) {

    /*
    Instance of the ServerHandler.
     */
    ServerHandler serverHandler = ServerHandler.instance;

    /*
    The packet that was received.
     */
    Packet01LoginRequest packet = (Packet01LoginRequest) object;

    /*
    Create the PlayerMP!
     */
    PlayerMP playerMP = new PlayerMP();
    playerMP.tempID = new UID().generate();
    playerMP.name = packet.name;
    playerMP.x = 0;
    playerMP.y = 0;

    Logger.PLAYER_CONNECTED(playerMP.name, playerMP.tempID);

    /*
    Create the list of networked players that we will send to this player (the one that just connected!).
     */
    ArrayList<PlayerMP> list = new ArrayList<>();
    synchronized (serverHandler.playerMap) {
      if (!serverHandler.playerMap.isEmpty()) {
        for (PlayerMP mp : serverHandler.playerMap.values()) {
          list.add(mp);
        }
      }
    }

    /*
    Send the login response.
     */
    serverHandler.packetHandler.sendPacket01LoginRequest(
        connection.getID(), true, "Accepted", playerMP.tempID, list);

    /*
    Add this player to the playerMap.
     */
    synchronized (serverHandler.playerMap) {
      serverHandler.playerMap.put(connection.getID(), playerMP);
    }

    /*
    Send all other players the login packet, signifying that this player has just logged in.
     */
    serverHandler.packetHandler.sendPacket02Login(
        connection.getID(), playerMP.tempID, playerMP.name, playerMP.x, playerMP.y);
  }