aboutsummaryrefslogtreecommitdiff
path: root/buildSrc/src/FabricModTransform.kt
diff options
context:
space:
mode:
authorLinnea Gräf <nea@nea.moe>2025-07-06 12:03:13 +0200
committerLinnea Gräf <nea@nea.moe>2025-07-06 12:03:28 +0200
commit6c3f8333620e61bc8f00aca4d64b117ac7d0149b (patch)
tree1c0993adda21a76385c47f514e7a1d972e841c4f /buildSrc/src/FabricModTransform.kt
parent08c81862afd8689c6eb6f4d8deec8b1ab6ad6d3a (diff)
downloadFirmament-6c3f8333620e61bc8f00aca4d64b117ac7d0149b.tar.gz
Firmament-6c3f8333620e61bc8f00aca4d64b117ac7d0149b.tar.bz2
Firmament-6c3f8333620e61bc8f00aca4d64b117ac7d0149b.zip
build: use composite builds instead of buildSrc
Diffstat (limited to 'buildSrc/src/FabricModTransform.kt')
-rw-r--r--buildSrc/src/FabricModTransform.kt80
1 files changed, 0 insertions, 80 deletions
diff --git a/buildSrc/src/FabricModTransform.kt b/buildSrc/src/FabricModTransform.kt
deleted file mode 100644
index 53affbe..0000000
--- a/buildSrc/src/FabricModTransform.kt
+++ /dev/null
@@ -1,80 +0,0 @@
-import com.github.jengelman.gradle.plugins.shadow.transformers.ResourceTransformer
-import com.github.jengelman.gradle.plugins.shadow.transformers.TransformerContext
-import com.google.gson.Gson
-import com.google.gson.JsonObject
-import com.google.gson.JsonPrimitive
-import java.io.Serializable
-import net.fabricmc.accesswidener.AccessWidenerReader
-import net.fabricmc.accesswidener.AccessWidenerWriter
-import org.apache.tools.zip.ZipEntry
-import org.apache.tools.zip.ZipOutputStream
-import org.gradle.api.file.FileTreeElement
-import org.gradle.api.provider.Property
-import org.gradle.api.tasks.Input
-import org.gradle.api.tasks.Internal
-
-open class FabricModTransform : ResourceTransformer {
-
- enum class AccessWidenerInclusion : Serializable {
- ALL,
- NONE,
- }
-
- @get:Input
- var mergeAccessWideners: AccessWidenerInclusion = AccessWidenerInclusion.ALL
-
- @get:Internal
- internal var mergedFmj: JsonObject? = null
-
- @get:Internal
- internal val foundAccessWideners = AccessWidenerWriter()
-
- @get:Internal
- internal var foundAnyAccessWidener = false
-
- override fun canTransformResource(element: FileTreeElement): Boolean {
- if (mergeAccessWideners == AccessWidenerInclusion.ALL && element.name.endsWith(".accesswidener"))
- return true
- return element.path == "fabric.mod.json"
- }
-
- override fun transform(context: TransformerContext) {
- if (context.path.endsWith(".accesswidener")) {
- foundAnyAccessWidener = true
- // TODO: allow filtering for only those mentioned in a fabric.mod.json, potentially
- context.inputStream.use { stream ->
- AccessWidenerReader(foundAccessWideners).read(stream.bufferedReader())
- }
- return
- }
- // TODO: mixins.json relocations
- val fmj = context.inputStream.use { stream ->
- Gson().fromJson(stream.bufferedReader(), JsonObject::class.java)
- }
- val mergedFmj = this.mergedFmj
- println("${fmj["id"]} is first? ${mergedFmj == null}")
- if (mergedFmj == null) {
- this.mergedFmj = fmj
- } else {
- // TODO: merge stuff
- }
- }
-
- override fun hasTransformedResource(): Boolean {
- return mergedFmj != null
- }
-
- override fun modifyOutputStream(os: ZipOutputStream, preserveFileTimestamps: Boolean) {
- val mergedFmj = mergedFmj!!
- if (foundAnyAccessWidener) {
- val awFile = mergedFmj["accessWidener"]
- require(awFile is JsonPrimitive && awFile.isString)
- os.putNextEntry(ZipEntry(awFile.asString))
- os.write(foundAccessWideners.write())
- os.closeEntry()
- }
- os.putNextEntry(ZipEntry("fabric.mod.json"))
- os.write(mergedFmj.toString().toByteArray())
- os.closeEntry()
- }
-}