From d14ad7dd9a42e0e6614fb92fac9ac5cf305f54ba Mon Sep 17 00:00:00 2001 From: Lex Manos Date: Sun, 15 Feb 2015 17:30:18 -0800 Subject: [PATCH] Filter more known libraries from potential mod canidates. --- .../fml/common/ModClassLoader.java | 49 +++++++++++++++++++ .../fml/common/discovery/ModDiscoverer.java | 18 ++++--- 2 files changed, 59 insertions(+), 8 deletions(-) diff --git a/fml/src/main/java/net/minecraftforge/fml/common/ModClassLoader.java b/fml/src/main/java/net/minecraftforge/fml/common/ModClassLoader.java index a389421d78..161f936239 100644 --- a/fml/src/main/java/net/minecraftforge/fml/common/ModClassLoader.java +++ b/fml/src/main/java/net/minecraftforge/fml/common/ModClassLoader.java @@ -86,6 +86,55 @@ public class ModClassLoader extends URLClassLoader return STANDARD_LIBRARIES; } + public boolean isDefaultLibrary(File file) + { + // Should really pull this from the json somehow, but we dont have that at runtime. + String name = file.getName(); + if (!name.endsWith(".jar")) return false; + String[] prefixes = + { + "launchwrapper-", + "asm-all-", + "akka-actor_2.11-", + "config-", + "scala-", + "jopt-simple-", + "lzma-", + "realms-", + "httpclient-", + "httpcore-", + "vecmath-", + "trove4j-", + "icu4j-core-mojang-", + "codecjorbis-", + "codecwav-", + "libraryjavawound-", + "librarylwjglopenal-", + "soundsystem-", + "netty-all-", + "quava-", + "commons-lang3-", + "commons-compress-", + "commons-logging-", + "commons-io-", + "commons-codec-", + "jinput-", + "jutils-", + "gson-", + "authlib-", + "log4j-api-", + "log4j-core-", + "lwjgl-", + "lwjgl_util-", + "twitch-" + }; + for (String s : prefixes) + { + if (name.startsWith(s)) return true; + } + return false; + } + public void clearNegativeCacheFor(Set classList) { mainClassLoader.clearNegativeEntries(classList); diff --git a/fml/src/main/java/net/minecraftforge/fml/common/discovery/ModDiscoverer.java b/fml/src/main/java/net/minecraftforge/fml/common/discovery/ModDiscoverer.java index 235060052d..bf1814c8c5 100644 --- a/fml/src/main/java/net/minecraftforge/fml/common/discovery/ModDiscoverer.java +++ b/fml/src/main/java/net/minecraftforge/fml/common/discovery/ModDiscoverer.java @@ -60,25 +60,27 @@ public class ModDiscoverer } else { - for (int i = 0; i < minecraftSources.length; i++) + int i = 0; + for (File source : minecraftSources) { - if (minecraftSources[i].isFile()) + if (source.isFile()) { - if (knownLibraries.contains(minecraftSources[i].getName())) + if (knownLibraries.contains(source.getName()) || modClassLoader.isDefaultLibrary(source)) { - FMLLog.finer("Skipping known library file %s", minecraftSources[i].getAbsolutePath()); + FMLLog.finer("Skipping known library file %s", source.getAbsolutePath()); } else { - FMLLog.fine("Found a minecraft related file at %s, examining for mod candidates", minecraftSources[i].getAbsolutePath()); - addCandidate(new ModCandidate(minecraftSources[i], minecraftSources[i], ContainerType.JAR, i==0, true)); + FMLLog.fine("Found a minecraft related file at %s, examining for mod candidates", source.getAbsolutePath()); + addCandidate(new ModCandidate(source, source, ContainerType.JAR, i==0, true)); } } else if (minecraftSources[i].isDirectory()) { - FMLLog.fine("Found a minecraft related directory at %s, examining for mod candidates", minecraftSources[i].getAbsolutePath()); - addCandidate(new ModCandidate(minecraftSources[i], minecraftSources[i], ContainerType.DIR, i==0, true)); + FMLLog.fine("Found a minecraft related directory at %s, examining for mod candidates", source.getAbsolutePath()); + addCandidate(new ModCandidate(source, source, ContainerType.DIR, i==0, true)); } + i++; } }