private void updateNPCs(Buffer stream, int amount) {
		actorsToUpdateCount = 0;
		playersObservedCount = 0;
		updateNPCMovement(stream);
		updateNPCList(amount, stream);
		updateNPCBlock(stream);
		for (int k = 0; k < actorsToUpdateCount; k++) {
			int npcId = actorsToUpdateIds[k];
			if (npcs[npcId].lastUpdateTick != tick) {
				npcs[npcId].npcDefinition = null;
				npcs[npcId] = null;
			}
		}

		if (stream.position != amount) {
			signlink.reporterror(enteredUsername
					+ " size mismatch in getnpcpos - pos:"
					+ stream.position + " psize:" + amount);
			throw new RuntimeException("eek");
		}
		for (int n = 0; n < npcCount; n++)
			if (npcs[npcIds[n]] == null) {
				signlink.reporterror(enteredUsername
						+ " null entry in npc list - pos:" + n + " size:"
						+ npcCount);
				throw new RuntimeException("eek");
			}
	}