Repository navigation
Update dependency com.cobblemon:neoforge to v1.8.2+1.21.1 #3051
Workflow file for this run
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: "CI" | |
| on: [push, pull_request] | |
| concurrency: | |
| group: ${{ github.workflow }}-${{ github.ref }} | |
| cancel-in-progress: true | |
| jobs: | |
| build: | |
| name: Build | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| env: | |
| - server | |
| - client | |
| modpack: | |
| - cyclops-all | |
| - cyclops-all-deps | |
| - cyclops-id | |
| mc: | |
| - 1.21.1 | |
| - 26.1.2 | |
| - 26.3 | |
| loader: | |
| - neoforge | |
| - forge | |
| - fabric | |
| include: | |
| - mc: 1.21.1 | |
| mc-server-test-file: none # All loaders are finicky with gametests in 1.21 production, so don't run them. | |
| # mc-runtime-test's 1.21 runner never sets a structure spawner, so every batch has 0 tests and hangs. | |
| client-gametests: 'false' | |
| - mc: 26.1.2 | |
| # mc-runtime-test's 26.1 runner only finds tests near the player, so it finds none. | |
| client-gametests: 'false' | |
| - mc: 1.21.1 | |
| loader: fabric | |
| fabric-api: 0.116.7 # https://www.curseforge.com/minecraft/mc-mods/fabric-api/files/all?page=1&pageSize=20&showAlphaFiles=show | |
| fabric-gametest-api: 2.0.9+50ed0faf7a # https://maven.fabricmc.net/net/fabricmc/fabric-api/fabric-gametest-api-v1/ | |
| - mc: 26.1.2 | |
| loader: fabric | |
| fabric-api: 0.146.1 # https://www.curseforge.com/minecraft/mc-mods/fabric-api/files/all?page=1&pageSize=20&showAlphaFiles=show | |
| fabric-gametest-api: 4.0.13+00a1fba64c # https://maven.fabricmc.net/net/fabricmc/fabric-api/fabric-gametest-api-v1/ | |
| - mc: 26.3 | |
| loader: fabric | |
| fabric-api: 0.161.0 # https://www.curseforge.com/minecraft/mc-mods/fabric-api/files/all?page=1&pageSize=20&showAlphaFiles=show | |
| fabric-gametest-api: 4.0.32+3434d6d95d # https://maven.fabricmc.net/net/fabricmc/fabric-api/fabric-gametest-api-v1/ | |
| exclude: | |
| - modpack: cyclops-id # ID does not exist for Forge | |
| loader: forge | |
| - modpack: cyclops-id # ID does not exist for Fabric | |
| loader: fabric | |
| - modpack: cyclops-all-deps # No deps are relevant for Forge mods | |
| loader: forge | |
| - modpack: cyclops-all-deps # No deps are relevant for Fabric mods | |
| loader: fabric | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: 'Checkout' | |
| uses: actions/checkout@v7 | |
| with: | |
| submodules: true | |
| - name: 'Setup Java' | |
| uses: actions/setup-java@v6 | |
| with: | |
| distribution: 'microsoft' | |
| java-version: 25 | |
| - name: 'Load modpack from cache' | |
| id: cache-mods | |
| uses: actions/cache@v6 | |
| with: | |
| path: run/mods | |
| key: >- | |
| mods-${{ matrix.modpack }}-${{ matrix.mc }}-${{ matrix.loader }}-${{ | |
| hashFiles(format('modpacks/{0}/{1}/{2}/pom.xml', | |
| matrix.modpack, | |
| matrix.mc, | |
| matrix.loader)) | |
| }} | |
| - name: 'Fetch modpack' | |
| if: steps.cache-mods.outputs.cache-hit != 'true' | |
| uses: nick-fields/retry@v4 # Retry, as some maven repos can be finicky | |
| with: | |
| timeout_minutes: 5 | |
| max_attempts: 3 | |
| command: ./fetch.sh modpacks/${{ matrix.modpack }}/${{ matrix.mc }}/${{ matrix.loader }}/pom.xml $(pwd)/run/mods | |
| env: | |
| GITHUB_USER: ${{ github.actor }} | |
| GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
| - name: 'Remove game test datapacks' | |
| # They define Integrated Crafting recipes, and Integrated Crafting only exists on NeoForge. | |
| # Older versions skipped the unknown recipe type, but 26.3 fails registry loading over it. | |
| if: matrix.loader != 'neoforge' | |
| run: rm -rf run/world/datapacks | |
| - name: 'Resolve latest loader version' | |
| if: matrix.env == 'client' && (matrix.loader != 'forge' && matrix.loader != 'fabric') | |
| id: loader | |
| run: | | |
| version=$(.github/scripts/resolve-loader-version.sh ${{ matrix.loader }} ${{ matrix.mc }}) | |
| echo "version=$version" >> "$GITHUB_OUTPUT" | |
| echo "${{ matrix.loader }} ${{ matrix.mc }}: **$version**" >> "$GITHUB_STEP_SUMMARY" | |
| # Cache manually and take into account loader version. | |
| - name: 'Load Minecraft from cache' | |
| if: matrix.env == 'client' && (matrix.loader != 'forge' && matrix.loader != 'fabric') | |
| uses: actions/cache@v6 | |
| with: | |
| path: ~/.minecraft | |
| key: hmc-v1-${{ runner.os }}-${{ matrix.mc }}-${{ matrix.loader }}-${{ steps.loader.outputs.version }} | |
| - name: 'Test in runtime client' | |
| # Forge and Fabric do not work yet, and mc-runtime-test has no 26.3 build. | |
| if: matrix.env == 'client' && (matrix.loader != 'forge' && matrix.loader != 'fabric') && matrix.mc != '26.3' | |
| timeout-minutes: 10 | |
| uses: headlesshq/mc-runtime-test@4.5.2 | |
| env: | |
| CYCLOPSMC_ENABLEDGAMETESTSGLOBAL: true | |
| with: | |
| mc: ${{ matrix.mc }} | |
| modloader: ${{ matrix.loader }} | |
| regex: .*${{ matrix.loader }}.* | |
| mc-runtime-test: ${{ matrix.loader == 'forge' && 'lexforge' || matrix.loader }} | |
| java: ${{ env.java_version }} | |
| # HeadlessMC re-joins its CLI args with spaces, so the inner quotes keep the JVM args together. | |
| headlessmc-command: --jvm '"-Djava.awt.headless=true -DMcRuntimeGameTest=${{ matrix.client-gametests || 'true' }} -DMcRuntimeGameTestMinExpectedGameTests=1"' | |
| fabric-api: ${{ matrix.fabric-api || 'none' }} | |
| fabric-gametest-api: ${{ matrix.fabric-gametest-api || 'none' }} | |
| cache-mc: false | |
| - name: 'Check runtime client for error screens' | |
| # mc-runtime-test exits with code 0 when an error screen (e.g. mod loading warnings) aborts the run. | |
| if: always() && matrix.env == 'client' && (matrix.loader != 'forge' && matrix.loader != 'fabric') && matrix.mc != '26.3' | |
| run: | | |
| if [ ! -f run/logs/latest.log ]; then | |
| echo "::error::Runtime client log run/logs/latest.log not found." | |
| exit 1 | |
| fi | |
| if grep -n "RuntimeException: Error Screen" run/logs/latest.log; then | |
| echo "::error::An error screen was shown in the runtime client, so no game tests were run." | |
| exit 1 | |
| fi | |
| if ! grep -q "Successfully finished" run/logs/latest.log; then | |
| echo "::error::The runtime client did not finish successfully." | |
| exit 1 | |
| fi | |
| - name: 'Test in runtime server' | |
| if: matrix.env == 'server' | |
| timeout-minutes: 20 | |
| uses: headlesshq/mc-server-test@1.1.1 | |
| env: | |
| CYCLOPSMC_ENABLEDGAMETESTSGLOBAL: true | |
| with: | |
| java: ${{ env.java_version }} | |
| mc: ${{ matrix.mc }} | |
| modloader: ${{ matrix.loader }} | |
| fabric-api: ${{ matrix.fabric-api || 'none' }} | |
| fabric-gametest-api: ${{ matrix.fabric-gametest-api || 'none' }} | |
| test-file: ${{ matrix.mc-server-test-file || './mc-server-test.json' }} | |
| cache-mc: false | |
| - uses: actions/upload-artifact@v7 | |
| if: matrix.env == 'client' | |
| with: | |
| name: ${{ matrix.modpack }}-${{ matrix.mc }}-${{ matrix.loader }}-mods | |
| path: run/mods |