Add the updated neoforge AT for J21 & update ASM

This commit is contained in:
shedaniel
2024-04-09 02:03:03 +09:00
parent f669cb3c2b
commit 6508030d45
2 changed files with 26 additions and 4 deletions

View File

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

View File

@@ -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<Acce
}
public static void executeAt(Project project, Path input, Path output, AccessTransformerConfiguration configuration) throws IOException {
boolean serverBundleMetadataPresent = LoomGradleExtension.get(project).getMinecraftProvider().getServerBundleMetadata() != null;
LoomVersions accessTransformer = chooseAccessTransformer(project);
String mainClass = accessTransformer == LoomVersions.ACCESS_TRANSFORMERS_NEO ? "net.neoforged.accesstransformer.cli.TransformerProcessor"
: "net.minecraftforge.accesstransformer.TransformerProcessor";
FileCollection classpath = new DependencyDownloader(project)
.add((serverBundleMetadataPresent ? LoomVersions.ACCESS_TRANSFORMERS_NEW : LoomVersions.ACCESS_TRANSFORMERS).mavenNotation())
.add(accessTransformer.mavenNotation())
.add(LoomVersions.ASM.mavenNotation())
.platform(LoomVersions.ACCESS_TRANSFORMERS_LOG4J_BOM.mavenNotation())
.download();
@@ -172,12 +175,29 @@ public class AccessTransformerJarProcessor implements MinecraftJarProcessor<Acce
configuration.apply(args);
ForgeToolExecutor.exec(project, spec -> {
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<String> args) throws IOException;