Summary
AUTO_CURSEFORGE fails on the java8 image with API key is not set, while the same setup
succeeds on java17/java21 without any CF_API_KEY set. This makes CurseForge modpacks
uninstallable for Minecraft versions that require Java 8 (1.12.2 and older), which is where a lot
of the classic modpacks live (RLCraft, older FTB/ATLauncher-era packs).
I believe this is a side effect of the Java 8 helper pin rather than an intentional restriction,
so I wanted to raise it with the analysis rather than just the symptom.
Environment
- Image:
itzg/minecraft-server:java8, freshly pulled
[init] Image info: buildtime=2026-08-08T21:55:34.592Z,version=java8,revision=9b12eb6a6c02a40b0c5acc643659323f2286cfbb
- Platform: linux/arm64
- Minecraft 1.12.2, Forge
MODPACK_PLATFORM=AUTO_CURSEFORGE, CF_SLUG=rlcraft
- No
CF_API_KEY set (relying on the baked-in key)
Steps to reproduce
- Run
itzg/minecraft-server:java8 with MODPACK_PLATFORM=AUTO_CURSEFORGE and a CF_SLUG for a
1.12.2 pack, with no CF_API_KEY.
- Observe the install fail and the container enter a restart loop.
Actual
[mc-image-helper] ERROR : Invalid parameter provided for 'install-curseforge' command:
API key is not set. Obtain an API key from https://console.curseforge.com/ and set the
environment variable CF_API_KEY
[ERROR] Failed to auto-install CurseForge modpack
Expected
Same behaviour as java17/java21, where the identical configuration installs the pack with no
CF_API_KEY supplied.
Analysis
The java8 line pins the helper:
# .github/workflows/build.yml
# JAVA 8: NOTE: Unable to go past 8u312 because of Forge dependencies
- variant: java8
baseImage: eclipse-temurin:8u312-b07-jre-focal
mcVersion: 1.12.2
# Pin version for Java 8, also be sure to set in verify-pr.yml
mcHelperVersion: 1.51.4-java8
while Dockerfile defaults to ARG MC_HELPER_VERSION=1.66.0.
The baked-in key landed after that pin, per mc-image-helper releases:
| Version |
Date |
Change |
1.51.3-java8, 1.51.4-java8 |
~Dec 2025 |
the only Java-8-compatible builds published |
1.61.3 |
2026-07-15 |
"Bake in obfuscated CF_API_KEY" (#811) |
1.61.4 |
2026-07-16 |
"Also use baked in API key for install-curseforge" (#815) |
So the pinned 1.51.4-java8 predates the bake-in by ten minor versions, and since no newer
Java-8-targeted helper builds exist, the java8 image has no path to the key.
Notes
- Only the install is affected. Once a pack is on disk,
java8 runs it fine — installing on
java17 and then switching back to java8 is a working workaround, which is what we currently
do.
1.51.4-java8 does still accept a plain CF_API_KEY env var, so supplying one works. That is
not viable for us: our env is visible to the end user, so we can't ship an org key that way.
CF_API_KEY_FILE (1.65.0) is likewise unavailable on the pinned helper.
Possible directions
Listing these for discussion, not as a request for any specific one:
- Publish a Java-8-targeted
mc-image-helper build that includes the baked key, and bump the pin.
- Have the
java8 image perform the CurseForge install with a newer helper under a Java 17
runtime present only at build/install time, then run the server on Java 8.
- Document the limitation in the CurseForge modpack docs so it is discoverable before someone
hits the restart loop.
Happy to test any of these against the affected setup.
Summary
AUTO_CURSEFORGEfails on thejava8image withAPI key is not set, while the same setupsucceeds on
java17/java21without anyCF_API_KEYset. This makes CurseForge modpacksuninstallable for Minecraft versions that require Java 8 (1.12.2 and older), which is where a lot
of the classic modpacks live (RLCraft, older FTB/ATLauncher-era packs).
I believe this is a side effect of the Java 8 helper pin rather than an intentional restriction,
so I wanted to raise it with the analysis rather than just the symptom.
Environment
itzg/minecraft-server:java8, freshly pulled[init] Image info: buildtime=2026-08-08T21:55:34.592Z,version=java8,revision=9b12eb6a6c02a40b0c5acc643659323f2286cfbbMODPACK_PLATFORM=AUTO_CURSEFORGE,CF_SLUG=rlcraftCF_API_KEYset (relying on the baked-in key)Steps to reproduce
itzg/minecraft-server:java8withMODPACK_PLATFORM=AUTO_CURSEFORGEand aCF_SLUGfor a1.12.2 pack, with no
CF_API_KEY.Actual
Expected
Same behaviour as
java17/java21, where the identical configuration installs the pack with noCF_API_KEYsupplied.Analysis
The
java8line pins the helper:while
Dockerfiledefaults toARG MC_HELPER_VERSION=1.66.0.The baked-in key landed after that pin, per
mc-image-helperreleases:1.51.3-java8,1.51.4-java81.61.31.61.4So the pinned
1.51.4-java8predates the bake-in by ten minor versions, and since no newerJava-8-targeted helper builds exist, the
java8image has no path to the key.Notes
java8runs it fine — installing onjava17and then switching back tojava8is a working workaround, which is what we currentlydo.
1.51.4-java8does still accept a plainCF_API_KEYenv var, so supplying one works. That isnot viable for us: our env is visible to the end user, so we can't ship an org key that way.
CF_API_KEY_FILE(1.65.0) is likewise unavailable on the pinned helper.Possible directions
Listing these for discussion, not as a request for any specific one:
mc-image-helperbuild that includes the baked key, and bump the pin.java8image perform the CurseForge install with a newer helper under a Java 17runtime present only at build/install time, then run the server on Java 8.
hits the restart loop.
Happy to test any of these against the affected setup.