diff --git a/src/main/java/cpw/mods/fml/common/Loader.java b/src/main/java/cpw/mods/fml/common/Loader.java index a35ffbf..646e1b3 100644 --- a/src/main/java/cpw/mods/fml/common/Loader.java +++ b/src/main/java/cpw/mods/fml/common/Loader.java @@ -38,6 +38,7 @@ import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableMap; import com.google.common.collect.ImmutableMultiset; +import com.google.common.collect.Iterables; import com.google.common.collect.LinkedHashMultimap; import com.google.common.collect.ListMultimap; import com.google.common.collect.Lists; @@ -199,7 +200,7 @@ try { BiMap modVersions = HashBiMap.create(); - for (ModContainer mod : getActiveModList()) + for (ModContainer mod : Iterables.concat(getActiveModList(), ModAPIManager.INSTANCE.getAPIList())) { modVersions.put(mod.getModId(), mod.getProcessedVersion()); } diff --git a/src/main/java/cpw/mods/fml/common/ModAPIManager.java b/src/main/java/cpw/mods/fml/common/ModAPIManager.java index 045d3f0..ab16849 100644 --- a/src/main/java/cpw/mods/fml/common/ModAPIManager.java +++ b/src/main/java/cpw/mods/fml/common/ModAPIManager.java @@ -36,6 +36,7 @@ private String version; private Set currentReferents; private Set packages; + private boolean selfReferenced; public APIContainer(String providedAPI, String apiVersion, File source, ArtifactVersion ownerMod) { @@ -67,7 +68,7 @@ @Override public String getModId() { - return "API:"+providedAPI; + return providedAPI; } @Override public List getDependants() @@ -78,7 +79,7 @@ @Override public List getDependencies() { - return ImmutableList.of(ownerMod); + return selfReferenced ? ImmutableList.of() : ImmutableList.of(ownerMod); } @Override @@ -118,6 +119,11 @@ addAPIReference(modId); } } + + void markSelfReferenced() + { + selfReferenced = true; + } } public void registerDataTableAndParseAPI(ASMDataTable dataTable) { @@ -181,6 +187,12 @@ do { APIContainer parent = apiContainers.get(owner.getLabel()); + if (parent == container) + { + FMLLog.finer("APIContainer %s is it's own parent. skipping", owner); + container.markSelfReferenced(); + break; + } FMLLog.finer("Removing upstream parent %s from %s", parent.ownerMod.getLabel(), container); container.currentReferents.remove(parent.ownerMod.getLabel()); container.referredMods.remove(parent.ownerMod); @@ -213,4 +225,9 @@ { return apiContainers.containsKey(modId); } + + public Iterable getAPIList() + { + return apiContainers.values(); + } } \ No newline at end of file diff --git a/src/main/resources/fmlversion.properties b/src/main/resources/fmlversion.properties index 44ade37..f027986 100644 --- a/src/main/resources/fmlversion.properties +++ b/src/main/resources/fmlversion.properties @@ -1,6 +1,6 @@ fmlbuild.major.number=7 fmlbuild.minor.number=10 -fmlbuild.revision.number=0 -fmlbuild.build.number=40 +fmlbuild.revision.number=1 +fmlbuild.build.number=41 fmlbuild.mcversion=1.7.10 fmlbuild.mcpversion=9.05