mirror of
https://github.com/architectury/architectury-plugin.git
synced 2026-03-28 04:07:01 -05:00
Fix common mixins + Update transformer to 2.0.15
This commit is contained in:
@@ -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
|
||||
@@ -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()
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
}
|
||||
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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()
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user