Skip to content

Update dependency com.cobblemon:neoforge to v1.8.2+1.21.1 #3051

Update dependency com.cobblemon:neoforge to v1.8.2+1.21.1

Update dependency com.cobblemon:neoforge to v1.8.2+1.21.1 #3051

Workflow file for this run

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