From 4c14c796f2eb29ca868c99774e12fa18c22533f6 Mon Sep 17 00:00:00 2001 From: Norbiros Date: Mon, 8 Jul 2024 19:48:29 +0200 Subject: [PATCH] feat: Improved Gradle configuration --- build.gradle | 60 +++++++++++++++---- common/build.gradle | 2 +- fabric/build.gradle | 36 +---------- fabric/src/main/resources/fabric.mod.json | 9 +-- gradle.properties | 23 ++++--- neoforge/build.gradle | 39 +----------- .../resources/META-INF/neoforge.mods.toml | 40 +++++++------ 7 files changed, 94 insertions(+), 115 deletions(-) diff --git a/build.gradle b/build.gradle index 12b0c73..0104b43 100644 --- a/build.gradle +++ b/build.gradle @@ -1,6 +1,9 @@ plugins { + id "java" + id "com.github.johnrengelman.shadow" version "8.1.1" apply false + id "architectury-plugin" version "3.4-SNAPSHOT" - id "dev.architectury.loom" version "1.6-SNAPSHOT" apply false + id "dev.architectury.loom" version "1.7-SNAPSHOT" apply false } architectury { @@ -8,8 +11,39 @@ architectury { } subprojects { + apply plugin: "com.github.johnrengelman.shadow" apply plugin: "dev.architectury.loom" + configurations { + common + shadowCommon // Don't use shadow from the shadow plugin because we don't want IDEA to index this. + compileClasspath.extendsFrom common + runtimeClasspath.extendsFrom common + developmentFabric.extendsFrom common + } + + processResources { + def resourceTargets = [ + "fabric.mod.json", + "META-INF/neoforge.mods.toml", + ] + + def replaceProperties = [ + version : mod_version, + fabric_minecraft_version_range : fabric_minecraft_version_range, + neo_version_range : neo_minecraft_version_range, + fabric_loader_version : fabric_loader_version, + cloth_config_version : cloth_config_version, + modmenu_version : modmenu_version, + ] + + inputs.properties replaceProperties + filesMatching(resourceTargets) { + expand replaceProperties + } + } + + loom { silentMojangMappingsLicense() } @@ -23,8 +57,15 @@ subprojects { } } - repositories { - maven { url "https://maven.neoforged.net/releases/" } + shadowJar { + exclude "architectury.common.json" + + configurations = [project.configurations.shadowCommon] + archiveClassifier.set("dev-shadow") + } + + jar { + archiveClassifier.set("dev") } } @@ -33,18 +74,17 @@ allprojects { apply plugin: "architectury-plugin" apply plugin: "maven-publish" - archivesBaseName = rootProject.archives_base_name + base.archivesName = rootProject.mod_id version = rootProject.mod_version group = rootProject.maven_group repositories { - // Add repositories to retrieve artifacts from in here. - // You should only use this when depending on other mods because - // Loom adds the essential maven repositories to download Minecraft and libraries from automatically. - // See https://docs.gradle.org/current/userguide/declaring_repositories.html - // for more information about repositories. + // Architectury, Cloth Config maven { url "https://maven.shedaniel.me/" } - maven { url "https://maven.terraformersmc.com/"} + // ModMenu + maven { url "https://maven.terraformersmc.com/" } + // NeoForge + maven { url "https://maven.neoforged.net/releases/" } } tasks.withType(JavaCompile) { diff --git a/common/build.gradle b/common/build.gradle index 4585381..1f00e60 100644 --- a/common/build.gradle +++ b/common/build.gradle @@ -12,7 +12,7 @@ dependencies { publishing { publications { mavenCommon(MavenPublication) { - artifactId = rootProject.archives_base_name + artifactId = rootProject.mod_id from components.java } } diff --git a/fabric/build.gradle b/fabric/build.gradle index 231348f..62b742a 100644 --- a/fabric/build.gradle +++ b/fabric/build.gradle @@ -1,20 +1,8 @@ -plugins { - id "com.github.johnrengelman.shadow" version "7.1.2" -} - architectury { platformSetupLoomIde() fabric() } -configurations { - common - shadowCommon // Don't use shadow from the shadow plugin because we don't want IDEA to index this. - compileClasspath.extendsFrom common - runtimeClasspath.extendsFrom common - developmentFabric.extendsFrom common -} - dependencies { modImplementation "net.fabricmc:fabric-loader:${project.fabric_loader_version}" @@ -27,29 +15,12 @@ dependencies { shadowCommon(project(path: ":common", configuration: "transformProductionFabric")) { transitive false } } -processResources { - inputs.property "version", project.version - - filesMatching("fabric.mod.json") { - expand "version": project.version - } -} - -shadowJar { - configurations = [project.configurations.shadowCommon] - archiveClassifier.set("dev-shadow") -} - remapJar { inputFile.set shadowJar.archiveFile dependsOn shadowJar archiveClassifier.set("fabric") } -jar { - archiveClassifier.set("dev") -} - sourcesJar { def commonSources = project(":common").sourcesJar dependsOn commonSources @@ -65,13 +36,8 @@ components.java { publishing { publications { mavenFabric(MavenPublication) { - artifactId = rootProject.archives_base_name + "-fabric" + artifactId = rootProject.mod_id + "-fabric" from components.java } } - - // See https://docs.gradle.org/current/userguide/publishing_maven.html for information on how to set up publishing. - repositories { - // Add repositories to publish to here. - } } \ No newline at end of file diff --git a/fabric/src/main/resources/fabric.mod.json b/fabric/src/main/resources/fabric.mod.json index 51af841..0ceb865 100644 --- a/fabric/src/main/resources/fabric.mod.json +++ b/fabric/src/main/resources/fabric.mod.json @@ -3,7 +3,7 @@ "id": "emojitype", "version": "${version}", "name": "Emoji Type", - "description": "A mod that lets you type minecraft emojis easier!", + "description": "A mod that lets you type Minecraft emojis easier!", "license": "GPL-3.0", "icon": "logo.png", "authors": [ @@ -33,10 +33,11 @@ ], "depends": { - "fabricloader": ">=0.14.21", - "minecraft": ">=1.20" + "fabricloader": "~${fabric_loader_version}", + "minecraft": "${fabric_minecraft_version_range}" }, "suggests": { - "cloth-config2" : ">=10.0.0" + "cloth-config2" : "~${cloth_config_version}", + "modmenu": "~${modmenu_version}" } } diff --git a/gradle.properties b/gradle.properties index b7bc303..e95b210 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,21 +1,26 @@ org.gradle.jvmargs=-Xmx2G -# https://linkie.shedaniel.me/dependencies - -archives_base_name=emoji-type -mod_version=2.2.5+1.21 +mod_id=emoji-type +mod_version=2.2.5-1.21 maven_group=dev.norbiros +minecraft_version = 1.21 -minecraft_version=1.21 -minecraft_version_range=1.21 +# Find versions in Linkie: +# https://linkie.shedaniel.me/dependencies +# Loader specific +fabric_minecraft_version_range=1.21 fabric_loader_version=0.15.11 -yarn_mappings=1.21+build.2 -neoforge_version=21.0.30-beta +yarn_mappings=1.21+build.8 + +neo_minecraft_version_range=[21, 22) +neoforge_version=21.0.76-beta neoforge_yarn_mappings_patch=1.21+build.4 +# Architectury enabled_platforms=fabric,neoforge -architectury_version=13.0.1 +architectury_version=13.0.3 +# Mods versions cloth_config_version=15.0.127 modmenu_version=11.0.1 diff --git a/neoforge/build.gradle b/neoforge/build.gradle index e0375ea..1644b96 100644 --- a/neoforge/build.gradle +++ b/neoforge/build.gradle @@ -1,22 +1,10 @@ -plugins { - id "com.github.johnrengelman.shadow" version "7.1.2" -} - architectury { platformSetupLoomIde() neoForge() } -configurations { - common - shadowCommon // Don't use shadow from the shadow plugin because we don't want IDEA to index this. - compileClasspath.extendsFrom common - runtimeClasspath.extendsFrom common - developmentNeoForge.extendsFrom common -} - dependencies { - neoForge "net.neoforged:neoforge:${rootProject.neoforge_version}" + neoForge "net.neoforged:neoforge:${project.neoforge_version}" implementation "me.shedaniel.cloth:cloth-config-neoforge:${project.cloth_config_version}" @@ -24,30 +12,12 @@ dependencies { shadowCommon(project(path: ":common", configuration: "transformProductionNeoForge")) { transitive = false } } -processResources { - filesMatching("META-INF/neoforge.mods.toml") { - expand "version": project.version - } -} - -shadowJar { - exclude "fabric.mod.json" - exclude "architectury.common.json" - - configurations = [project.configurations.shadowCommon] - archiveClassifier.set("dev-shadow") -} - remapJar { inputFile.set shadowJar.archiveFile dependsOn shadowJar archiveClassifier.set("neoforge") } -jar { - archiveClassifier.set("dev") -} - sourcesJar { def commonSources = project(":common").sourcesJar dependsOn commonSources @@ -63,13 +33,8 @@ components.java { publishing { publications { mavenNeoForge(MavenPublication) { - artifactId = rootProject.archives_base_name + "-neoforge" + artifactId = rootProject.mod_id + "-neoforge" from components.java } } - - // See https://docs.gradle.org/current/userguide/publishing_maven.html for information on how to set up publishing. - repositories { - // Add repositories to publish to here. - } } \ No newline at end of file diff --git a/neoforge/src/main/resources/META-INF/neoforge.mods.toml b/neoforge/src/main/resources/META-INF/neoforge.mods.toml index c0f5040..57166ce 100644 --- a/neoforge/src/main/resources/META-INF/neoforge.mods.toml +++ b/neoforge/src/main/resources/META-INF/neoforge.mods.toml @@ -3,31 +3,33 @@ loaderVersion = "[1,)" license = "GPL-3.0" issueTrackerURL = "https://github.com/Norbiros/emojitype/issues" displayURL = "https://modrinth.com/mod/emoji-type" -#updateJSONURL="https://api.modrinth.com/updates/emoji-type/forge_updates.json" +updateJSONURL="https://api.modrinth.com/updates/emoji-type/forge_updates.json?neoforge=only" logoFile = "logo.png" +logoBlur = false authors = "Cyborgcabbage,Norbiros" [[mods]] - modId = "emojitype" - version = "${version}" - displayName = "Emoji Type" - description=''' - A mod that lets you type minecraft emojis easier! - ''' - credits="Thanks to cyborgcabbage for original mod!" +modId = "emojitype" +version = "${version}" +displayName = "Emoji Type" +description=''' +A mod that lets you type minecraft emojis easier! +''' +credits="Thanks to cyborgcabbage for original mod!" [[mixins]] - config = "emojitype-common.mixins.json" +config = "emojitype-common.mixins.json" [[dependencies.emojitype]] - modId = "neoforge" - type = "required" - versionRange = "[20.6,)" - ordering = "NONE" - side = "BOTH" +modId = "neoforge" +type = "required" +versionRange = "${neo_version_range}" +ordering = "NONE" +side = "BOTH" + [[dependencies.emojitype]] - modId = "cloth_config" - type = "optional" - versionRange = "[14.0.0,)" - ordering = "AFTER" - side = "BOTH" \ No newline at end of file +modId = "cloth_config" +type = "optional" +versionRange = "[${cloth_config_version},)" +ordering = "AFTER" +side = "BOTH" \ No newline at end of file