public synchronized void addPlayer(String data) {
    try {
      boolean exists = false;
      int count = 1;
      String log = "";
      StringTokenizer ST = new StringTokenizer(data);
      ST.nextToken(); // Zieladresse, ist hier uninteressant
      String name = ST.nextToken();
      int min = Integer.parseInt(ST.nextToken());
      int max = Integer.parseInt(ST.nextToken());

      for (int i = 0; i < games.size(); i++) {
        Game game = (Game) games.elementAt(i);

        if (game.getNameOfTheGame().equals(name)) {
          if (game.is_running || game.isFull()) {
            count++;
          } else {
            ServerThread thread = new ServerThread(this.connection, this, game.getCurrentPlayers(), game.getGameID(), game.getNameOfTheGame());
            thread.start();
            game.add(thread);
            log = "server: player added in: " + name + ", ID:" + game.getGameID() + "\n";
            System.out.print(log);
            log(log, port);
            exists = true;
          }
        }
      }

      if (!exists) {
        ServerThread thread = new ServerThread(this.connection, this, 0, count, name);
        thread.start();
        games.addElement((Object) new Game(thread, min, max, name));
        log = "server: started new game: " + name + " min" + min + " max" + max + "\n";
        System.out.print(log);
        log(log, port);
      }
    } catch (NoSuchElementException e) {
      String log = "server: corrupt message in method addPlayer\n";
      System.out.print(log);
      log(log, port);
    }
  }