From 186b09518b973a3a09634887a724cf729115e2bc Mon Sep 17 00:00:00 2001 From: Juuxel <6596629+Juuxel@users.noreply.github.com> Date: Tue, 28 Jul 2020 00:44:31 +0300 Subject: [PATCH] Revert "Try using SpecialSource directly instead of going through ForgeGradle" This reverts commit 3f9c6978. While this could work in theory, I'd also have to reimplement and run the ForgeGradle jar stripping function myself. Delegating the work to ForgeGradle is simple enough for now, though it limits Loom to Gradle 5. --- build.gradle | 2 +- .../loom/providers/MinecraftProvider.java | 27 +++++++++++++++---- 2 files changed, 23 insertions(+), 6 deletions(-) diff --git a/build.gradle b/build.gradle index 4c259f69..23a98b65 100644 --- a/build.gradle +++ b/build.gradle @@ -74,7 +74,7 @@ dependencies { implementation ('org.cadixdev:lorenz:0.5.3') implementation ('org.cadixdev:lorenz-asm:0.5.3') implementation ('org.cadixdev:atlas:0.2.0') - implementation ('net.md-5:SpecialSource:1.8.6') + implementation ('net.minecraftforge.gradle:ForgeGradle:3.0.179') // Testing testImplementation(gradleTestKit()) diff --git a/src/main/java/net/fabricmc/loom/providers/MinecraftProvider.java b/src/main/java/net/fabricmc/loom/providers/MinecraftProvider.java index 61f1ef04..b217bccb 100644 --- a/src/main/java/net/fabricmc/loom/providers/MinecraftProvider.java +++ b/src/main/java/net/fabricmc/loom/providers/MinecraftProvider.java @@ -47,8 +47,9 @@ import com.google.common.collect.ImmutableMap; import com.google.common.io.Files; import com.google.gson.Gson; import com.google.gson.GsonBuilder; -import net.md_5.specialsource.SpecialSource; import net.minecraftforge.binarypatcher.ConsoleTool; +import net.minecraftforge.gradle.mcp.util.MCPRuntime; +import net.minecraftforge.gradle.mcp.util.MCPWrapper; import org.cadixdev.atlas.Atlas; import org.cadixdev.bombe.asm.jar.JarEntryRemappingTransformer; import org.cadixdev.lorenz.MappingSet; @@ -236,10 +237,26 @@ public class MinecraftProvider extends DependencyProvider { } private void createSrgJars(Logger logger) throws Exception { - logger.lifecycle(":remapping minecraft (SpecialSource, official -> srg)"); - String mappings = getExtension().getMcpConfigProvider().getSrg().getAbsolutePath(); - SpecialSource.main(new String[] { "--in-jar", minecraftClientJar.getAbsolutePath(), "--out-jar", minecraftClientSrgJar.getAbsolutePath(), "--srg-in", mappings }); - SpecialSource.main(new String[] { "--in-jar", minecraftServerJar.getAbsolutePath(), "--out-jar", minecraftServerSrgJar.getAbsolutePath(), "--srg-in", mappings }); + logger.lifecycle(":remapping minecraft (MCP, official -> srg)"); + + McpConfigProvider volde = getExtension().getMcpConfigProvider(); + File root = new File(getExtension().getUserCache(), "mcp_root"); + root.mkdirs(); + MCPWrapper wrapper = new MCPWrapper(volde.getMcp(), root); + + // Client + { + MCPRuntime runtime = wrapper.getRuntime(getProject(), "client"); + File output = runtime.execute(logger, "rename"); + Files.copy(output, minecraftClientSrgJar); + } + + // Server + { + MCPRuntime runtime = wrapper.getRuntime(getProject(), "server"); + File output = runtime.execute(logger, "rename"); + Files.copy(output, minecraftServerSrgJar); + } } private void injectForgeClasses(Logger logger) throws IOException {