Cleanup installer json handling, should hopefully fix incorrect dependency versions.
parent
35437891b5
commit
e03bbe0f87
|
@ -64,7 +64,6 @@ public class LoomGradleExtension {
|
||||||
private Project project;
|
private Project project;
|
||||||
private LoomDependencyManager dependencyManager;
|
private LoomDependencyManager dependencyManager;
|
||||||
private JsonObject installerJson;
|
private JsonObject installerJson;
|
||||||
private int installerJsonPriority = Integer.MAX_VALUE; // 0+, higher = less prioritized
|
|
||||||
private MappingSet[] srcMappingCache = new MappingSet[2];
|
private MappingSet[] srcMappingCache = new MappingSet[2];
|
||||||
private Mercury[] srcMercuryCache = new Mercury[2];
|
private Mercury[] srcMercuryCache = new Mercury[2];
|
||||||
|
|
||||||
|
@ -88,11 +87,8 @@ public class LoomGradleExtension {
|
||||||
return Collections.unmodifiableList(unmappedModsBuilt);
|
return Collections.unmodifiableList(unmappedModsBuilt);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setInstallerJson(JsonObject object, int priority) {
|
public void setInstallerJson(JsonObject object) {
|
||||||
if (installerJson == null || priority <= installerJsonPriority) {
|
this.installerJson = object;
|
||||||
this.installerJson = object;
|
|
||||||
this.installerJsonPriority = priority;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public JsonObject getInstallerJson() {
|
public JsonObject getInstallerJson() {
|
||||||
|
|
|
@ -27,15 +27,12 @@ package net.fabricmc.loom.util;
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.HashSet;
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.Set;
|
|
||||||
|
|
||||||
import com.google.gson.JsonObject;
|
import com.google.gson.JsonObject;
|
||||||
import org.gradle.api.Project;
|
import org.gradle.api.Project;
|
||||||
import org.gradle.api.artifacts.Configuration;
|
import org.gradle.api.artifacts.Configuration;
|
||||||
import org.gradle.api.artifacts.Dependency;
|
|
||||||
import org.gradle.api.artifacts.ExternalModuleDependency;
|
import org.gradle.api.artifacts.ExternalModuleDependency;
|
||||||
import org.gradle.api.artifacts.repositories.MavenArtifactRepository;
|
import org.gradle.api.artifacts.repositories.MavenArtifactRepository;
|
||||||
|
|
||||||
|
@ -129,23 +126,20 @@ public class LoomDependencyManager {
|
||||||
|
|
||||||
if (extension.getInstallerJson() == null) {
|
if (extension.getInstallerJson() == null) {
|
||||||
//If we've not found the installer JSON we've probably skipped remapping Fabric loader, let's go looking
|
//If we've not found the installer JSON we've probably skipped remapping Fabric loader, let's go looking
|
||||||
project.getLogger().info("Didn't find installer JSON, searching through modCompileClasspath");
|
project.getLogger().info("Searching through modCompileClasspath for installer JSON");
|
||||||
Configuration configuration = project.getConfigurations().getByName(Constants.MOD_COMPILE_CLASSPATH);
|
final Configuration configuration = project.getConfigurations().getByName(Constants.MOD_COMPILE_CLASSPATH);
|
||||||
|
|
||||||
Set<File> seenFiles = new HashSet<>();
|
for (File input : configuration.resolve()) {
|
||||||
|
JsonObject jsonObject = ModProcessor.readInstallerJson(input, project);
|
||||||
|
|
||||||
for (Dependency dependency : configuration.getDependencies()) {
|
if (jsonObject != null) {
|
||||||
DependencyInfo info = DependencyInfo.create(project, dependency, configuration);
|
if (extension.getInstallerJson() != null) {
|
||||||
|
project.getLogger().info("Found another installer JSON in, ignoring it! " + input);
|
||||||
for (File input : info.resolve()) {
|
continue;
|
||||||
if (seenFiles.add(input)) {
|
|
||||||
ModProcessor.readInstallerJson(input, project);
|
|
||||||
|
|
||||||
if (extension.getInstallerJson() != null) {
|
|
||||||
project.getLogger().info("Found installer JSON in " + info);
|
|
||||||
break; //Found it, probably don't need to look any further
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
project.getLogger().info("Found installer JSON in " + input);
|
||||||
|
extension.setInstallerJson(jsonObject);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -141,8 +141,6 @@ public class ModCompileRemapper {
|
||||||
} else {
|
} else {
|
||||||
project.getLogger().info(output.getName() + " is up to date with " + input.getName());
|
project.getLogger().info(output.getName() + " is up to date with " + input.getName());
|
||||||
}
|
}
|
||||||
|
|
||||||
ModProcessor.acknowledgeMod(input, output, project, config);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private static File findSources(DependencyHandler dependencies, ResolvedArtifact artifact) {
|
private static File findSources(DependencyHandler dependencies, ResolvedArtifact artifact) {
|
||||||
|
|
|
@ -73,10 +73,6 @@ public class ModProcessor {
|
||||||
stripNestedJars(output);
|
stripNestedJars(output);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void acknowledgeMod(File input, File output, Project project, Configuration config) {
|
|
||||||
readInstallerJson(input, project);
|
|
||||||
}
|
|
||||||
|
|
||||||
private static void handleNestedJars(File input, Project project, Configuration config) throws IOException {
|
private static void handleNestedJars(File input, Project project, Configuration config) throws IOException {
|
||||||
JarFile jarFile = new JarFile(input);
|
JarFile jarFile = new JarFile(input);
|
||||||
JarEntry modJsonEntry = jarFile.getJarEntry("fabric.mod.json");
|
JarEntry modJsonEntry = jarFile.getJarEntry("fabric.mod.json");
|
||||||
|
@ -187,7 +183,7 @@ public class ModProcessor {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void readInstallerJson(File file, Project project) {
|
static JsonObject readInstallerJson(File file, Project project) {
|
||||||
try {
|
try {
|
||||||
LoomGradleExtension extension = project.getExtensions().getByType(LoomGradleExtension.class);
|
LoomGradleExtension extension = project.getExtensions().getByType(LoomGradleExtension.class);
|
||||||
String launchMethod = extension.getLoaderLaunchMethod();
|
String launchMethod = extension.getLoaderLaunchMethod();
|
||||||
|
@ -211,7 +207,7 @@ public class ModProcessor {
|
||||||
priority++;
|
priority++;
|
||||||
|
|
||||||
if (entry == null) {
|
if (entry == null) {
|
||||||
return;
|
return null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -221,9 +217,10 @@ public class ModProcessor {
|
||||||
}
|
}
|
||||||
|
|
||||||
JsonObject jsonObject = GSON.fromJson(jsonStr, JsonObject.class);
|
JsonObject jsonObject = GSON.fromJson(jsonStr, JsonObject.class);
|
||||||
extension.setInstallerJson(jsonObject, priority);
|
return jsonObject;
|
||||||
} catch (IOException e) {
|
} catch (IOException e) {
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
}
|
}
|
||||||
|
return null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue