Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
28 commits
Select commit Hold shift + click to select a range
33c6ea3
make it actually work
TropheusJ Apr 7, 2026
21f24a4
move the version catalog to the standard location
TropheusJ Apr 7, 2026
ef783b1
remove multiProjectOptimisation
TropheusJ Apr 7, 2026
5553cf7
add more gradle flags
TropheusJ Apr 7, 2026
e0ee0b7
resolve warnings
TropheusJ Apr 7, 2026
da4a38b
use providers for environment variables
TropheusJ Apr 7, 2026
149f4b2
port buildscript to kts
TropheusJ Apr 7, 2026
3901d83
avoid setting base.archivesName
TropheusJ Apr 7, 2026
20d7aad
set the project java version with toolchains
TropheusJ Apr 7, 2026
ce2d05b
don't set encodings
TropheusJ Apr 7, 2026
cac0581
don't set MaxMetaspaceSize
TropheusJ Apr 7, 2026
1fb8882
don't abbreviate dependencies
TropheusJ Apr 7, 2026
bf5b6db
use a bundle for fabric loader + API
TropheusJ Apr 7, 2026
dedda95
declare repos in the settings file
TropheusJ Apr 7, 2026
0524fde
declare an API dependency on fabric loader + API
TropheusJ Apr 7, 2026
4170a7d
replace Minotaur with Modmuss' Mod Publish Plugin
TropheusJ Apr 7, 2026
6d4e3b4
publish sources as well
TropheusJ Apr 7, 2026
c390a37
update gradle wrapper
TropheusJ Apr 7, 2026
cb010bd
workflow tweaks
TropheusJ Apr 7, 2026
e48585c
bump actions versions
TropheusJ Apr 7, 2026
a6d57e7
add a workflow_dispatch trigger
TropheusJ Apr 7, 2026
87af710
invoke providers before expanding properties
TropheusJ Apr 7, 2026
2f3728e
rename the workflow job
TropheusJ Apr 7, 2026
cebfa15
don't abbreviate metadata expansion keys
TropheusJ Apr 7, 2026
e1e8438
use a dynamic version instead of a changing version for loom
TropheusJ Apr 7, 2026
aa74246
deduplicate compatibleVersions query
TropheusJ Apr 7, 2026
06d9cf1
forgot these
TropheusJ Apr 7, 2026
49ceab6
don't attest on PRs
TropheusJ Apr 7, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
31 changes: 16 additions & 15 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -10,27 +10,31 @@ on:
tags-ignore:
- '**'
pull_request:
workflow_dispatch:

permissions:
id-token: write
attestations: write
contents: write

jobs:
release:
build:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
uses: actions/checkout@v6

- name: JDK Setup
uses: actions/setup-java@v4
uses: actions/setup-java@v5
with:
java-version: 25
distribution: 'temurin'

- name: Gradle Setup
uses: gradle/actions/setup-gradle@v4
# note: setup-gradle v6+ has switched to a proprietary license.
# pin this to v5 for the foreseeable future.
# https://blog.gradle.org/github-actions-for-gradle-v6
uses: gradle/actions/setup-gradle@v5
with:
validate-wrappers: true

Expand All @@ -41,34 +45,31 @@ jobs:
run: ./gradlew build

- name: Attest Build Provenance
uses: actions/attest-build-provenance@v2
if: github.event_name != 'pull_request'
uses: actions/attest@v4
with:
subject-path: 'build/libs/*.jar, !build/libs/*-sources.jar'
subject-path: 'build/libs/*.jar'

