Publish #55
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: Publish | |
| on: | |
| workflow_dispatch: | |
| inputs: | |
| version: | |
| description: 'Version Number (leave empty to auto-increment)' | |
| required: false | |
| type: | |
| description: 'Release Type' | |
| required: true | |
| default: 'release' | |
| type: choice | |
| options: | |
| - release | |
| - beta | |
| - alpha | |
| env: | |
| MODRINTH_PROJECT_ID: kRsZVu69 | |
| CURSEFORGE_PROJECT_ID: 1436037 | |
| jobs: | |
| publish: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Checkout Repository | |
| uses: actions/checkout@v4 | |
| - name: Get Project Details | |
| id: details | |
| run: | | |
| # 1. Get Project Title for Filename | |
| echo "Fetching project metadata..." | |
| PROJECT_RESP=$(curl -s "https://api.modrinth.com/v2/project/${{ env.MODRINTH_PROJECT_ID }}") | |
| TITLE=$(echo "$PROJECT_RESP" | jq -r '.title') | |
| if [ "$TITLE" == "null" ] || [ -z "$TITLE" ]; then | |
| echo "Warning: Could not fetch project title. Defaulting to 'ResourcePack'." | |
| SAFE_NAME="ResourcePack" | |
| else | |
| # Sanitize: keep alphanumeric, dots, underscores, dashes, and spaces. | |
| SAFE_NAME=$(echo "$TITLE" | sed -e 's/[^A-Za-z0-9._ -]//g' | xargs) | |
| fi | |
| echo "PROJECT_NAME=$SAFE_NAME" >> $GITHUB_OUTPUT | |
| echo "Using filename base: $SAFE_NAME" | |
| # 2. Calculate Version | |
| # If manual version is provided, use it | |
| if [ -n "${{ inputs.version }}" ]; then | |
| echo "VERSION=${{ inputs.version }}" >> $GITHUB_OUTPUT | |
| exit 0 | |
| fi | |
| # Fetch latest version from Modrinth API | |
| echo "Fetching latest version..." | |
| VERSION_RESP=$(curl -s "https://api.modrinth.com/v2/project/${{ env.MODRINTH_PROJECT_ID }}/version") | |
| # Check if we got a valid response (array) | |
| IS_ARRAY=$(echo "$VERSION_RESP" | jq -r 'if type=="array" then "yes" else "no" end') | |
| if [ "$IS_ARRAY" != "yes" ]; then | |
| echo "Defaulting to 1.0.0" | |
| echo "VERSION=1.0.0" >> $GITHUB_OUTPUT | |
| exit 0 | |
| fi | |
| LATEST_VERSION=$(echo "$VERSION_RESP" | jq -r '.[0].version_number') | |
| if [ "$LATEST_VERSION" == "null" ] || [ -z "$LATEST_VERSION" ]; then | |
| echo "No previous versions found. Defaulting to 1.0.0" | |
| echo "VERSION=1.0.0" >> $GITHUB_OUTPUT | |
| else | |
| echo "Latest version is $LATEST_VERSION" | |
| # Increment patch version (e.g. 1.0.0 -> 1.0.1) | |
| NEW_VERSION=$(echo $LATEST_VERSION | awk -F. -v OFS=. '{$NF+=1;print}') | |
| echo "Calculated new version: $NEW_VERSION" | |
| echo "VERSION=$NEW_VERSION" >> $GITHUB_OUTPUT | |
| fi | |
| - name: Create Resource Pack Zip | |
| # Zips the contents of the 'resources' folder into a zip file in the root | |
| run: | | |
| cd resources | |
| zip -r "../${{ steps.details.outputs.PROJECT_NAME }}.zip" . | |
| - name: Publish to Modrinth | |
| uses: Kir-Antipov/mc-publish@v3.3 | |
| with: | |
| modrinth-id: ${{ env.MODRINTH_PROJECT_ID }} | |
| modrinth-token: ${{ secrets.MODRINTH_TOKEN }} | |
| files: | | |
| ${{ steps.details.outputs.PROJECT_NAME }}.zip | |
| name: "${{ steps.details.outputs.VERSION }}" | |
| version: ${{ steps.details.outputs.VERSION }} | |
| version-type: ${{ inputs.type }} | |
| changelog-file: CHANGELOG.md | |
| # Since this is a resource pack, the loader is usually just 'minecraft' | |
| loaders: minecraft | |
| # Dependencies (optional) | |
| # Format: project-slug | type (required, optional, incompatible, embedded) | |
| dependencies: | | |
| transparency-fix(optional) | |
| bedrock-skins(optional) | |
| legacy4j(optional) | |
| raised(optional) | |
| entity-model-features(optional) | |
| entitytexturefeatures(optional) | |
| # Update these to match the Minecraft versions you support | |
| game-versions: | | |
| >=1.20.2 | |
| - name: Publish to CurseForge | |
| uses: Kir-Antipov/mc-publish@v3.3 | |
| with: | |
| curseforge-id: ${{ env.CURSEFORGE_PROJECT_ID }} | |
| curseforge-token: ${{ secrets.CURSEFORGE_TOKEN }} | |
| files: | | |
| ${{ steps.details.outputs.PROJECT_NAME }}.zip | |
| name: "${{ steps.details.outputs.VERSION }}" | |
| version: ${{ steps.details.outputs.VERSION }} | |
| version-type: ${{ inputs.type }} | |
| changelog-file: CHANGELOG.md | |
| loaders: minecraft | |
| dependencies: | | |
| bedrock-skins(optional) | |
| legacy4j(optional) | |
| raised(optional) | |
| entity-model-features(optional) | |
| entity-texture-features-fabric(optional) | |
| game-versions: | | |
| >=1.20.2 |