From 761fdb76dab87438ae3136f2997f1ddf15d8856e Mon Sep 17 00:00:00 2001 From: chylex <contact@chylex.com> Date: Tue, 2 Jul 2024 18:06:55 +0200 Subject: [PATCH] Switch from separate loader jars to one multiloader jar --- Fabric/build.gradle.kts | 11 +- .../resources/assets/bettercontrols/icon.png | Bin 21941 -> 0 bytes Fabric/src/main/resources/fabric.mod.json | 6 +- .../resources/META-INF/neoforge.mods.toml | 6 +- NeoForge/src/main/resources/icon.png | Bin 21941 -> 0 bytes build.gradle.kts | 107 ++++++++++++------ gradle.properties | 1 + .../resources/META-INF/jarjar/metadata.json | 13 +++ src/multiloader/resources/fabric.mod.json | 34 ++++++ 9 files changed, 138 insertions(+), 40 deletions(-) delete mode 100644 Fabric/src/main/resources/assets/bettercontrols/icon.png delete mode 100644 NeoForge/src/main/resources/icon.png create mode 100644 src/multiloader/resources/META-INF/jarjar/metadata.json create mode 100644 src/multiloader/resources/fabric.mod.json diff --git a/Fabric/build.gradle.kts b/Fabric/build.gradle.kts index 06253a0..eed0938 100644 --- a/Fabric/build.gradle.kts +++ b/Fabric/build.gradle.kts @@ -1,3 +1,5 @@ +import org.gradle.jvm.tasks.Jar + val modId: String by project val minecraftVersion: String by project val fabricVersion: String by project @@ -45,6 +47,11 @@ tasks.jar { exclude("com/terraformersmc/modmenu/") } -tasks.remapJar { - archiveVersion.set(tasks.jar.get().archiveVersion) +tasks.register<Jar>("uncompressedRemapJar") { + group = "fabric" + + from(tasks.remapJar.map { it.outputs.files.map(::zipTree) }) + + archiveClassifier.set("uncompressed") + entryCompression = ZipEntryCompression.STORED // Reduces size of multiloader jar. } diff --git a/Fabric/src/main/resources/assets/bettercontrols/icon.png b/Fabric/src/main/resources/assets/bettercontrols/icon.png deleted file mode 100644 index a31f768115ea33b164455deacbed0bc06f21470d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 21941 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 DzK4Jx diff --git a/Fabric/src/main/resources/fabric.mod.json b/Fabric/src/main/resources/fabric.mod.json index 8931b7c..981905c 100644 --- a/Fabric/src/main/resources/fabric.mod.json +++ b/Fabric/src/main/resources/fabric.mod.json @@ -6,7 +6,7 @@ "version": "${version}", "license": "${license}", - "icon": "assets/bettercontrols/icon.png", + "icon": "assets/${id}/logo.png", "authors": [ "${author}" @@ -18,7 +18,7 @@ "sources": "${sourcesURL}" }, - "environment": "client", + "environment": "${sidesForFabric}", "entrypoints": { "client": [ "chylex.bettercontrols.BetterControlsMod" ], "modmenu": [ "chylex.bettercontrols.compatibility.ModMenuSupport" ] @@ -26,7 +26,7 @@ "mixins": [{ "config": "${id}.mixins.json", - "environment": "client" + "environment": "${sidesForFabric}" }], "depends": { diff --git a/NeoForge/src/main/resources/META-INF/neoforge.mods.toml b/NeoForge/src/main/resources/META-INF/neoforge.mods.toml index b29d45d..36d973f 100644 --- a/NeoForge/src/main/resources/META-INF/neoforge.mods.toml +++ b/NeoForge/src/main/resources/META-INF/neoforge.mods.toml @@ -11,7 +11,7 @@ displayURL = "${sourcesURL}" description = "${description}" authors = "${author}" version = "${version}" -logoFile = "icon.png" +logoFile = "assets/${id}/logo.png" [[mixins]] config = "${id}.mixins.json" @@ -21,11 +21,11 @@ modId = "minecraft" type = "required" versionRange = "[${minimumMinecraftVersion},)" ordering = "NONE" -side = "CLIENT" +side = "${sidesForNeoForge}" [[dependencies.${id}]] modId = "neoforge" type = "required" versionRange = "[${minimumNeoForgeVersion},)" ordering = "NONE" -side = "CLIENT" +side = "${sidesForNeoForge}" diff --git a/NeoForge/src/main/resources/icon.png b/NeoForge/src/main/resources/icon.png deleted file mode 100644 index a31f768115ea33b164455deacbed0bc06f21470d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 21941 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 DzK4Jx diff --git a/build.gradle.kts b/build.gradle.kts index 68ca0e0..c1ae8dd 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -1,6 +1,6 @@ @file:Suppress("ConvertLambdaToReference") -import org.gradle.api.file.DuplicatesStrategy.EXCLUDE +import org.gradle.jvm.tasks.Jar val modId: String by project val modName: String by project @@ -10,6 +10,7 @@ val modVersion: String by project val modLicense: String by project val modSourcesURL: String by project val modIssuesURL: String by project +val modSides: String by project val minecraftVersion: String by project val mixinVersion: String by project @@ -19,7 +20,6 @@ val minimumNeoForgeVersion: String by project val minimumFabricVersion: String by project val modNameStripped = modName.replace(" ", "") -val jarVersion = "$minecraftVersion+v$modVersion" plugins { idea @@ -95,6 +95,33 @@ allprojects { implementation("org.jetbrains:annotations:24.1.0") } + tasks.withType<ProcessResources> { + val (sidesForNeoForge, sidesForFabric) = when (modSides) { + "both" -> Pair("BOTH", "*") + "client" -> Pair("CLIENT", "client") + "server" -> Pair("SERVER", "server") + else -> error("Invalid modSides value: $modSides") + } + + inputs.property("id", modId) + inputs.property("name", modName) + inputs.property("description", modDescription) + inputs.property("version", modVersion) + inputs.property("author", modAuthor) + inputs.property("license", modLicense) + inputs.property("sourcesURL", modSourcesURL) + inputs.property("issuesURL", modIssuesURL) + inputs.property("sidesForNeoForge", sidesForNeoForge) + inputs.property("sidesForFabric", sidesForFabric) + inputs.property("minimumMinecraftVersion", minimumMinecraftVersion) + inputs.property("minimumNeoForgeVersion", minimumNeoForgeVersion) + inputs.property("minimumFabricVersion", minimumFabricVersion) + + from(rootProject.file("logo.png")) { + into("assets/$modId") + } + } + tasks.withType<AbstractArchiveTask>().configureEach { isPreserveFileTimestamps = false isReproducibleFileOrder = true @@ -117,37 +144,16 @@ subprojects { } tasks.processResources { - inputs.property("id", modId) - inputs.property("name", modName) - inputs.property("description", modDescription) - inputs.property("version", modVersion) - inputs.property("author", modAuthor) - inputs.property("license", modLicense) - inputs.property("sourcesURL", modSourcesURL) - inputs.property("issuesURL", modIssuesURL) - inputs.property("minimumMinecraftVersion", minimumMinecraftVersion) - inputs.property("minimumNeoForgeVersion", minimumNeoForgeVersion) - inputs.property("minimumFabricVersion", minimumFabricVersion) - from(rootProject.sourceSets.main.get().resources) { expand(inputs.properties) } } tasks.jar { - archiveVersion.set(jarVersion) - - from(rootProject.file("LICENSE")) + entryCompression = ZipEntryCompression.STORED // Reduces size of multiloader jar. manifest { - attributes( - "Specification-Title" to modId, - "Specification-Vendor" to modAuthor, - "Specification-Version" to "1", - "Implementation-Title" to "$modNameStripped-${project.name}", - "Implementation-Vendor" to modAuthor, - "Implementation-Version" to modVersion, - ) + packageInformation(modId, "$modNameStripped-${project.name}") } } @@ -156,18 +162,55 @@ subprojects { } } -val copyJars = tasks.register<Copy>("copyJars") { +fun Manifest.packageInformation(specificationTitle: String, implementationTitle: String) { + attributes( + "Specification-Title" to specificationTitle, + "Specification-Vendor" to modAuthor, + "Specification-Version" to "1", + "Implementation-Title" to implementationTitle, + "Implementation-Vendor" to modAuthor, + "Implementation-Version" to modVersion, + ) +} + +val multiloaderSources = sourceSets.register("multiloader") + +val multiloaderJar = tasks.register<Jar>("multiloaderJar") { group = "build" - duplicatesStrategy = EXCLUDE - for (subproject in subprojects) { - dependsOn(subproject.tasks.assemble) - from(subproject.base.libsDirectory.file("${subproject.base.archivesName.get()}-$jarVersion.jar")) + archiveBaseName.set(modNameStripped) + archiveVersion.set("$minecraftVersion+v$modVersion") + + destinationDirectory = layout.buildDirectory.dir("dist") + + fun includeJar(project: Project, jarTaskName: String) { + from(project.tasks.named(jarTaskName).map { it.outputs }) { + into("jars") + rename { "$modNameStripped-${project.name}.jar" } + } } - into(project.layout.buildDirectory.dir("dist")) + findProject(":NeoForge")?.let { includeJar(it, "jar") } + findProject(":Fabric")?.let { includeJar(it, "uncompressedRemapJar") } + + from(rootProject.file("LICENSE")) + from(multiloaderSources.map { it.output }) + + manifest { + packageInformation("$modId-multiloader", modNameStripped) + attributes("FMLModType" to "GAMELIBRARY") + } +} + +tasks.named<ProcessResources>("processMultiloaderResources").configure { + inputs.property("group", project.group) + inputs.property("jarPrefix", modNameStripped) + + filesMatching(listOf("fabric.mod.json", "META-INF/jarjar/metadata.json")) { + expand(inputs.properties) + } } tasks.assemble { - finalizedBy(copyJars) + finalizedBy(multiloaderJar) } diff --git a/gradle.properties b/gradle.properties index 7601921..d494e95 100644 --- a/gradle.properties +++ b/gradle.properties @@ -7,6 +7,7 @@ modVersion=1.3.1 modLicense=MPL-2.0 modSourcesURL=https://github.com/chylex/Better-Controls modIssuesURL=https://github.com/chylex/Better-Controls/issues +modSides=client # Dependencies minecraftVersion=1.21 diff --git a/src/multiloader/resources/META-INF/jarjar/metadata.json b/src/multiloader/resources/META-INF/jarjar/metadata.json new file mode 100644 index 0000000..6891596 --- /dev/null +++ b/src/multiloader/resources/META-INF/jarjar/metadata.json @@ -0,0 +1,13 @@ +{ + "jars": [{ + "identifier": { + "group": "${group}", + "artifact": "${id}" + }, + "version": { + "artifactVersion": "${version}", + "range": "[${version}]" + }, + "path": "jars/${jarPrefix}-NeoForge.jar" + }] +} diff --git a/src/multiloader/resources/fabric.mod.json b/src/multiloader/resources/fabric.mod.json new file mode 100644 index 0000000..9b9adbf --- /dev/null +++ b/src/multiloader/resources/fabric.mod.json @@ -0,0 +1,34 @@ +{ + "schemaVersion": 1, + "id": "${id}_multiloader", + "name": "${name} (Multiloader)", + "description": "${description}", + "version": "${version}", + "license": "${license}", + + "icon": "assets/${id}/logo.png", + + "authors": [ + "${author}" + ], + + "contact": { + "homepage": "https://chylex.com", + "issues": "${issuesURL}", + "sources": "${sourcesURL}" + }, + + "environment": "${sidesForFabric}", + + "jars": [{ + "file": "jars/${jarPrefix}-Fabric.jar" + }], + + "custom": { + "modmenu": { + "parent": "${id}", + "badges": [ "library" ], + "update_checker": false + } + } +}