Use InstallerTools as external tool instead of library

This cuts down on Loom's direct compiletime dependencies.
This commit is contained in:
Juuz
2025-10-01 01:42:07 +03:00
parent 044eb9161f
commit 2097c83da5
4 changed files with 22 additions and 28 deletions

View File

@@ -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

View File

@@ -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" }

View File

@@ -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" }

View File

@@ -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());
}
}