- name: Upload Artifacts
uses: actions/upload-artifact@v4
uses: actions/upload-artifact@v7
with:
name: Artifacts
path: |
build/libs/*.jar
!build/libs/*-sources.jar
path: build/libs/*.jar

- name: Maven Publish
if: github.event_name == 'release' && github.event.action == 'published'
run: ./gradlew publish

- name: Github Publish
if: github.event_name == 'release' && github.event.action == 'published'
uses: AButler/upload-release-assets@v2.0
uses: AButler/upload-release-assets@v3.0
with:
files: 'build/libs/*.jar;!build/libs/*-sources.jar'
files: 'build/libs/*.jar'
repo-token: ${{ secrets.GITHUB_TOKEN }}

- name: Modrinth Publish
env:
MODRINTH_TOKEN: ${{ secrets.MODRINTH_TOKEN }}
CHANGELOG: ${{ github.event.release.body }}
if: ${{ github.event_name == 'release' && github.event.action == 'published' && env.MODRINTH_TOKEN != '' }}
run: |
./gradlew --no-configuration-cache modrinth
./gradlew --no-configuration-cache modrinthSyncBody
run: ./gradlew publishMods
91 changes: 0 additions & 91 deletions build.gradle

This file was deleted.

95 changes: 95 additions & 0 deletions build.gradle.kts
Original file line number Diff line number Diff line change
@@ -0,0 +1,95 @@
plugins {
alias(libs.plugins.loom)
alias(libs.plugins.mod.publish)
`maven-publish`
}

val modVersion: String by project
val branchName: String by project
val slug: String by project
val compatibleVersions: String by project

version = "$modVersion+$branchName"

dependencies {
minecraft(libs.minecraft)
api(libs.bundles.fabric)
}

java {
withSourcesJar()
toolchain.languageVersion = JavaLanguageVersion.of(25)
}

tasks.processResources {
val user: String by project
val authors: String by project
val contributors: String by project

val meta: Map<String, Any> = mapOf(
"version" to project.version,
"modId" to providers.gradleProperty("modId"),
"modName" to providers.gradleProperty("modName"),
"modDescription" to providers.gradleProperty("modDescription"),
"homepage" to "https://modrinth.com/mod/$slug",
"issues" to "https://github.com/$user/$slug/issues",
"sources" to "https://github.com/$user/$slug",
"license" to providers.gradleProperty("license"),
"authors" to authors.split(", ").joinToString("\",\n \""),
"contributors" to contributors.split(", ").joinToString("\",\n \""),
"members" to "$authors${if (contributors.isEmpty()) "" else ". Contributions by $contributors."}",
"minecraftVersion" to compatibleVersions.split(", ")[0],
"fabricLoaderVersion" to libs.versions.fabric.loader,
"fabricApiVersion" to libs.versions.fabric.api
)

inputs.properties(meta)

filesMatching(listOf("*.mod.json", "META-INF/*mods.toml")) {
// providers must be invoked manually or else you get stuff like "provider(?)" instead of "mod-id"
expand(meta.mapValues { when (val value = it.value) {
is Provider<*> -> value.get()
else -> value
}})
}
}

publishing {
publications {
register<MavenPublication>("mavenJava") {
from(components["java"])
}
}
}

publishMods {
file = tasks.jar.flatMap { it.archiveFile }
additionalFiles.from(tasks.named("sourcesJar"))
changelog = providers.environmentVariable("CHANGELOG")

type = version.map { when {
it.contains("alpha") -> ALPHA
it.contains("beta") -> BETA
else -> STABLE
}}

val compatibleLoaders: String by project
val readme: RegularFile = rootProject.layout.projectDirectory.file("README.md")

modrinth {
projectId = slug
accessToken = providers.environmentVariable("MODRINTH_TOKEN")

minecraftVersions.addAll(compatibleVersions.split(", "))
modLoaders.addAll(compatibleLoaders.split(", "))

projectDescription = providers.fileContents(readme).asText.map {
"<!--DO NOT EDIT MANUALLY: synced from gh readme-->\n$it"
}

requires {
slug = "fabric-api"
version = libs.versions.fabric.api
}
}
}
16 changes: 11 additions & 5 deletions gradle.properties
Original file line number Diff line number Diff line change
@@ -1,10 +1,16 @@
# Gradle
org.gradle.jvmargs=-Xmx2G -XX:MaxMetaspaceSize=512m -Dfile.encoding=UTF-8
# Allocate additional memory to the Gradle JVM. The default is often not enough to decompile Minecraft.
org.gradle.jvmargs=-Xmx2G

# Various flags to optimize Gradle performance.
org.gradle.parallel=true
org.gradle.caching=true
org.gradle.configureondemand=true
org.gradle.configuration-cache=true
# Loom
fabric.loom.multiProjectOptimisation=true
org.gradle.configuration-cache.parallel=true
org.gradle.configureondemand=true

# Enable all Gradle warnings
org.gradle.warning.mode=all

# Mod Metadata
group=io.github.username
user=username
Expand Down
20 changes: 20 additions & 0 deletions gradle/libs.versions.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
[versions]
loom = "1.15.+"
mod-publish = "1.1.0"

minecraft = "26.1.1"
# https://fabricmc.net/develop/
fabric-loader = "0.18.4"
fabric-api = "0.145.4+26.1.1"

[plugins]
loom = { id = "net.fabricmc.fabric-loom", version.ref = "loom" }
mod-publish = { id = "me.modmuss50.mod-publish-plugin", version.ref = "mod-publish" }

[libraries]
minecraft = { group = "mojang", name = "minecraft", version.ref = "minecraft" }
fabric-loader = { group = "net.fabricmc", name = "fabric-loader", version.ref = "fabric-loader" }
fabric-api = { group = "net.fabricmc.fabric-api", name = "fabric-api", version.ref = "fabric-api" }

[bundles]
fabric = [ "fabric-loader", "fabric-api" ]
Binary file modified gradle/wrapper/gradle-wrapper.jar
Binary file not shown.
2 changes: 1 addition & 1 deletion gradle/wrapper/gradle-wrapper.properties
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-9.3.1-bin.zip
distributionUrl=https\://services.gradle.org/distributions/gradle-9.4.1-bin.zip
networkTimeout=10000
validateDistributionUrl=true
zipStoreBase=GRADLE_USER_HOME
Expand Down
7 changes: 2 additions & 5 deletions gradlew

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

3 changes: 1 addition & 2 deletions gradlew.bat

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

16 changes: 0 additions & 16 deletions libs.versions.toml

This file was deleted.

Loading