diff --git a/build.gradle b/build.gradle index 7e465dba..78e8301b 100644 --- a/build.gradle +++ b/build.gradle @@ -160,7 +160,6 @@ dependencies { compileOnly libs.kotlin.gradle.plugin // Forge patches - implementation libs.forge.installer.tools implementation libs.lorenz implementation libs.mcinjector implementation libs.opencsv diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index bf91e325..463a3fae 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -19,7 +19,6 @@ checkstyle = "10.26.1" codenarc = "3.6.0" # Architectury libraries -forge-installer-tools = "1.2.0" lorenz = "0.5.3" mcinjector = "3.8.0" opencsv = "5.4" @@ -54,7 +53,6 @@ kotlin-gradle-plugin = { module = "org.jetbrains.kotlin:kotlin-gradle-plugin", v kotlin-metadata = { module = "org.jetbrains.kotlin:kotlin-metadata-jvm", version.ref = "kotlin" } # Architectury -forge-installer-tools = { module = "net.minecraftforge:installertools", version.ref = "forge-installer-tools" } lorenz = { module = "org.cadixdev:lorenz", version.ref = "lorenz" } mcinjector = { module = "de.oceanlabs.mcp:mcinjector", version.ref = "mcinjector" } opencsv = { module = "com.opencsv:opencsv", version.ref = "opencsv" } diff --git a/gradle/runtime.libs.versions.toml b/gradle/runtime.libs.versions.toml index 7372a087..a5e58e3d 100644 --- a/gradle/runtime.libs.versions.toml +++ b/gradle/runtime.libs.versions.toml @@ -25,6 +25,7 @@ access-transformers-neo = "10.0.2" unprotect = "1.3.1" asm = "9.7" access-transformers-log4j = "2.17.1" +forge-installer-tools = "1.2.0" [libraries] # Decompilers @@ -55,3 +56,4 @@ access-transformers-neo = { module = "net.neoforged.accesstransformers:at-cli", unprotect = { module = "io.github.juuxel:unprotect", version.ref = "unprotect" } asm = { module = "org.ow2.asm:asm", version.ref = "asm" } access-transformers-log4j-bom = { module = "org.apache.logging.log4j:log4j-bom", version.ref = "access-transformers-log4j" } +forge-installer-tools = { module = "net.minecraftforge:installertools", version.ref = "forge-installer-tools" } diff --git a/src/main/java/dev/architectury/loom/forge/dependency/SrgProvider.java b/src/main/java/dev/architectury/loom/forge/dependency/SrgProvider.java index 51070687..04f4d593 100644 --- a/src/main/java/dev/architectury/loom/forge/dependency/SrgProvider.java +++ b/src/main/java/dev/architectury/loom/forge/dependency/SrgProvider.java @@ -27,17 +27,16 @@ package dev.architectury.loom.forge.dependency; import java.io.BufferedReader; import java.io.File; import java.io.IOException; -import java.io.PrintStream; import java.io.UncheckedIOException; import java.nio.file.Files; import java.nio.file.Path; import java.util.HashMap; import java.util.Map; -import dev.architectury.loom.util.NullOutputStream; +import dev.architectury.loom.forge.tool.ForgeToolValueSource; +import dev.architectury.loom.util.DependencyDownloader; import dev.architectury.loom.util.Stopwatch; import org.gradle.api.Project; -import org.gradle.api.logging.LogLevel; import org.jetbrains.annotations.Nullable; import net.fabricmc.loom.LoomGradleExtension; @@ -47,6 +46,7 @@ import net.fabricmc.loom.configuration.providers.mappings.GradleMappingContext; import net.fabricmc.loom.configuration.providers.mappings.mojmap.MojangMappingLayer; import net.fabricmc.loom.configuration.providers.mappings.mojmap.MojangMappingsSpec; import net.fabricmc.loom.util.Constants; +import net.fabricmc.loom.util.LoomVersions; import net.fabricmc.loom.util.ZipUtils; import net.fabricmc.mappingio.MappingReader; import net.fabricmc.mappingio.MappingVisitor; @@ -57,6 +57,8 @@ import net.fabricmc.mappingio.tree.MappingTree; import net.fabricmc.mappingio.tree.MemoryMappingTree; public class SrgProvider extends DependencyProvider { + private static final String INSTALLER_TOOLS_MAIN_CLASS = "net.minecraftforge.installertools.ConsoleTool"; + private Path srg; private Boolean isTsrgV2; private Path mergedMojangRaw; @@ -84,25 +86,23 @@ public class SrgProvider extends DependencyProvider { if (!Files.exists(mergedMojangRaw) || !Files.exists(mergedMojangTrimmed) || refreshDeps()) { Stopwatch stopwatch = Stopwatch.createStarted(); getProject().getLogger().lifecycle(":merging mappings (InstallerTools, srg + mojmap)"); - PrintStream out = System.out; - PrintStream err = System.err; - - if (getProject().getGradle().getStartParameter().getLogLevel().compareTo(LogLevel.LIFECYCLE) >= 0) { - System.setOut(new PrintStream(NullOutputStream.INSTANCE)); - System.setErr(new PrintStream(NullOutputStream.INSTANCE)); - } Files.deleteIfExists(mergedMojangRaw); - net.minecraftforge.installertools.ConsoleTool.main(new String[] { - "--task", - "MERGE_MAPPING", - "--left", - getSrg().toAbsolutePath().toString(), - "--right", - getMojmapTsrg2(getProject(), getExtension()).toAbsolutePath().toString(), - "--classes", - "--output", - mergedMojangRaw.toAbsolutePath().toString() + Path mojmapTsrg2 = getMojmapTsrg2(getProject(), getExtension()); + ForgeToolValueSource.exec(getProject(), settings -> { + settings.classpath(DependencyDownloader.download(getProject(), LoomVersions.FORGE_INSTALLER_TOOLS.mavenNotation())); + settings.getMainClass().set(INSTALLER_TOOLS_MAIN_CLASS); + settings.args( + "--task", + "MERGE_MAPPING", + "--left", + getSrg().toAbsolutePath().toString(), + "--right", + mojmapTsrg2.toAbsolutePath().toString(), + "--classes", + "--output", + mergedMojangRaw.toAbsolutePath().toString() + ); }); MemoryMappingTree tree = new MemoryMappingTree(); @@ -113,11 +113,6 @@ public class SrgProvider extends DependencyProvider { tree.accept(writer); } - if (getProject().getGradle().getStartParameter().getLogLevel().compareTo(LogLevel.LIFECYCLE) >= 0) { - System.setOut(out); - System.setErr(err); - } - getProject().getLogger().lifecycle(":merged mappings (InstallerTools, srg + mojmap) in " + stopwatch.stop()); } }