I've fixed this (and again, there's probably a much better way), by changing the following in ShareWithPlayer:

            foreach (var blueprint in playerBlueprints.ToList())

            {
                if (BlueprintBlocked(blueprint))
                {
                    playerBlueprints.Remove(blueprint);

                }
            }​
to
            foreach (var blueprint in playerBlueprints.ToList())

            {
                if (BlueprintBlocked(blueprint))
                {
                    playerBlueprints.Remove(blueprint);
                    player.ChatMessage(GetLangValue("Prefix", playerID) + GetLangValue("BlueprintBlocked", playerID, blueprint.displayName.translated));

                }
            }​