diff --git a/gradle.properties b/gradle.properties index 9ddadd4..a92f12d 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,4 +1,4 @@ kotlin.code.style=official loom_version=0.6.67 -transformer_version=2.0.13 +transformer_version=2.0.15 base_version=3.0 \ No newline at end of file diff --git a/src/main/kotlin/me/shedaniel/architect/plugin/ArchitectPlugin.kt b/src/main/kotlin/me/shedaniel/architect/plugin/ArchitectPlugin.kt index ab40811..5867673 100644 --- a/src/main/kotlin/me/shedaniel/architect/plugin/ArchitectPlugin.kt +++ b/src/main/kotlin/me/shedaniel/architect/plugin/ArchitectPlugin.kt @@ -1,7 +1,6 @@ package me.shedaniel.architect.plugin import me.shedaniel.architect.plugin.transformers.AddRefmapName -import me.shedaniel.architect.plugin.transformers.RemapMixinVariables import me.shedaniel.architectury.transformer.transformers.* import net.fabricmc.loom.util.LoggerFilter import org.gradle.api.Plugin @@ -50,18 +49,17 @@ class ArchitectPlugin : Plugin { project.tasks.register("transformProductionFabric", TransformingTask::class.java) { it.group = "Architectury" - it += RemapMixinVariables(project) + it += RemapMixinVariables() it += TransformExpectPlatform() it += RemapInjectables() - it += AddRefmapName(project) + it += AddRefmapName() } project.tasks.register("transformProductionForge", TransformingTask::class.java) { it.group = "Architectury" - it += RemapMixinVariables(project) it += TransformExpectPlatform() it += RemapInjectables() - it += AddRefmapName(project) + it += AddRefmapName() it += TransformForgeAnnotations() it += TransformForgeEnvironment() diff --git a/src/main/kotlin/me/shedaniel/architect/plugin/ArchitectPluginExtension.kt b/src/main/kotlin/me/shedaniel/architect/plugin/ArchitectPluginExtension.kt index 0637eaa..4990773 100644 --- a/src/main/kotlin/me/shedaniel/architect/plugin/ArchitectPluginExtension.kt +++ b/src/main/kotlin/me/shedaniel/architect/plugin/ArchitectPluginExtension.kt @@ -17,7 +17,7 @@ import java.util.jar.JarOutputStream import java.util.jar.Manifest open class ArchitectPluginExtension(val project: Project) { - var transformerVersion = "2.0.13" + var transformerVersion = "2.0.15" var minecraft = "" var injectInjectables = true private val transforms = mutableMapOf() @@ -61,7 +61,6 @@ open class ArchitectPluginExtension(val project: Project) { val properties = Properties() properties().forEach { (key, value) -> - System.setProperty(key, value) properties.setProperty(key, value) } propertiesTransformerFile.writer().use { @@ -70,26 +69,35 @@ open class ArchitectPluginExtension(val project: Project) { } } - private fun properties(): Map { + public fun properties(): Map { val loom = project.extensions.findByType(LoomGradleExtension::class.java) ?: return mapOf() return mutableMapOf( BuiltinProperties.MIXIN_MAPPINGS to loom.allMixinMappings.joinToString(File.pathSeparator), BuiltinProperties.INJECT_INJECTABLES to injectInjectables.toString(), BuiltinProperties.UNIQUE_IDENTIFIER to project.projectUniqueIdentifier(), - BuiltinProperties.COMPILE_CLASSPATH to project.configurations.getByName("compileClasspath") - .joinToString(File.pathSeparator), + BuiltinProperties.COMPILE_CLASSPATH to getCompileClasspath().joinToString(File.pathSeparator), BuiltinProperties.MAPPINGS_WITH_SRG to loom.mappingsProvider.tinyMappingsWithSrg.toString(), BuiltinProperties.REFMAP_NAME to loom.refmapName, BuiltinProperties.MCMETA_VERSION to "4" ) } + private fun getCompileClasspath(): Iterable { + return project.gradle.rootProject.project("common").configurations.getByName("compileClasspath") +// if (transformedLoom) { +// return project.configurations.getByName("architecturyTransformerClasspath") +// } + } + fun transform(name: String, action: Action) { transforms.getOrPut(name) { Transform("development" + name.capitalize()).also { transform -> project.configurations.create(transform.configName) if (!transformedLoom) { + project.configurations.create("architecturyTransformerClasspath") { + it.extendsFrom(project.configurations.getByName("compileClasspath")) + } val architecturyJavaAgents = project.configurations.create("architecturyJavaAgents") { project.configurations.getByName("runtimeOnly").extendsFrom(it) } @@ -98,6 +106,7 @@ open class ArchitectPluginExtension(val project: Project) { with(project.dependencies) { add("runtimeOnly", "me.shedaniel:architectury-transformer:$transformerVersion:runtime") add("architecturyJavaAgents", "me.shedaniel:architectury-transformer:$transformerVersion:agent") + add("architecturyTransformerClasspath", "net.fabricmc:fabric-loader:+") } val loom = project.extensions.getByType(LoomGradleExtension::class.java) diff --git a/src/main/kotlin/me/shedaniel/architect/plugin/TransformingTask.kt b/src/main/kotlin/me/shedaniel/architect/plugin/TransformingTask.kt index 649b156..8a32393 100644 --- a/src/main/kotlin/me/shedaniel/architect/plugin/TransformingTask.kt +++ b/src/main/kotlin/me/shedaniel/architect/plugin/TransformingTask.kt @@ -28,6 +28,9 @@ open class TransformingTask : Jar() { val input: Path = this.input.asFile.get().toPath() val output: Path = this.archiveFile.get().asFile.toPath() + project.extensions.getByType(ArchitectPluginExtension::class.java).properties().forEach { (key, value) -> + System.setProperty(key, value) + } Transform.runTransformers(input, output, transformers) } diff --git a/src/main/kotlin/me/shedaniel/architect/plugin/transformers/AddRefmapName.kt b/src/main/kotlin/me/shedaniel/architect/plugin/transformers/AddRefmapName.kt index 5bc9f9d..2df745e 100644 --- a/src/main/kotlin/me/shedaniel/architect/plugin/transformers/AddRefmapName.kt +++ b/src/main/kotlin/me/shedaniel/architect/plugin/transformers/AddRefmapName.kt @@ -1,27 +1,24 @@ package me.shedaniel.architect.plugin.transformers import com.google.gson.JsonObject -import me.shedaniel.architectury.transformer.Transformer -import me.shedaniel.architectury.transformer.TransformerStepSkipped +import me.shedaniel.architectury.transformer.Transform +import me.shedaniel.architectury.transformer.transformers.BuiltinProperties import me.shedaniel.architectury.transformer.transformers.base.AssetEditTransformer import me.shedaniel.architectury.transformer.transformers.base.edit.AssetEditSink import me.shedaniel.architectury.transformer.transformers.base.edit.TransformerContext -import net.fabricmc.loom.LoomGradleExtension +import me.shedaniel.architectury.transformer.util.Logger import net.fabricmc.loom.LoomGradlePlugin -import org.gradle.api.Project import java.io.ByteArrayInputStream -import java.nio.file.Files -import java.nio.file.Path -import java.util.* -class AddRefmapName(private val project: Project) : AssetEditTransformer { +class AddRefmapName : AssetEditTransformer { override fun doEdit(context: TransformerContext, sink: AssetEditSink) { - val loomExtension = project.extensions.getByType(LoomGradleExtension::class.java) - val mixins = mutableSetOf() sink.handle { path, bytes -> // Check JSON file in root directory - if (path.endsWith(".json") && !path.contains("/") && !path.contains("\\")) { + if (path.endsWith(".json") && !Transform.stripLoadingSlash(path) + .contains("/") && !Transform.stripLoadingSlash(path).contains("\\") + ) { + Logger.debug("Checking whether $path is a mixin config.") try { val json = LoomGradlePlugin.GSON.fromJson(ByteArrayInputStream(bytes).reader(), JsonObject::class.java) @@ -39,7 +36,11 @@ class AddRefmapName(private val project: Project) : AssetEditTransformer { } } } - mixins.forEach { path -> + if (mixins.isNotEmpty()) { + Logger.debug("Found mixin config(s): " + java.lang.String.join(",", mixins)) + } + val refmap = System.getProperty(BuiltinProperties.REFMAP_NAME) + mixins.forEach { path -> sink.transformFile(path) { val json: JsonObject = LoomGradlePlugin.GSON.fromJson( ByteArrayInputStream(it).reader(), @@ -47,7 +48,8 @@ class AddRefmapName(private val project: Project) : AssetEditTransformer { ) if (!json.has("refmap")) { - json.addProperty("refmap", loomExtension.getRefmapName()) + Logger.debug("Injecting $refmap to $path") + json.addProperty("refmap", refmap) } LoomGradlePlugin.GSON.toJson(json).toByteArray() diff --git a/src/main/kotlin/me/shedaniel/architect/plugin/transformers/RemapMixinVariables.kt b/src/main/kotlin/me/shedaniel/architect/plugin/transformers/RemapMixinVariables.kt deleted file mode 100644 index 9a23a01..0000000 --- a/src/main/kotlin/me/shedaniel/architect/plugin/transformers/RemapMixinVariables.kt +++ /dev/null @@ -1,21 +0,0 @@ -package me.shedaniel.architect.plugin.transformers - -import me.shedaniel.architectury.transformer.shadowed.impl.net.fabricmc.tinyremapper.IMappingProvider -import me.shedaniel.architectury.transformer.shadowed.impl.net.fabricmc.tinyremapper.TinyUtils -import me.shedaniel.architectury.transformer.transformers.base.TinyRemapperTransformer -import net.fabricmc.loom.LoomGradleExtension -import org.gradle.api.Project -import java.io.File - -class RemapMixinVariables(private val project: Project) : TinyRemapperTransformer { - override fun collectMappings(): MutableList { - val loomExtension = project.extensions.getByType(LoomGradleExtension::class.java) - return loomExtension.allMixinMappings.asSequence().filter(File::exists).map { - TinyUtils.createTinyMappingProvider( - it.toPath(), - "named", - "intermediary" - ) - }.toMutableList() - } -} \ No newline at end of file