diff --git a/fml/common/cpw/mods/fml/common/ModContainerFactory.java b/fml/common/cpw/mods/fml/common/ModContainerFactory.java index e0e8f5fd2..6aba285cf 100644 --- a/fml/common/cpw/mods/fml/common/ModContainerFactory.java +++ b/fml/common/cpw/mods/fml/common/ModContainerFactory.java @@ -5,6 +5,7 @@ import java.util.regex.Pattern; import org.objectweb.asm.Type; +import cpw.mods.fml.common.discovery.ModCandidate; import cpw.mods.fml.common.discovery.asm.ASMModParser; import cpw.mods.fml.common.discovery.asm.ModAnnotation; import cpw.mods.fml.common.modloader.ModLoaderModContainer; @@ -16,7 +17,7 @@ public class ModContainerFactory public static ModContainerFactory instance() { return INSTANCE; } - public ModContainer build(ASMModParser modParser, File modSource) + public ModContainer build(ASMModParser modParser, File modSource, ModCandidate container) { String className = modParser.getASMType().getClassName(); if (modParser.isBaseMod() && modClass.matcher(className).find()) @@ -26,7 +27,7 @@ public class ModContainerFactory } // We warn if it's not a basemod instance -- compatibility requires it to be in net.minecraft.src *sigh* - if (className.startsWith("net.minecraft.src.")) + if (className.startsWith("net.minecraft.src.") && container.isClasspath()) { FMLLog.severe("FML has detected a mod that is using a package name based on 'net.minecraft.src' : %s. This is generally a severe programming error. " + " There should be no mod code in the minecraft namespace. MOVE YOUR MOD! If you're in eclipse, select your source code and 'refactor' it into " diff --git a/fml/common/cpw/mods/fml/common/discovery/DirectoryDiscoverer.java b/fml/common/cpw/mods/fml/common/discovery/DirectoryDiscoverer.java index a8c9dafb5..c8a8f3999 100644 --- a/fml/common/cpw/mods/fml/common/discovery/DirectoryDiscoverer.java +++ b/fml/common/cpw/mods/fml/common/discovery/DirectoryDiscoverer.java @@ -92,7 +92,7 @@ public class DirectoryDiscoverer implements ITypeDiscoverer modParser.validate(); modParser.sendToTable(table, candidate); - ModContainer container = ModContainerFactory.instance().build(modParser, candidate.getModContainer()); + ModContainer container = ModContainerFactory.instance().build(modParser, candidate.getModContainer(), candidate); if (container!=null) { harvestedMods.add(container); diff --git a/fml/common/cpw/mods/fml/common/discovery/JarDiscoverer.java b/fml/common/cpw/mods/fml/common/discovery/JarDiscoverer.java index f5105553e..a8bcd7cd6 100644 --- a/fml/common/cpw/mods/fml/common/discovery/JarDiscoverer.java +++ b/fml/common/cpw/mods/fml/common/discovery/JarDiscoverer.java @@ -47,7 +47,7 @@ public class JarDiscoverer implements ITypeDiscoverer ASMModParser modParser = new ASMModParser(jar.getInputStream(ze)); modParser.validate(); modParser.sendToTable(table, candidate); - ModContainer container = ModContainerFactory.instance().build(modParser, candidate.getModContainer()); + ModContainer container = ModContainerFactory.instance().build(modParser, candidate.getModContainer(), candidate); if (container!=null) { table.addContainer(container); diff --git a/fml/common/cpw/mods/fml/common/discovery/ModCandidate.java b/fml/common/cpw/mods/fml/common/discovery/ModCandidate.java index 407422b20..e35c44b09 100644 --- a/fml/common/cpw/mods/fml/common/discovery/ModCandidate.java +++ b/fml/common/cpw/mods/fml/common/discovery/ModCandidate.java @@ -43,4 +43,9 @@ public class ModCandidate { return sourceType.findMods(this, table); } + + public boolean isClasspath() + { + return classpath; + } } \ No newline at end of file diff --git a/fml/common/cpw/mods/fml/common/discovery/ModDiscoverer.java b/fml/common/cpw/mods/fml/common/discovery/ModDiscoverer.java index d6a3bcebf..4778dd90e 100644 --- a/fml/common/cpw/mods/fml/common/discovery/ModDiscoverer.java +++ b/fml/common/cpw/mods/fml/common/discovery/ModDiscoverer.java @@ -47,13 +47,13 @@ public class ModDiscoverer else { FMLLog.fine("Found a minecraft related file at %s, examining for mod candidates", minecraftSources[i].getAbsolutePath()); - candidates.add(new ModCandidate(minecraftSources[i], minecraftSources[i], ContainerType.JAR, true)); + candidates.add(new ModCandidate(minecraftSources[i], minecraftSources[i], ContainerType.JAR, i!=0)); } } else if (minecraftSources[i].isDirectory()) { FMLLog.fine("Found a minecraft related directory at %s, examining for mod candidates", minecraftSources[i].getAbsolutePath()); - candidates.add(new ModCandidate(minecraftSources[i], minecraftSources[i], ContainerType.DIR, true)); + candidates.add(new ModCandidate(minecraftSources[i], minecraftSources[i], ContainerType.DIR, i!=0)); } } }