name: build

on: [ pull_request, push ]

jobs:
  build:
    strategy:
      matrix:
        java: [
          17     # Current Java LTS & minimum supported by Minecraft
        ]
        os: [ ubuntu-latest ]
    runs-on: ${{ matrix.os }}
    steps:
      - name: Checkout
        uses: actions/checkout@v4
      - name: Validate Gradle Wrapper
        uses: gradle/actions/wrapper-validation@v3
      - name: Gradle Cache
        uses: actions/cache@v4
        with:
          path: |
            ~/.gradle/caches
            ~/.gradle/wrapper
            .gradle/loom-cache
            build/
          key: ${{ runner.os }}-jdk${{ matrix.java }}-gradle-${{ hashFiles('**/*.gradle*', '**/gradle.properties', '**/gradle-wrapper.properties', '.github/workflows/build.yml') }}
      - name: Setup JDK ${{ matrix.java }}
        uses: actions/setup-java@v4
        with:
          distribution: 'temurin'
          java-version: ${{ matrix.java }}
      - name: Make Gradle Wrapper Executable
        if: ${{ runner.os != 'Windows' }}
        run: chmod +x ./gradlew
      - name: Build
        # doesn't actually publish, as no secrets are passed in, just makes sure that publishing works
        run: ./gradlew publish --no-daemon
      - name: Capture Build Artifacts
        if: ${{ runner.os == 'Linux' && matrix.java == '17' }}
        uses: actions/upload-artifact@v4
        with:
          name: Artifacts
          path: |
              common/build/libs/
              fabric/build/libs/
              forge/build/libs/