diff --git a/.github/workflows/modrinth-publish.yml b/.github/workflows/modrinth-publish.yml new file mode 100644 index 0000000..17fa92d --- /dev/null +++ b/.github/workflows/modrinth-publish.yml @@ -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-.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