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 {