diff --git a/fml/common/cpw/mods/fml/common/discovery/ModDiscoverer.java b/fml/common/cpw/mods/fml/common/discovery/ModDiscoverer.java index 8436aa109d..50b669bb7f 100644 --- a/fml/common/cpw/mods/fml/common/discovery/ModDiscoverer.java +++ b/fml/common/cpw/mods/fml/common/discovery/ModDiscoverer.java @@ -42,8 +42,12 @@ public class ModDiscoverer public void findClasspathMods(ModClassLoader modClassLoader) { List knownLibraries = ImmutableList.builder() + // skip default libs .addAll(modClassLoader.getDefaultLibraries()) + // skip loaded coremods .addAll(CoreModManager.getLoadedCoremods()) + // skip reparse coremods here + .addAll(CoreModManager.getReparseableCoremods()) .build(); File[] minecraftSources = modClassLoader.getParentSources(); if (minecraftSources.length == 1 && minecraftSources[0].isFile()) @@ -85,6 +89,7 @@ public class ModDiscoverer for (File modFile : modList) { + // skip loaded coremods if (CoreModManager.getLoadedCoremods().contains(modFile.getName())) { FMLLog.finer("Skipping already parsed coremod or tweaker %s", modFile.getName()); diff --git a/fml/common/cpw/mods/fml/relauncher/CoreModManager.java b/fml/common/cpw/mods/fml/relauncher/CoreModManager.java index 2164b0d1bd..a61b68cd4b 100644 --- a/fml/common/cpw/mods/fml/relauncher/CoreModManager.java +++ b/fml/common/cpw/mods/fml/relauncher/CoreModManager.java @@ -51,6 +51,7 @@ public class CoreModManager private static boolean deobfuscatedEnvironment; private static FMLTweaker tweaker; private static File mcDir; + private static List reparsedCoremods; private static class FMLPluginWrapper { @@ -210,7 +211,14 @@ public class CoreModManager try { classLoader.addURL(coreMod.toURI().toURL()); - loadedCoremods.add(coreMod.getName()); + if (!mfAttributes.containsValue("FMLCorePluginContainsFMLMod")) + { + loadedCoremods.add(coreMod.getName()); + } + else + { + reparsedCoremods.add(coreMod.getName()); + } } catch (MalformedURLException e) { @@ -267,6 +275,11 @@ public class CoreModManager return loadedCoremods; } + public static List getReparseableCoremods() + { + return reparsedCoremods; + } + private static FMLPluginWrapper loadCoreMod(LaunchClassLoader classLoader, String coreModClass, File location) { String coreModName = coreModClass.substring(coreModClass.lastIndexOf('.')+1);