diff --git a/gradle/runtime.libs.versions.toml b/gradle/runtime.libs.versions.toml index 8befb1d7..d1e4b11c 100644 --- a/gradle/runtime.libs.versions.toml +++ b/gradle/runtime.libs.versions.toml @@ -16,8 +16,9 @@ javax-annotations = "3.0.2" forge-runtime = "2.0.9" access-transformers = "3.0.1" access-transformers-new = "8.0.5" +access-transformers-neo = "10.0.2" unprotect = "1.2.0" -asm = "9.3" +asm = "9.7" union-relauncher = "1.0.0" access-transformers-log4j = "2.17.1" @@ -41,6 +42,7 @@ naming-service = { module = "dev.architectury:architectury-naming-service", vers mcp-annotations = { module = "dev.architectury:mcp-annotations", version.ref = "forge-runtime" } access-transformers = { module = "net.minecraftforge:accesstransformers", version.ref = "access-transformers" } access-transformers-new = { module = "net.minecraftforge:accesstransformers", version.ref = "access-transformers-new" } +access-transformers-neo = { module = "net.neoforged.accesstransformers:at-cli", version.ref = "access-transformers-neo" } unprotect = { module = "io.github.juuxel:unprotect", version.ref = "unprotect" } asm = { module = "org.ow2.asm:asm", version.ref = "asm" } union-relauncher = { module = "io.github.juuxel:union-relauncher", version.ref = "union-relauncher" } diff --git a/src/main/java/net/fabricmc/loom/configuration/accesstransformer/AccessTransformerJarProcessor.java b/src/main/java/net/fabricmc/loom/configuration/accesstransformer/AccessTransformerJarProcessor.java index f7bbcc59..1f8f9992 100644 --- a/src/main/java/net/fabricmc/loom/configuration/accesstransformer/AccessTransformerJarProcessor.java +++ b/src/main/java/net/fabricmc/loom/configuration/accesstransformer/AccessTransformerJarProcessor.java @@ -55,6 +55,7 @@ import net.fabricmc.loom.api.processor.MinecraftJarProcessor; import net.fabricmc.loom.api.processor.ProcessorContext; import net.fabricmc.loom.api.processor.SpecContext; import net.fabricmc.loom.build.IntermediaryNamespaces; +import net.fabricmc.loom.configuration.providers.minecraft.MinecraftVersionMeta; import net.fabricmc.loom.util.Constants; import net.fabricmc.loom.util.DependencyDownloader; import net.fabricmc.loom.util.ExceptionUtil; @@ -157,9 +158,11 @@ public class AccessTransformerJarProcessor implements MinecraftJarProcessor { - spec.getMainClass().set("net.minecraftforge.accesstransformer.TransformerProcessor"); + spec.getMainClass().set(mainClass); spec.setArgs(args); spec.setClasspath(classpath); }).rethrowFailure().assertNormalExitValue(); } + private static LoomVersions chooseAccessTransformer(Project project) { + LoomGradleExtension extension = LoomGradleExtension.get(project); + boolean serverBundleMetadataPresent = extension.getMinecraftProvider().getServerBundleMetadata() != null; + + if (!serverBundleMetadataPresent) { + return LoomVersions.ACCESS_TRANSFORMERS; + } else if (extension.isNeoForge()) { + MinecraftVersionMeta.JavaVersion javaVersion = extension.getMinecraftProvider().getVersionInfo().javaVersion(); + + if (javaVersion != null && javaVersion.majorVersion() >= 21) { + return LoomVersions.ACCESS_TRANSFORMERS_NEO; + } + } + + return LoomVersions.ACCESS_TRANSFORMERS_NEW; + } + @FunctionalInterface public interface AccessTransformerConfiguration { void apply(List args) throws IOException;