private void updatePlayerList(Buffer stream, int count) {
		while (stream.bitPosition + 10 < count * 8) {
			int pId = stream.readBits(11);
			if (pId == 2047)
				break;
			if (players[pId] == null) {
				players[pId] = new Player();
				if (playerAppearanceData[pId] != null)
					players[pId]
							.updatePlayerAppearance(playerAppearanceData[pId]);
			}
			localPlayers[localPlayerCount++] = pId;
			Player player = players[pId];
			player.lastUpdateTick = tick;
			int observed = stream.readBits(1);
			if (observed == 1)
				playersObserved[playersObservedCount++] = pId;
			int teleported = stream.readBits(1);
			int x = stream.readBits(5);
			if (x > 15)
				x -= 32;
			int y = stream.readBits(5);
			if (y > 15)
				y -= 32;
			player.setPos(localPlayer.waypointX[0] + y,
					localPlayer.waypointY[0] + x, teleported == 1);
		}
		stream.finishBitAccess();
	}