public void parseInput(String str) {
		str.trim();
		//if (!str.equals("")) postOutput(str);
		if (str.startsWith("/")) {
			// parse as command
			str.toLowerCase();
			if (str.indexOf(" ") > 0) {
				switch (str.substring(1, str.indexOf(" "))) {
				case "say":
					Packet03Speech pack = new Packet03Speech("SERVER", str.substring(4));
					say(pack);
					break;
				case "disconnect": //TODO disconnect player stated
					postOutput("disconnecting " + str.substring(str.indexOf(" ")));
					break;
				case "teleport":
				case	 "tp": //TODO teleport stated player
					postOutput("teleporting " + str.substring(str.indexOf(" ")));
					break;
				case "location":
					String player = str.substring(str.indexOf(" ")).trim();
					String location = game.getPlayerLocation(player);
					if (location != null)
						postOutput(player + " is at " + location + ".");
					else 
						postOutput("Player " + player + " could not be found!");
					break;
				default: 
					postOutput("Command not recognised: " + 
								str.substring(1, str.indexOf(" "))); 
					break;
				}
			} else {
				switch (str.substring(1)) {
				case "exit": //TODO quit cleanly
					postOutput("Server going down.");
					stop();
					break;
				default: postOutput("Command not recognised: " + 
										str.substring(1)); break;
				}
			}
		} else {
			Packet03Speech pack = new Packet03Speech("SERVER", str);
			say(pack);
		}
	}