From c46d1624191d4f3bc0180f10b28bede47c5d1731 Mon Sep 17 00:00:00 2001 From: DAQEM <66999025+DAQEM@users.noreply.github.com> Date: Wed, 18 Feb 2026 19:24:33 +0100 Subject: [PATCH 1/3] chore: improve Gradle setup --- .github/workflows/publish.yml | 20 +- .github/workflows/test.yml | 3 - build.gradle | 67 +++--- buildSrc/src/main/java/NativeTransformer.java | 1 - common/build.gradle | 33 +-- fabric/build.gradle | 185 +---------------- fabric/src/main/resources/fabric.mod.json | 6 +- gradle.properties | 33 ++- gradle/scripts/dependencies.gradle | 21 ++ gradle/scripts/java.gradle | 12 ++ gradle/scripts/maven-publishing.gradle | 21 ++ gradle/scripts/platform.gradle | 101 +++++++++ gradle/scripts/publishing.gradle | 39 ++++ neoforge/build.gradle | 193 +----------------- .../resources/META-INF/neoforge.mods.toml | 6 +- settings.gradle | 8 +- 16 files changed, 275 insertions(+), 474 deletions(-) create mode 100644 gradle/scripts/dependencies.gradle create mode 100644 gradle/scripts/java.gradle create mode 100644 gradle/scripts/maven-publishing.gradle create mode 100644 gradle/scripts/platform.gradle create mode 100644 gradle/scripts/publishing.gradle diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index 98a8a0c..930537d 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -28,15 +28,8 @@ jobs: java-version: '21' distribution: 'temurin' - - name: Set up Python - uses: actions/setup-python@v4 - with: - python-version: '3.8' - - - name: Grant Permissions - run: | - chmod +x gradlew - chmod +x relocate_natives/prepare.sh + - name: Grant Permissions to gradlew + run: chmod +x gradlew - name: Build Jars run: ./gradlew build @@ -59,11 +52,8 @@ jobs: - name: Publish to DAQEM Maven run: ./gradlew publish - - name: Publish to Modrinth - run: ./gradlew modrinth - - - name: Publish to CurseForge - run: ./gradlew curseforge + - name: Publish to CurseForge and Modrinth + run: ./gradlew publishUnified - name: Publish to GitHub Releases uses: ncipollo/release-action@v1 @@ -72,4 +62,4 @@ jobs: fabric/build/libs/*.jar neoforge/build/libs/*.jar name: ${{ steps.gradle_version.outputs.VERSION_NAME }} - tag: ${{ steps.gradle_version.outputs.VERSION_NAME }} \ No newline at end of file + tag: ${{ steps.gradle_version.outputs.VERSION_NAME }} diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index b436d00..225bec9 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -14,9 +14,6 @@ jobs: runs-on: ubuntu-latest - env: - CURSEFORGE_API_KEY: ${{ secrets.CURSEFORGE_API_KEY }} - steps: - name: Checkout uses: actions/checkout@v3 diff --git a/build.gradle b/build.gradle index 4238339..bc4ba29 100644 --- a/build.gradle +++ b/build.gradle @@ -1,63 +1,46 @@ plugins { + id "java-library" id "dev.architectury.loom" version "1.13-SNAPSHOT" apply false id "architectury-plugin" version "3.4-SNAPSHOT" - id 'com.github.johnrengelman.shadow' apply false + id "com.github.johnrengelman.shadow" apply false + id "me.shedaniel.unified-publishing" version "0.1.+" apply false } architectury { - minecraft = project.minecraft_version -} - -allprojects { - group = rootProject.maven_group - version = rootProject.mod_version - - task printVersionName { - doLast { - println version - } - } + minecraft = rootProject.minecraft_version } subprojects { - apply plugin: 'dev.architectury.loom' - apply plugin: 'architectury-plugin' - apply plugin: 'maven-publish' + apply plugin: "dev.architectury.loom" + apply plugin: "architectury-plugin" + + apply from: rootProject.file("gradle/scripts/java.gradle") + apply from: rootProject.file("gradle/scripts/dependencies.gradle") base { archivesName = rootProject.archives_base_name } - repositories { - maven { - url "https://cursemaven.com" - content { - includeGroup "curse.maven" - } - } - } - - repositories { - maven { url "https://maven.daqem.com/snapshots/" } - maven { url "https://maven.daqem.com/releases" } + loom { + silentMojangMappingsLicense() } dependencies { - minecraft "net.minecraft:minecraft:$rootProject.minecraft_version" - mappings loom.officialMojangMappings() + minecraft "com.mojang:minecraft:${rootProject.minecraft_version}" + mappings loom.layered() { + officialMojangMappings() + parchment("org.parchmentmc.data:parchment-${rootProject.parchment_version}@zip") + } } +} - java { - // Loom will automatically attach sourcesJar to a RemapSourcesJar task and to the "build" task - // if it is present. - // If you remove this line, sources will not be generated. - withSourcesJar() - - sourceCompatibility = JavaVersion.VERSION_21 - targetCompatibility = JavaVersion.VERSION_21 - } +allprojects { + group = rootProject.maven_group + version = rootProject.mod_version - tasks.withType(JavaCompile).configureEach { - it.options.release = 21 + task printVersionName { + doLast { + println version + } } -} +} \ No newline at end of file diff --git a/buildSrc/src/main/java/NativeTransformer.java b/buildSrc/src/main/java/NativeTransformer.java index 8f58e28..e457d66 100644 --- a/buildSrc/src/main/java/NativeTransformer.java +++ b/buildSrc/src/main/java/NativeTransformer.java @@ -8,7 +8,6 @@ import javax.annotation.Nonnull; import java.io.IOException; -import java.io.InputStream; import java.util.*; public class NativeTransformer implements Transformer { diff --git a/common/build.gradle b/common/build.gradle index 8d808e8..d657900 100644 --- a/common/build.gradle +++ b/common/build.gradle @@ -3,35 +3,14 @@ architectury { } loom { - accessWidenerPath = file("src/main/resources/grieflogger.accesswidener") + accessWidenerPath = file("src/main/resources/${rootProject.mod_id}.accesswidener") } +apply from: rootProject.file("gradle/scripts/maven-publishing.gradle") + dependencies { - // We depend on fabric loader here to use the fabric @Environment annotations and get the mixin dependencies - // Do NOT use other classes from fabric loader + // Fabric loader for annotations/mixins (Architectury standard) modImplementation "net.fabricmc:fabric-loader:${rootProject.fabric_loader_version}" - // Remove the next line if you don't want to depend on the API - modApi "dev.architectury:architectury:${rootProject.architectury_version}" - - modImplementation "com.daqem.yamlconfig:yamlconfig-common:${project.config_library_version}" -} - -publishing { - publications { - mavenFabric(MavenPublication) { - groupId = rootProject.maven_group - artifactId = rootProject.archives_base_name + "-common" - from components.java - } - } - - repositories { - maven { - url = project.version.contains('-PR') ? 'https://maven.daqem.com/snapshots' : 'https://maven.daqem.com/releases' - credentials { - username = System.getenv("MAVEN_USER") - password = System.getenv("MAVEN_PASS") - } - } - } + modApi "dev.architectury:architectury:${project.architectury_version}" + modImplementation "com.daqem.yamlconfig:yamlconfig-common:${project.yamlconfig_version}" } \ No newline at end of file diff --git a/fabric/build.gradle b/fabric/build.gradle index 6915d34..f97d2c8 100644 --- a/fabric/build.gradle +++ b/fabric/build.gradle @@ -1,44 +1,26 @@ -plugins { - id "com.github.johnrengelman.shadow" - id "com.matthewprenger.cursegradle" version "1.4.0" - id "com.modrinth.minotaur" version "2.+" -} - architectury { platformSetupLoomIde() fabric() } loom { - //noinspection GroovyAccessibility accessWidenerPath = project(":common").loom.accessWidenerPath } -configurations { - common { - canBeResolved = true - canBeConsumed = false - } - compileClasspath.extendsFrom common - runtimeClasspath.extendsFrom common - developmentFabric.extendsFrom common - - // Files in this configuration will be bundled into your mod using the Shadow plugin. - // Don't use the `shadow` configuration from the plugin itself as it's meant for excluding files. - shadowBundle { - canBeResolved = true - canBeConsumed = false - } -} +apply from: rootProject.file("gradle/scripts/platform.gradle") +apply from: rootProject.file("gradle/scripts/publishing.gradle") +apply from: rootProject.file("gradle/scripts/maven-publishing.gradle") dependencies { modImplementation "net.fabricmc:fabric-loader:${rootProject.fabric_loader_version}" modApi "net.fabricmc.fabric-api:fabric-api:${rootProject.fabric_api_version}" - // Remove the next line if you don't want to depend on the API - modApi "dev.architectury:architectury-fabric:${rootProject.architectury_version}" - common(project(path: ":common", configuration: "namedElements")) { transitive false } - shadowBundle project(path: ":common", configuration: "transformProductionFabric") + common(project(path: ':common', configuration: 'namedElements')) { transitive = false } + shadowBundle project(path: ':common', configuration: 'transformProductionFabric') + + modApi "dev.architectury:architectury-fabric:${project.architectury_version}" + modRuntimeOnly "com.daqem.uilib:uilib-fabric:${project.uilib_version}" + modImplementation "com.daqem.yamlconfig:yamlconfig-fabric:${project.yamlconfig_version}" modImplementation "org.xerial:sqlite-jdbc:${project.sqlite_version}" shadowBundle "org.xerial:sqlite-jdbc:${project.sqlite_version}" @@ -46,154 +28,5 @@ dependencies { modImplementation "com.mysql:mysql-connector-j:${project.mysql_version}" shadowBundle "com.mysql:mysql-connector-j:${project.mysql_version}" - modRuntimeOnly "com.daqem.uilib:uilib-fabric:${project.ui_library_version}" - modImplementation "com.daqem.yamlconfig:yamlconfig-fabric:${project.config_library_version}" - modCompileOnly "me.lucko:fabric-permissions-api:0.3.1" -} - -processResources { - var replaceProperties = [ - "version": project.version, - "mod_id": project.mod_id, - "mod_name": project.mod_name, - "mod_description": project.mod_description, - "mod_author": project.mod_author, - "mod_license": project.mod_license, - "mod_website": project.mod_website, - "mod_repository": project.mod_repository, - - "minecraft_version": project.minecraft_version, - "architectury_version": project.architectury_version, - "config_library_version": project.config_library_version - ] - inputs.properties replaceProperties - - filesMatching(['fabric.mod.json']) { - expand replaceProperties - } -} - -shadowJar { - relocate "org.sqlite", "gl_sqlite", { - exclude "org/sqlite/native/**" - exclude "og/sqlite/util/ProcessRunner.class" - } - - relocate "jdbc:sqlite", "jdbc:gl_sqlite" - - transform(NativeTransformer.class) { - rootDir = project.rootDir - relocateNative "org/sqlite", "gl_sqlite" - relocateNative "org_sqlite", "gl_1sqlite" - } - - relocate "com.mysql", "gl_mysql" - - configurations = [project.configurations.shadowBundle] - archiveClassifier = "fabric-dev-shadow" - - mergeServiceFiles() -} - -remapJar { - injectAccessWidener = true - input.set shadowJar.archiveFile - dependsOn shadowJar - archiveClassifier = null -} - -task renameJarForPublication(type: Zip, dependsOn: remapJar) { - from remapJar.archiveFile.map { zipTree(it) } - archiveExtension = "jar" - metadataCharset "UTF-8" - destinationDirectory = base.libsDirectory - archiveClassifier = project.name -} - - -assemble.dependsOn renameJarForPublication - -sourcesJar { - def commonSources = project(":common").sourcesJar - dependsOn commonSources - from commonSources.archiveFile.map { zipTree(it) } -} - -remapSourcesJar { - archiveClassifier = "fabric-sources" -} - -components.java { - withVariantsFromConfiguration(project.configurations.shadowRuntimeElements) { - skip() - } -} - -publishing { - publications { - mavenFabric(MavenPublication) { - groupId = rootProject.maven_group - artifactId = rootProject.archives_base_name + "-fabric" - from components.java - } - } - - repositories { - maven { - url = project.version.contains('-PR') ? 'https://maven.daqem.com/snapshots' : 'https://maven.daqem.com/releases' - credentials { - username = System.getenv("MAVEN_USER") - password = System.getenv("MAVEN_PASS") - } - } - } -} - -curseforge { - apiKey = System.getenv("CURSEFORGE_API_KEY") - project { - id = project.curse_forge_project_id - releaseType = project.release_type - changelogType = "markdown" - changelog = rootProject.file('changelog.md') - - project.supported_minecraft_versions.split(',').each { version -> - addGameVersion version - } - - addGameVersion "Java 21" - addGameVersion "Fabric" - - relations { - project.curseforge_dependencies.split(',').each { dep -> - requiredDependency dep.trim() - } - } - - mainArtifact(remapJar) { - displayName = "$project.mod_name Fabric $project.minecraft_version - $project.mod_version" - } - - addArtifact(remapSourcesJar) { - } - } -} - -modrinth { - token = System.getenv("MODRINTH_API_KEY") - projectId = project.modrinth_project_id - versionName = "$project.mod_name Fabric $project.minecraft_version - $project.mod_version" - versionNumber = "$project.mod_version" - versionType = "$project.release_type" - uploadFile = remapJar - additionalFiles = [remapSourcesJar] - gameVersions = project.supported_minecraft_versions.split(',').toList() - loaders = ["fabric"] - changelog = rootProject.file('changelog.md').text - dependencies { - project.modrinth_dependencies.split(',').each { dep -> - required.project dep - } - } } \ 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 62716b6..b841e3c 100644 --- a/fabric/src/main/resources/fabric.mod.json +++ b/fabric/src/main/resources/fabric.mod.json @@ -12,7 +12,7 @@ "sources": "${mod_repository}" }, "license": "${mod_license}", - "icon": "assets/grieflogger/icon.png", + "icon": "icon.png", "environment": "*", "entrypoints": { "server": [ @@ -24,9 +24,9 @@ "grieflogger-fabric.mixins.json" ], "depends": { - "fabric": "*", + "fabric": ">=${fabric_api_version}", "minecraft": ">=${minecraft_version}", "architectury": ">=${architectury_version}", - "yamlconfig": ">=${config_library_version}" + "yamlconfig": ">=${yamlconfig_version}" } } \ No newline at end of file diff --git a/gradle.properties b/gradle.properties index 55e280c..78d517b 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,10 +1,11 @@ org.gradle.jvmargs=-Xmx4096M +# Build Settings enabled_platforms=fabric,neoforge + +# Project Info maven_group=com.daqem.grieflogger archives_base_name=grieflogger - -# Project mod_version=19.0.5 mod_id=grieflogger mod_name=GriefLogger @@ -17,31 +18,25 @@ mod_repository=https://github.com/DAQEM/GriefLogger # Publishing supported_minecraft_versions=1.21.11 release_type=release - curse_forge_project_id=435029 -curseforge_dependencies=architectury-api,yaml-config - +curse_forge_dependencies=architectury-api,yaml-config modrinth_project_id=8oGVUFuX modrinth_dependencies=architectury-api,yaml-config -# Minecraft -minecraft_version=1.21.11 - -# Fabric -fabric_loader_version=0.18.3 -fabric_api_version=0.140.0+1.21.11 - -# NeoForge -neoforge_version=21.11.0-beta -neoforge_loader_version=1 - # Dependencies +minecraft_version=1.21.11 +parchment_version=1.21.11:2025.12.20 architectury_version=19.0.1 -config_library_version=19.0.0 +yamlconfig_version=19.0.0 sqlite_version=3.47.2.0 mysql_version=8.4.0 +uilib_version=19.0.2 -# Runtime Only -ui_library_version=19.0.0 +# Fabric +fabric_loader_version=0.18.4 +fabric_api_version=0.141.3+1.21.11 + +# NeoForge +neoforge_version=21.11.38-beta diff --git a/gradle/scripts/dependencies.gradle b/gradle/scripts/dependencies.gradle new file mode 100644 index 0000000..88b3d98 --- /dev/null +++ b/gradle/scripts/dependencies.gradle @@ -0,0 +1,21 @@ +repositories { + mavenCentral() + maven { + name = 'ParchmentMC' + url = 'https://maven.parchmentmc.org' + } + maven { + name = "NeoForged" + url = "https://maven.neoforged.net/releases/" + } + + maven { + name = "DAQEM Studios Snapshot" + url = "https://maven.daqem.com/snapshots" + } + + maven { + name = "DAQEM Studios Release" + url = "https://maven.daqem.com/releases" + } +} \ No newline at end of file diff --git a/gradle/scripts/java.gradle b/gradle/scripts/java.gradle new file mode 100644 index 0000000..95b2f5a --- /dev/null +++ b/gradle/scripts/java.gradle @@ -0,0 +1,12 @@ +apply plugin: "java-library" + +java { + withSourcesJar() + sourceCompatibility = JavaVersion.VERSION_21 + targetCompatibility = JavaVersion.VERSION_21 +} + +tasks.withType(JavaCompile).configureEach { + it.options.release = 21 + it.options.encoding = "UTF-8" +} \ No newline at end of file diff --git a/gradle/scripts/maven-publishing.gradle b/gradle/scripts/maven-publishing.gradle new file mode 100644 index 0000000..9187b3c --- /dev/null +++ b/gradle/scripts/maven-publishing.gradle @@ -0,0 +1,21 @@ +apply plugin: "maven-publish" + +publishing { + publications { + maven(MavenPublication) { + groupId = rootProject.maven_group + artifactId = "${rootProject.archives_base_name}-${project.name}" + from components.java + } + } + + repositories { + maven { + url = project.version.contains('-PR') ? 'https://maven.daqem.com/snapshots' : 'https://maven.daqem.com/releases' + credentials { + username = System.getenv("MAVEN_USER") + password = System.getenv("MAVEN_PASS") + } + } + } +} \ No newline at end of file diff --git a/gradle/scripts/platform.gradle b/gradle/scripts/platform.gradle new file mode 100644 index 0000000..fe95e2b --- /dev/null +++ b/gradle/scripts/platform.gradle @@ -0,0 +1,101 @@ +apply plugin: "com.github.johnrengelman.shadow" + +configurations { + common { + canBeResolved = true + canBeConsumed = false + } + compileClasspath.extendsFrom common + runtimeClasspath.extendsFrom common + + if (project.configurations.findByName("developmentFabric")) { + developmentFabric.extendsFrom common + } + if (project.configurations.findByName("developmentNeoForge")) { + developmentNeoForge.extendsFrom common + } + + shadowBundle { + canBeResolved = true + canBeConsumed = false + } +} + +processResources { + var replaceProperties = [ + "version": project.version, + "mod_id": project.mod_id, + "mod_name": project.mod_name, + "mod_description": project.mod_description, + "mod_author": project.mod_author, + "mod_license": project.mod_license, + "mod_website": project.mod_website, + "mod_repository": project.mod_repository, + "minecraft_version": project.minecraft_version, + "fabric_loader_version": project.fabric_loader_version, + "fabric_api_version": project.fabric_api_version, + "neoforge_version": project.neoforge_version, + "architectury_version": project.architectury_version, + "yamlconfig_version": project.yamlconfig_version + ] + inputs.properties replaceProperties + + filesMatching(['fabric.mod.json', 'META-INF/neoforge.mods.toml']) { + expand replaceProperties + } +} + +shadowJar { + relocate "org.sqlite", "gl_sqlite", { + exclude "org/sqlite/native/**" + exclude "og/sqlite/util/ProcessRunner.class" + } + + relocate "jdbc:sqlite", "jdbc:gl_sqlite" + + transform(NativeTransformer.class) { + rootDir = project.rootDir + relocateNative "org/sqlite", "gl_sqlite" + relocateNative "org_sqlite", "gl_1sqlite" + } + + relocate "com.mysql", "gl_mysql" + + configurations = [project.configurations.shadowBundle] + archiveClassifier = project.name + "-dev-shadow" + + mergeServiceFiles() +} + +remapJar { + injectAccessWidener = true + input.set shadowJar.archiveFile + dependsOn shadowJar + archiveClassifier = null +} + +task renameJarForPublication(type: Zip, dependsOn: remapJar) { + from remapJar.archiveFile.map { zipTree(it) } + archiveExtension = "jar" + metadataCharset "UTF-8" + destinationDirectory = base.libsDirectory + archiveClassifier = project.name +} + +assemble.dependsOn renameJarForPublication + +sourcesJar { + def commonSources = project(":common").sourcesJar + dependsOn commonSources + from commonSources.archiveFile.map { zipTree(it) } +} + +remapSourcesJar { + archiveClassifier = project.name + "-sources" +} + +components.java { + withVariantsFromConfiguration(project.configurations.shadowRuntimeElements) { + skip() + } +} \ No newline at end of file diff --git a/gradle/scripts/publishing.gradle b/gradle/scripts/publishing.gradle new file mode 100644 index 0000000..c35e72b --- /dev/null +++ b/gradle/scripts/publishing.gradle @@ -0,0 +1,39 @@ +apply plugin: "me.shedaniel.unified-publishing" + +unifiedPublishing { + var capitalizedProjectName = project.name == "fabric" ? "Fabric" : "NeoForge" + + project { + displayName = "${project.mod_name} ${capitalizedProjectName} ${project.minecraft_version} - ${project.mod_version}" + version = project.mod_version + changelog = rootProject.file("changelog.md").exists() ? rootProject.file("changelog.md").text : "No changelog provided." + releaseType = project.release_type + gameVersions = rootProject.supported_minecraft_versions.split(",").toList() + gameLoaders = [project.name] + + mainPublication tasks.renameJarForPublication + + var cursetoken = System.getenv("CURSEFORGE_API_KEY") + if (cursetoken != null) { + curseforge { + token = cursetoken + id = rootProject.curse_forge_project_id + gameVersions.addAll "Java 21" + relations { + rootProject.curse_forge_dependencies.split(",").each { depends it } + } + } + } + + var modrinthtoken = System.getenv("MODRINTH_API_KEY") + if (modrinthtoken != null) { + modrinth { + token = modrinthtoken + id = rootProject.modrinth_project_id + relations { + rootProject.modrinth_dependencies.split(",").each { depends it } + } + } + } + } +} \ No newline at end of file diff --git a/neoforge/build.gradle b/neoforge/build.gradle index f710ed2..1404ff0 100644 --- a/neoforge/build.gradle +++ b/neoforge/build.gradle @@ -1,200 +1,29 @@ -plugins { - id "com.github.johnrengelman.shadow" - id 'com.matthewprenger.cursegradle' version '1.4.0' - id "com.modrinth.minotaur" version "2.+" -} - -loom { - accessWidenerPath = project(":common").loom.accessWidenerPath -} - architectury { platformSetupLoomIde() neoForge() } -configurations { - common { - canBeResolved = true - canBeConsumed = false - } - compileClasspath.extendsFrom common - runtimeClasspath.extendsFrom common - developmentNeoForge.extendsFrom common - - // Files in this configuration will be bundled into your mod using the Shadow plugin. - // Don't use the `shadow` configuration from the plugin itself as it's meant for excluding files. - shadowBundle { - canBeResolved = true - canBeConsumed = false - } +loom { + accessWidenerPath = project(":common").loom.accessWidenerPath } -repositories { - maven { - name = 'NeoForged' - url = 'https://maven.neoforged.net/releases' - } -} +apply from: rootProject.file("gradle/scripts/platform.gradle") +apply from: rootProject.file("gradle/scripts/publishing.gradle") +apply from: rootProject.file("gradle/scripts/maven-publishing.gradle") dependencies { - neoForge "net.neoforged:neoforge:$project.neoforge_version" - - modImplementation "dev.architectury:architectury-neoforge:$project.architectury_version" + neoForge "net.neoforged:neoforge:${rootProject.neoforge_version}" - common(project(path: ':common', configuration: 'namedElements')) { transitive false } + common(project(path: ":common", configuration: "namedElements")) { transitive false } shadowBundle project(path: ':common', configuration: 'transformProductionNeoForge') + modApi "dev.architectury:architectury-neoforge:${project.architectury_version}" + modRuntimeOnly "com.daqem.uilib:uilib-neoforge:${project.uilib_version}" + modImplementation "com.daqem.yamlconfig:yamlconfig-neoforge:${project.yamlconfig_version}" + modImplementation "org.xerial:sqlite-jdbc:${project.sqlite_version}" shadowBundle "org.xerial:sqlite-jdbc:${project.sqlite_version}" modImplementation "com.mysql:mysql-connector-j:${project.mysql_version}" shadowBundle "com.mysql:mysql-connector-j:${project.mysql_version}" - - modRuntimeOnly "com.daqem.uilib:uilib-neoforge:${project.ui_library_version}" - modImplementation "com.daqem.yamlconfig:yamlconfig-neoforge:${project.config_library_version}" -} - -processResources { - var replaceProperties = [ - "version": project.version, - "mod_id": project.mod_id, - "mod_name": project.mod_name, - "mod_description": project.mod_description, - "mod_author": project.mod_author, - "mod_license": project.mod_license, - "mod_repository": project.mod_repository, - - "neoforge_loader_version": project.neoforge_loader_version, - "minecraft_version": project.minecraft_version, - "architectury_version": project.architectury_version, - "config_library_version": project.config_library_version, - ] - inputs.properties replaceProperties - - filesMatching(['META-INF/neoforge.mods.toml']) { - expand replaceProperties - } -} - -shadowJar { - relocate "org.sqlite", "gl_sqlite", { - exclude "org/sqlite/native/**" - exclude "og/sqlite/util/ProcessRunner.class" - } - - relocate "jdbc:sqlite", "jdbc:gl_sqlite" - - transform(NativeTransformer.class) { - rootDir = project.rootDir - relocateNative "org/sqlite", "gl_sqlite" - relocateNative "org_sqlite", "gl_1sqlite" - } - - relocate "com.mysql", "gl_mysql" - - configurations = [project.configurations.shadowBundle] - archiveClassifier = "neoforge-dev-shadow" - - mergeServiceFiles() -} - -remapJar { - inputFile.set shadowJar.archiveFile - atAccessWideners.add loom.accessWidenerPath.get().asFile.name - archiveClassifier = null -} - -task renameJarForPublication(type: Zip, dependsOn: remapJar) { - from remapJar.archiveFile.map { zipTree(it) } - archiveExtension = "jar" - metadataCharset "UTF-8" - destinationDirectory = base.libsDirectory - archiveClassifier = project.name -} - -assemble.dependsOn renameJarForPublication - -sourcesJar { - def commonSources = project(":common").sourcesJar - dependsOn commonSources - from commonSources.archiveFile.map { zipTree(it) } -} - -remapSourcesJar { - archiveClassifier = "neoforge-sources" -} - -components.java { - withVariantsFromConfiguration(project.configurations.shadowRuntimeElements) { - skip() - } -} - -publishing { - publications { - mavenNeoForge(MavenPublication) { - groupId = rootProject.maven_group - artifactId = rootProject.archives_base_name + "-neoforge" - from components.java - } - } - - repositories { - maven { - url = project.version.contains('-PR') ? 'https://maven.daqem.com/snapshots' : 'https://maven.daqem.com/releases' - credentials { - username = System.getenv("MAVEN_USER") - password = System.getenv("MAVEN_PASS") - } - } - } -} - -curseforge { - apiKey = System.getenv("CURSEFORGE_API_KEY") - project { - id = project.curse_forge_project_id - releaseType = project.release_type - changelogType = "markdown" - changelog = rootProject.file('changelog.md') - - project.supported_minecraft_versions.split(',').each { version -> - addGameVersion version - } - - addGameVersion "Java 21" - addGameVersion "NeoForge" - - relations { - project.curseforge_dependencies.split(',').each { dep -> - requiredDependency dep.trim() - } - } - - mainArtifact(remapJar) { - displayName = "$project.mod_name NeoForge $project.minecraft_version - $project.mod_version" - } - - addArtifact(remapSourcesJar) { - } - } -} - -modrinth { - token = System.getenv("MODRINTH_API_KEY") - projectId = project.modrinth_project_id - versionName = "$project.mod_name NeoForge $project.minecraft_version - $project.mod_version" - versionNumber = "$project.mod_version" - versionType = "$project.release_type" - uploadFile = remapJar - additionalFiles = [remapSourcesJar] - gameVersions = project.supported_minecraft_versions.split(',').toList() - loaders = ["neoforge"] - changelog = rootProject.file('changelog.md').text - dependencies { - project.modrinth_dependencies.split(',').each { dep -> - required.project dep - } - } } \ 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 a159012..46c4fd2 100644 --- a/neoforge/src/main/resources/META-INF/neoforge.mods.toml +++ b/neoforge/src/main/resources/META-INF/neoforge.mods.toml @@ -1,5 +1,5 @@ modLoader = "javafml" -loaderVersion = "[${neoforge_loader_version},)" +loaderVersion = "[1,)" issueTrackerURL = "${mod_repository}/issues" license = "${mod_license}" @@ -15,7 +15,7 @@ description = "${mod_description}" [[dependencies."${mod_id}"]] modId = "neoforge" type = "required" -versionRange = "[21,)" +versionRange = "[${neoforge_version},)" ordering = "NONE" side = "SERVER" @@ -36,7 +36,7 @@ side = "SERVER" [[dependencies."${mod_id}"]] modId = "yamlconfig" type = "required" -versionRange = "[${config_library_version},)" +versionRange = "[${yamlconfig_version},)" ordering = "AFTER" side = "SERVER" diff --git a/settings.gradle b/settings.gradle index dc4e09d..7510f04 100644 --- a/settings.gradle +++ b/settings.gradle @@ -3,12 +3,14 @@ pluginManagement { maven { url "https://maven.fabricmc.net/" } maven { url "https://maven.architectury.dev/" } maven { url "https://maven.minecraftforge.net/" } + maven { url "https://maven.neoforged.net/releases/" } + maven { url "https://maven.shedaniel.me/" } gradlePluginPortal() } } -include 'common' -include 'fabric' -include 'neoforge' +include("common") +include("fabric") +include("neoforge") rootProject.name = "GriefLogger 1.21.11" From 22ccb6232f4cba4b9f7ef0c49d732c7554e0cb15 Mon Sep 17 00:00:00 2001 From: DAQEM <66999025+DAQEM@users.noreply.github.com> Date: Wed, 18 Feb 2026 19:26:39 +0100 Subject: [PATCH 2/3] fix: publish workflow --- .github/workflows/publish.yml | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index 930537d..9ded439 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -28,8 +28,15 @@ jobs: java-version: '21' distribution: 'temurin' - - name: Grant Permissions to gradlew - run: chmod +x gradlew + - name: Set up Python + uses: actions/setup-python@v4 + with: + python-version: '3.8' + + - name: Grant Permissions + run: | + chmod +x gradlew + chmod +x relocate_natives/prepare.sh - name: Build Jars run: ./gradlew build From 2a4429b91188f7f9da31e9c378006a51121368aa Mon Sep 17 00:00:00 2001 From: DAQEM <66999025+DAQEM@users.noreply.github.com> Date: Thu, 19 Feb 2026 20:52:54 +0100 Subject: [PATCH 3/3] chore: bump version --- LICENSE | 2 +- gradle.properties | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/LICENSE b/LICENSE index 261eeb9..5fd11c6 100644 --- a/LICENSE +++ b/LICENSE @@ -186,7 +186,7 @@ same "printed page" as the copyright notice for easier identification within third-party archives. - Copyright [yyyy] [name of copyright owner] + Copyright 2026 DAQEM Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/gradle.properties b/gradle.properties index 78d517b..19a8bc2 100644 --- a/gradle.properties +++ b/gradle.properties @@ -6,7 +6,7 @@ enabled_platforms=fabric,neoforge # Project Info maven_group=com.daqem.grieflogger archives_base_name=grieflogger -mod_version=19.0.5 +mod_version=19.1.0 mod_id=grieflogger mod_name=GriefLogger mod_description=A mod that logs all player interactions with blocks and entities and stores them in a database. @@ -27,10 +27,10 @@ modrinth_dependencies=architectury-api,yaml-config minecraft_version=1.21.11 parchment_version=1.21.11:2025.12.20 architectury_version=19.0.1 -yamlconfig_version=19.0.0 +yamlconfig_version=19.1.0 sqlite_version=3.47.2.0 mysql_version=8.4.0 -uilib_version=19.0.2 +uilib_version=19.1.0 # Fabric fabric_loader_version=0.18.4