diff --git a/src/main/kotlin/me/shedaniel/architect/plugin/RemapMCPTask.kt b/src/main/kotlin/me/shedaniel/architect/plugin/RemapMCPTask.kt index a88fcf6..585ae9f 100644 --- a/src/main/kotlin/me/shedaniel/architect/plugin/RemapMCPTask.kt +++ b/src/main/kotlin/me/shedaniel/architect/plugin/RemapMCPTask.kt @@ -187,7 +187,7 @@ modId = "$fakeModId" private fun fixMixins(output: File) { val loomExtension = project.extensions.getByType(LoomGradleExtension::class.java) val gson = GsonBuilder().setPrettyPrinting().disableHtmlEscaping().create() - val mixinConfigs = mutableMapOf() + val mixinConfigs = mutableListOf() val refmap = loomExtension.getRefmapName() ZipUtil.iterate(output) { stream, entry -> if (!entry.isDirectory && entry.name.endsWith(".json") && @@ -201,9 +201,7 @@ modId = "$fakeModId" val hasClient = json.has("client") && json["client"].isJsonArray val hasServer = json.has("server") && json["server"].isJsonArray if (json.has("package") && (hasMixins || hasClient || hasServer)) { - mixinConfigs[entry.name] = json.deepCopy().also { - it.addProperty("refmap", refmap) - } + mixinConfigs.add(entry.name) } } } @@ -211,14 +209,11 @@ modId = "$fakeModId" } } } - ZipUtil.replaceEntries(output, mixinConfigs.entries.map { (path, obj) -> - ByteSource(path, gson.toJson(obj).toByteArray()) - }.toTypedArray()) if (mixinConfigs.isNotEmpty()) { if (ZipUtil.containsEntry(output, "META-INF/MANIFEST.MF")) { ZipUtil.transformEntry(output, "META-INF/MANIFEST.MF") { input, zipEntry, out -> val manifest = Manifest(input) - manifest.mainAttributes.putValue("MixinConfigs", mixinConfigs.keys.joinToString(",")) + manifest.mainAttributes.putValue("MixinConfigs", mixinConfigs.joinToString(",")) out.putNextEntry(ZipEntry(zipEntry.name)) manifest.write(out) out.closeEntry() diff --git a/src/main/kotlin/me/shedaniel/architect/plugin/TransformTask.kt b/src/main/kotlin/me/shedaniel/architect/plugin/TransformTask.kt index 9a6f0b2..5a6f1b9 100644 --- a/src/main/kotlin/me/shedaniel/architect/plugin/TransformTask.kt +++ b/src/main/kotlin/me/shedaniel/architect/plugin/TransformTask.kt @@ -4,6 +4,8 @@ package me.shedaniel.architect.plugin import me.shedaniel.architect.plugin.utils.GradleSupport import me.shedaniel.architect.plugin.utils.Transform +import net.fabricmc.loom.LoomGradleExtension +import net.fabricmc.loom.util.MixinRefmapHelper import org.gradle.api.file.RegularFileProperty import org.gradle.api.tasks.TaskAction import org.gradle.jvm.tasks.Jar @@ -19,5 +21,10 @@ open class TransformTask : Jar() { project.logger.lifecycle(":transforming " + input.fileName + " => " + output.fileName) Transform.transform(input, output, transformExpectPlatform()) + + val loomExtension = project.extensions.getByType(LoomGradleExtension::class.java) + if (MixinRefmapHelper.addRefmapName(loomExtension.getRefmapName(), loomExtension.mixinJsonVersion, output)) { + project.logger.debug("Transformed mixin reference maps in output JAR!") + } } } \ No newline at end of file