diff --git a/src/main/java/net/fabricmc/loom/build/NestedJars.java b/src/main/java/net/fabricmc/loom/build/NestedJars.java index c88c4487..97a0269d 100644 --- a/src/main/java/net/fabricmc/loom/build/NestedJars.java +++ b/src/main/java/net/fabricmc/loom/build/NestedJars.java @@ -99,6 +99,10 @@ public class NestedJars { private static List getContainedJars(Project project) { List fileList = new ArrayList<>(); + if (project.getExtensions().getByType(LoomGradleExtension.class).isForge()) { + return fileList; + } + Configuration configuration = project.getConfigurations().getByName(Constants.Configurations.INCLUDE); ResolvedConfiguration resolvedConfiguration = configuration.getResolvedConfiguration(); Set dependencies = resolvedConfiguration.getFirstLevelModuleDependencies(); diff --git a/src/main/java/net/fabricmc/loom/configuration/CompileConfiguration.java b/src/main/java/net/fabricmc/loom/configuration/CompileConfiguration.java index 1fa48c45..eb816313 100644 --- a/src/main/java/net/fabricmc/loom/configuration/CompileConfiguration.java +++ b/src/main/java/net/fabricmc/loom/configuration/CompileConfiguration.java @@ -118,8 +118,10 @@ public final class CompileConfiguration { extendsFrom(Constants.Configurations.MINECRAFT_DEPENDENCIES, Constants.Configurations.FORGE_DEPENDENCIES, project); } - Configuration includeConfig = project.getConfigurations().maybeCreate(Constants.Configurations.INCLUDE); - includeConfig.setTransitive(false); // Dont get transitive deps + if (!project.getExtensions().getByType(LoomGradleExtension.class).isForge()) { + Configuration includeConfig = project.getConfigurations().maybeCreate(Constants.Configurations.INCLUDE); + includeConfig.setTransitive(false); // Dont get transitive deps + } project.getConfigurations().maybeCreate(Constants.Configurations.MAPPINGS); project.getConfigurations().maybeCreate(Constants.Configurations.MAPPINGS_FINAL); @@ -292,7 +294,7 @@ public final class CompileConfiguration { project1.getTasks().getByName("build").dependsOn(remapJarTask); project.getTasks().withType(RemapJarTask.class).forEach(task -> { - if (task.getAddNestedDependencies().getOrElse(false)) { + if (!extension.isForge() && task.getAddNestedDependencies().getOrElse(false)) { NestedJars.getRequiredTasks(project1).forEach(task::dependsOn); } }); diff --git a/src/main/java/net/fabricmc/loom/task/RemapJarTask.java b/src/main/java/net/fabricmc/loom/task/RemapJarTask.java index bf7ed726..f08ac303 100644 --- a/src/main/java/net/fabricmc/loom/task/RemapJarTask.java +++ b/src/main/java/net/fabricmc/loom/task/RemapJarTask.java @@ -187,36 +187,10 @@ public class RemapJarTask extends Jar { } if (extension.isForge()) { - try (FileSystem fs = FileSystems.newFileSystem(URI.create("jar:" + output.toUri()), ImmutableMap.of("create", false))) { - Path refmapPath = fs.getPath(extension.getRefmapName()); - - if (Files.exists(refmapPath)) { - try (Reader refmapReader = Files.newBufferedReader(refmapPath, StandardCharsets.UTF_8)) { - Gson gson = new GsonBuilder().disableHtmlEscaping().setPrettyPrinting().create(); - JsonObject refmapElement = gson.fromJson(refmapReader, JsonObject.class); - refmapElement = RefmapRemapper.remap(new Remapper() { - ReferenceRemapper remapper = createReferenceRemapper(extension, fromM, toM); - - @Override - @Nullable - public MappingsRemapper remapMappings() { - return className -> remapper; - } - - @Override - @Nullable - public Map.Entry remapMappingsData(String data) { - if (Objects.equals(data, "named:intermediary")) { - return new AbstractMap.SimpleEntry<>("searge", remapMappings()); - } - - return null; - } - }, refmapElement); - Files.delete(refmapPath); - Files.write(refmapPath, gson.toJson(refmapElement).getBytes(StandardCharsets.UTF_8)); - } - } + try { + remapRefmap(extension, output); + } catch (IOException e) { + throw new RuntimeException("Failed to remap refmap jar", e); } } @@ -359,6 +333,14 @@ public class RemapJarTask extends Jar { project.getLogger().debug("Transformed mixin reference maps in output JAR!"); } + if (extension.isForge()) { + try { + remapRefmap(extension, output); + } catch (IOException e) { + throw new RuntimeException("Failed to remap refmap jar", e); + } + } + if (getAddNestedDependencies().getOrElse(false)) { if (NestedJars.addNestedJars(project, output)) { project.getLogger().debug("Added nested jar paths to mod json"); @@ -372,6 +354,40 @@ public class RemapJarTask extends Jar { }); } + private void remapRefmap(LoomGradleExtension extension, Path output) throws IOException { + try (FileSystem fs = FileSystems.newFileSystem(URI.create("jar:" + output.toUri()), ImmutableMap.of("create", false))) { + Path refmapPath = fs.getPath(extension.getRefmapName()); + + if (Files.exists(refmapPath)) { + try (Reader refmapReader = Files.newBufferedReader(refmapPath, StandardCharsets.UTF_8)) { + Gson gson = new GsonBuilder().disableHtmlEscaping().setPrettyPrinting().create(); + JsonObject refmapElement = gson.fromJson(refmapReader, JsonObject.class); + refmapElement = RefmapRemapper.remap(new Remapper() { + ReferenceRemapper remapper = createReferenceRemapper(extension, fromM.get(), toM.get()); + + @Override + @Nullable + public MappingsRemapper remapMappings() { + return className -> remapper; + } + + @Override + @Nullable + public Map.Entry remapMappingsData(String data) { + if (Objects.equals(data, "named:intermediary")) { + return new AbstractMap.SimpleEntry<>("searge", remapMappings()); + } + + return null; + } + }, refmapElement); + Files.delete(refmapPath); + Files.write(refmapPath, gson.toJson(refmapElement).getBytes(StandardCharsets.UTF_8)); + } + } + } + } + private IMappingProvider remapToSrg(LoomGradleExtension extension, IMappingProvider parent, String fromM, String toM) throws IOException { TinyTree mappings = extension.shouldGenerateSrgTiny() ? extension.getMappingsProvider().getMappingsWithSrg() : extension.getMappingsProvider().getMappings();