diff --git a/src/main/java/net/minecraftforge/fml/relauncher/libraries/Artifact.java b/src/main/java/net/minecraftforge/fml/relauncher/libraries/Artifact.java index 80475b9697..2a634bf962 100644 --- a/src/main/java/net/minecraftforge/fml/relauncher/libraries/Artifact.java +++ b/src/main/java/net/minecraftforge/fml/relauncher/libraries/Artifact.java @@ -123,7 +123,7 @@ public class Artifact implements Comparable if (folder == null) { StringBuilder sb = new StringBuilder(); - for (String part : group.split(".")) + for (String part : group.split("\\.")) sb.append(part).append(File.separatorChar); sb.append(artifact).append(File.separatorChar); sb.append(version); diff --git a/src/main/java/net/minecraftforge/fml/relauncher/libraries/LibraryManager.java b/src/main/java/net/minecraftforge/fml/relauncher/libraries/LibraryManager.java index 3b4f34a48b..783442d89b 100644 --- a/src/main/java/net/minecraftforge/fml/relauncher/libraries/LibraryManager.java +++ b/src/main/java/net/minecraftforge/fml/relauncher/libraries/LibraryManager.java @@ -317,14 +317,18 @@ public class LibraryManager { try { - Artifact artifact = readArtifact(modlist.getRepository(), meta); + Artifact artifact = readArtifact(modlist.getRepository(), meta); File target = artifact.getFile(); if (target.exists()) { FMLLog.log.debug("Found existing ContainedDep {}({}) from {} extracted to {}, skipping extraction", dep, artifact.toString(), target.getCanonicalPath(), jar.getName()); if (!ENABLE_AUTO_MOD_MOVEMENT) { - extractPacked(target, modlist, modDirs); //If we're not building a real list we have to re-build the dep list every run. So search down. + Pair child = extractPacked(target, modlist, modDirs); //If we're not building a real list we have to re-build the dep list every run. So search down. + if (child == null && metaEntry != null) //External meta with no internal name... If there is a internal name, we trust that that name is the correct one. + { + modlist.add(artifact); + } } } else @@ -353,7 +357,11 @@ public class LibraryManager File meta_target = new File(target.getAbsolutePath() + ".meta"); Files.write(manifest_data, meta_target); } - extractPacked(target, modlist, modDirs); + Pair child = extractPacked(target, modlist, modDirs); + if (child == null && metaEntry != null) //External meta with no internal name... If there is a internal name, we trust that that name is the correct one. + { + modlist.add(artifact); + } } } catch (NumberFormatException nfe) @@ -368,15 +376,15 @@ public class LibraryManager } } - if (attrs.containsKey(MAVEN_ARTIFACT)) + if (attrs.containsKey(MAVEN_ARTIFACT)) { - Artifact artifact = readArtifact(modlist.getRepository(), attrs); - modlist.add(artifact); - return Pair.of(artifact, readAll(jar.getInputStream(manifest_entry))); + Artifact artifact = readArtifact(modlist.getRepository(), attrs); + modlist.add(artifact); + return Pair.of(artifact, readAll(jar.getInputStream(manifest_entry))); } return null; } - + private static Artifact readArtifact(Repository repo, Attributes meta) { String timestamp = meta.getValue(TIMESTAMP);