From d56e09b28177c01b5fe73b366209020a56d650c3 Mon Sep 17 00:00:00 2001 From: shedaniel Date: Thu, 16 Nov 2023 23:42:35 +0800 Subject: [PATCH] Update transformers to 5.2.80 --- gradle.properties | 2 +- .../plugin/ArchitecturyPluginExtension.kt | 38 ++++++++++++++++++- .../dev/architectury/plugin/ModLoader.kt | 8 ++++ 3 files changed, 45 insertions(+), 3 deletions(-) diff --git a/gradle.properties b/gradle.properties index 0e83672..f59aa4d 100644 --- a/gradle.properties +++ b/gradle.properties @@ -5,5 +5,5 @@ loom_version_010Legacy=0.10.0.171 loom_version_010=0.10.0.188 loom_version_011=0.11.0.217 loom_version_11=1.1.313 -transformer_version=5.2.79 +transformer_version=5.2.80 base_version=3.4 \ No newline at end of file diff --git a/src/main/kotlin/dev/architectury/plugin/ArchitecturyPluginExtension.kt b/src/main/kotlin/dev/architectury/plugin/ArchitecturyPluginExtension.kt index 3a70ccc..985686e 100644 --- a/src/main/kotlin/dev/architectury/plugin/ArchitecturyPluginExtension.kt +++ b/src/main/kotlin/dev/architectury/plugin/ArchitecturyPluginExtension.kt @@ -30,7 +30,7 @@ import java.util.jar.JarOutputStream import java.util.jar.Manifest open class ArchitectPluginExtension(val project: Project) { - var transformerVersion = "5.2.79" + var transformerVersion = "5.2.80" var injectablesVersion = "1.0.10" var minecraft = "" private var compileOnly = false @@ -126,6 +126,15 @@ open class ArchitectPluginExtension(val project: Project) { writer.write(file.toPath(), pair.clazz, pair.properties) } } + + if (transform.name == "neoforge") { + project.configurations.getByName("developmentForgeLike").forEach { file -> + (transform.transformers.map { it.apply(file.toPath()) } + ModLoader.applyNeoForgeForgeLikeDev(loom, transform)) + .forEach { pair -> + writer.write(file.toPath(), pair.clazz, pair.properties) + } + } + } } } @@ -150,9 +159,13 @@ open class ArchitectPluginExtension(val project: Project) { fun transform(name: String, action: Action) { transforms.getOrPut(name) { - Transform(project, "development" + (if (name == "neoforge") "NeoForge" else name.capitalize())).also { transform -> + Transform(project, name, "development" + (if (name == "neoforge") "NeoForge" else name.capitalize())).also { transform -> if (!compileOnly) { project.configurations.maybeCreate(transform.devConfigName) + + if (name == "neoforge") { + project.configurations.maybeCreate("developmentForgeLike") + } } action.execute(transform) @@ -437,6 +450,21 @@ open class ArchitectPluginExtension(val project: Project) { }) } as Jar } + + fun forgeLike(action: Action) { + common { + clear() + action.execute(this) + } + } + + @JvmOverloads + fun forgeLike(platforms: Iterable, action: CommonSettings.() -> Unit = {}) { + forgeLike { + it.add(platforms) + action(it) + } + } } private fun File.createEmptyJar() { @@ -446,11 +474,17 @@ private fun File.createEmptyJar() { data class Transform( val project: Project, + val name: String, val devConfigName: String, val transformers: MutableList> = mutableListOf(), var envAnnotationProvider: String = "net.fabricmc:fabric-loader:+", var platformPackage: String? = null, + val extraForgeLikeToNeoForgeRemaps: MutableMap = mutableMapOf(), ) { + fun remapForgeLike(remap: String, to: String) { + extraForgeLikeToNeoForgeRemaps[remap] = to + } + operator fun plusAssign(transformer: TransformerPair) { transformers.add(Function { transformer }) } diff --git a/src/main/kotlin/dev/architectury/plugin/ModLoader.kt b/src/main/kotlin/dev/architectury/plugin/ModLoader.kt index 7459229..599d072 100644 --- a/src/main/kotlin/dev/architectury/plugin/ModLoader.kt +++ b/src/main/kotlin/dev/architectury/plugin/ModLoader.kt @@ -2,7 +2,9 @@ package dev.architectury.plugin import dev.architectury.plugin.loom.LoomInterface import dev.architectury.plugin.transformers.AddRefmapName +import dev.architectury.transformer.shadowed.impl.com.google.gson.Gson import dev.architectury.transformer.transformers.* +import dev.architectury.transformer.util.TransformerPair open class ModLoader( val id: String, @@ -134,6 +136,12 @@ open class ModLoader( get() = "NeoForge" } + fun applyNeoForgeForgeLikeDev(loom: LoomInterface, transform: Transform): List { + val properties = mutableMapOf() + properties[BuiltinProperties.NEOFORGE_LIKE_REMAPS] = transform.extraForgeLikeToNeoForgeRemaps + return listOf(TransformerPair(TransformForgeLikeToNeoForge::class.java, Gson().toJsonTree(properties).asJsonObject)) + } + val QUILT = ModLoader( id = "quilt", transformDevelopment = {