replaceAll() uses regex, which could easily cause undesired behavior (1.1 matching 1a1, for example); replace() does the same thing as replaceAll(), but doesn't use regex
Also added some protection against trying to update mods that are loaded from a directory (only happens in a dev environment, afaik)