@Override
	public void run() {
		while (true) {
			try {
				String inline;
				boolean first = true;
				while (!(inline = client.getReader().readLine()).equals("STOP")) {
					if (inline.charAt(0) == '!') {
						view.addToChat(inline.substring(1));
					}
					else if (inline.charAt(0) == '$') {
						populateLowerLayer(inline.substring(1));
					}
					else {
						if (first) { players.clear(); first = false; }					
						// x, y, character, charno, sprites
						String[] parts = inline.split(";");
						players.add(new Player(Integer.parseInt(parts[0]), Integer.parseInt(parts[1]), Integer.parseInt(parts[3]), Integer.parseInt(parts[2]), sprites));
					}
				}
			} catch (IOException ex) {
				Logger.getLogger(ClientWorld.class.getName()).log(Level.SEVERE, null, ex);
			}
		}
	}