diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 29f24894..614c5fbd 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -4,6 +4,9 @@ on: branches: [ "**" ] tags-ignore: [ "**" ] pull_request: + release: + types: [ published ] + jobs: build: # Only run on PRs if the source branch is on someone else's repo @@ -12,15 +15,13 @@ jobs: steps: - name: "checkout git repository" uses: actions/checkout@v4 - - name: "validate gradle wrapper" - uses: gradle/actions/wrapper-validation@v3 - name: "setup jdk" uses: actions/setup-java@v4 with: distribution: 'temurin' java-version: 21 - name: "setup gradle" - uses: gradle/actions/setup-gradle@v3 + uses: gradle/actions/setup-gradle@v4 # gradle-build-action doesn't support caching files in the project dir - name: "cache project local caches" uses: actions/cache@v4 @@ -34,6 +35,13 @@ jobs: run: ./installConcurrentUtil.sh - name: "execute gradle build" run: ./gradlew build + - name: Publish (Pre-)Release to Modrinth + if: "${{ env.STATUS == 'release' && github.event_name == 'release' }}" + run: ./gradlew :moonrise-fabric:publishMods :moonrise-neoforge:publishMods + env: + MODRINTH_TOKEN: "${{ secrets.MODRINTH_TOKEN }}" + CURSEFORGE_TOKEN: "${{ secrets.CURSEFORGE_TOKEN }}" + RELEASE_NOTES: "${{ github.event.release.body }}" - name: "upload artifacts" uses: actions/upload-artifact@v4 with: diff --git a/build.gradle b/build.gradle index c53cbc79..4bb123bf 100644 --- a/build.gradle +++ b/build.gradle @@ -1,5 +1,8 @@ +import me.modmuss50.mpp.ReleaseType + plugins { id("xyz.jpenilla.quiet-architectury-loom") + id("me.modmuss50.mod-publish-plugin") version "0.7.2" apply false } /* @@ -97,6 +100,30 @@ subprojects { ideConfigGenerated true // property "mixin.debug", "true" } + + plugins.apply("me.modmuss50.mod-publish-plugin") + + publishMods { + file = remapJar.archiveFile + if (project.version.contains("-beta.")) { + type = ReleaseType.BETA + } else { + type = ReleaseType.STABLE + } + changelog = providers.environmentVariable("RELEASE_NOTES") + + modrinth { + projectId = "KOHu7RCS" + accessToken = providers.environmentVariable("MODRINTH_TOKEN") + minecraftVersions = [rootProject.minecraft_version] + } + + curseforge { + projectId = "1096335" + accessToken = providers.environmentVariable("CURSEFORGE_TOKEN") + minecraftVersions = [rootProject.minecraft_version] + } + } } loom.runs.all { diff --git a/fabric/build.gradle b/fabric/build.gradle index e6c7cbfb..d09dffd9 100644 --- a/fabric/build.gradle +++ b/fabric/build.gradle @@ -45,6 +45,25 @@ shadowJar { relocate 'org.yaml.snakeyaml', 'ca.spottedleaf.moonrise.libs.org.yaml.snakeyaml' } +publishMods { + modLoaders = ["fabric"] + + modrinth { + incompatible( + "notenoughcrashes", + "starlight", + "c2me-fabric" + ) + } + curseforge { + incompatible( + "not-enough-crashes", + "starlight", + "c2me-fabric" + ) + } +} + // Setup a run with lithium for compatibility testing sourceSets.create("lithium") configurations.create("lithium") diff --git a/neoforge/build.gradle b/neoforge/build.gradle index 5f284578..8f463b61 100644 --- a/neoforge/build.gradle +++ b/neoforge/build.gradle @@ -46,3 +46,24 @@ shadowJar { } Aw2At.setup(getProject(), tasks.remapJar) + +publishMods { + modLoaders = ["neoforge"] + + modrinth { + incompatible( + "notenoughcrashes", + "starlight-forge", + "canary", + "radium" + ) + } + curseforge { + incompatible( + "not-enough-crashes-forge", + "starlight-forge", + "canary", + "radium-reforged" + ) + } +} diff --git a/neoforge/src/main/resources/META-INF/neoforge.mods.toml b/neoforge/src/main/resources/META-INF/neoforge.mods.toml index 68097c67..165367a1 100644 --- a/neoforge/src/main/resources/META-INF/neoforge.mods.toml +++ b/neoforge/src/main/resources/META-INF/neoforge.mods.toml @@ -28,6 +28,10 @@ versionRange = "[1.21,1.21.2)" ordering = "NONE" side = "BOTH" +[[dependencies.moonrise]] +modId = "notenoughcrashes" +type = "incompatible" + [[dependencies.moonrise]] modId = "starlight" type = "incompatible"