Fix common mixins + Update transformer to 2.0.15

This commit is contained in:
shedaniel
2021-02-19 00:34:11 +08:00
parent 0ef11abbf8
commit 0e88146b08
6 changed files with 36 additions and 45 deletions

View File

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

View File

@@ -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> {
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()

View File

@@ -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<String, Transform>()
@@ -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<String, String> {
public fun properties(): Map<String, String> {
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<File> {
return project.gradle.rootProject.project("common").configurations.getByName("compileClasspath")
// if (transformedLoom) {
// return project.configurations.getByName("architecturyTransformerClasspath")
// }
}
fun transform(name: String, action: Action<Transform>) {
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)

View File

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

View File

@@ -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<String>()
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<JsonObject>(
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()

View File

@@ -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<IMappingProvider> {
val loomExtension = project.extensions.getByType(LoomGradleExtension::class.java)
return loomExtension.allMixinMappings.asSequence().filter(File::exists).map {
TinyUtils.createTinyMappingProvider(
it.toPath(),
"named",
"intermediary"
)
}.toMutableList()
}
}