private void updateLocalPlayerMovement(Buffer stream) {
		stream.initBitAccess();
		int currentlyUpdating = stream.readBits(1);
		if (currentlyUpdating == 0)
			return;
		int movementUpdateType = stream.readBits(2);
		if (movementUpdateType == 0) {
			playersObserved[playersObservedCount++] = LOCAL_PLAYER_ID;
			return;
		}
		if (movementUpdateType == 1) {
			int direction = stream.readBits(3);
			localPlayer.move(false, direction);
			int furtherUpdateRequired = stream.readBits(1);
			if (furtherUpdateRequired == 1)
				playersObserved[playersObservedCount++] = LOCAL_PLAYER_ID;
			return;
		}
		if (movementUpdateType == 2) {
			int lastDirection = stream.readBits(3);
			localPlayer.move(true, lastDirection);
			int currentDirection = stream.readBits(3);
			localPlayer.move(true, currentDirection);
			int updateRequired = stream.readBits(1);
			if (updateRequired == 1)
				playersObserved[playersObservedCount++] = LOCAL_PLAYER_ID;
			return;
		}
		if (movementUpdateType == 3) {
			plane = stream.readBits(2);
			int clearWaypointQueue = stream.readBits(1);
			int updateRequired = stream.readBits(1);
			if (updateRequired == 1)
				playersObserved[playersObservedCount++] = LOCAL_PLAYER_ID;
			int x = stream.readBits(7);
			int y = stream.readBits(7);
			localPlayer.setPos(y, x, clearWaypointQueue == 1);
		}
	}