Skip to content
Merged
Changes from all commits
Commits
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
95 changes: 95 additions & 0 deletions .github/workflows/modrinth-publish.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,95 @@
name: Publish to Modrinth

# Triggers when you publish a GitHub Release
on:
release:
types: [published]
workflow_dispatch:
inputs:
tag:
description: 'Release tag to publish (e.g. 1.28.0)'
required: true
type: string

jobs:
publish:
runs-on: ubuntu-latest
permissions:
contents: read

steps:
# 1. Check out the repository at the release tag
- name: Checkout repository
uses: actions/checkout@v4

# 2. Set up Java 21 (required by AOneBlock' build)
- name: Set up Java 21
uses: actions/setup-java@v4
with:
java-version: '21'
distribution: 'temurin'

# 3. Cache Maven dependencies to speed up builds
- name: Cache Maven packages
uses: actions/cache@v4
with:
path: ~/.m2
key: ${{ runner.os }}-m2-${{ hashFiles('**/pom.xml') }}
restore-keys: ${{ runner.os }}-m2

# 4. Build the JAR
# GIT_BRANCH=origin/master activates the Maven 'master' profile which
# produces a clean version number (e.g. 1.28.0) without -SNAPSHOT/-LOCAL.
- name: Build with Maven
run: mvn -B clean package -DskipTests
env:
GIT_BRANCH: origin/master

# 5. Upload the JAR to Modrinth
#
# Prerequisites — add these secrets in your GitHub repo settings
# (Settings → Secrets and variables → Actions):
#
# MODRINTH_TOKEN — personal access token from https://modrinth.com/settings/pats
# (scope: "Create versions")
# MODRINTH_PROJECT_ID — your Modrinth project ID for AOneBlock, visible on the
# project page under the three-dot menu ("Copy ID")
#
- name: Publish to Modrinth
uses: cloudnode-pro/modrinth-publish@v2
with:
token: ${{ secrets.MODRINTH_TOKEN }}
project: ${{ secrets.MODRINTH_PROJECT_ID }}

# Use the release tag, or the manually supplied tag when triggered via workflow_dispatch
version: ${{ github.event.release.tag_name || inputs.tag }}

# Use the GitHub release body as the changelog (empty when run manually)
changelog: ${{ github.event.release.body }}

# Release channel — auto-detected from version string:
# *-alpha → alpha, *-beta → beta, anything else → release
# Override here if needed: release | beta | alpha
# channel: release

# AOneBlock is a Paper addon
loaders: |-
paper
purpur

# Minecraft versions this release supports.
# Update this list when you start supporting newer or older MC versions.
game-versions: |-
1.21.5
1.21.6
1.21.7
1.21.8
1.21.9
1.21.10
1.21.11
26.1
26.1.1

# Path to the built JAR — Maven produces AOneBlock-<version>.jar in target/
# Note: glob patterns are not supported; use the release tag directly.
files: target/AOneBlock-${{ github.event.release.tag_name || inputs.tag }}.jar
Loading