itzg / docker-minecraft-server

Docker image that provides a Minecraft Server that will automatically download selected version at startup
https://docker-minecraft-server.readthedocs.io/
Apache License 2.0
9.24k stars 1.52k forks source link

AUTO_CURSEFORGE fails NeoForge version '1.20.1-47.1.99' lookup from Pominence II Classic #3080

Closed Katze719 closed 2 days ago

Katze719 commented 3 days ago

Describe the problem

Most of the modpacks I try to install with AUTO_CURSEFORGE always throw exceptions on boot, the only modpack that has run smoothly so far has been Stoneblock3 from curseforge.

i tried

and many others

if you need the full log let me know, Github: [There was an error creating your issue: body is too long, body is too long (maximum is 65536 characters).]

Container definition

services:
  mc:
    image: itzg/minecraft-server:java21-jdk
    container_name: minecraft
    tty: true
    stdin_open: true
    ports:
      - "25565:25565"
    environment:
      EULA: "TRUE"
      TYPE: "AUTO_CURSEFORGE"
      CF_API_KEY: $TOKEN
      CF_SLUG: "prominence-2-classic"
      MEMORY: "15G"
      OVERRIDE_ICON: true
      DEBUG: true
      WHITELIST: |
        ..
        ..
        ..       
      CF_OVERRIDES_EXCLUSIONS: |
        mods/iris*.jar
        mods/sodium*.jar
    volumes:
      - "./minecraft_data:/data"
    restart: always

Container logs

minecraft  | [mc-image-helper] 17:07:50.379 DEBUG : Getting mod file metadata for 368293:4750014
minecraft  | [mc-image-helper] 17:07:50.380 DEBUG : Getting mod file metadata for 362528:5089406
minecraft  | [mc-image-helper] 17:07:50.392 DEBUG : Skipping project=592278 slug=repurposed-structures-friends-and-foes-datapack file=4712364 since it is not an applicable classId=12
minecraft  | [mc-image-helper] 17:07:50.380 DEBUG : Skipping gpumemleakfix-1.20.1-1.8.jar since it is a client mod
minecraft  | [mc-image-helper] 17:07:50.387 DEBUG : Download/confirm mod Jade-1.20.1-forge-11.6.3.jar @ 324717:4801177
minecraft  | [mc-image-helper] 17:07:50.392 INFO  : Mod file ./mods/Jade-1.20.1-forge-11.6.3.jar already exists
minecraft  | [mc-image-helper] 17:07:50.387 DEBUG : Skipping nicer-skies-1.3.0+1.20.1.jar since it is a client mod
minecraft  | [mc-image-helper] 17:07:50.387 DEBUG : Verifying hash of ./mods/L_Enders_Cataclysm-1.90 -1.20.1.jar
minecraft  | [mc-image-helper] 17:07:50.387 DEBUG : JSON FETCH: uri=https://api.curseforge.com/v1/mods/287342/files/4943665 headers=[user-agent: itzg/mc-image-helper/1.39.11 (cmd=install-curseforge), x-fetch-session: 22d257de-b599-4875-b29f-813fba3899be, x-api-key: [redacted], accept: application/json, host: api.curseforge.com]
minecraft  | [mc-image-helper] 17:07:50.388 DEBUG : Download/confirm mod Patchouli-1.20.1-83-FORGE.jar @ 306770:4892162
minecraft  | [mc-image-helper] 17:07:50.393 INFO  : Mod file ./mods/Patchouli-1.20.1-83-FORGE.jar already exists
minecraft  | [mc-image-helper] 17:07:50.393 DEBUG : Verifying hash of ./mods/Jade-1.20.1-forge-11.6.3.jar
minecraft  | [mc-image-helper] 17:07:50.393 DEBUG : JSON FETCH: uri=https://api.curseforge.com/v1/mods/266515/files/4709710 headers=[user-agent: itzg/mc-image-helper/1.39.11 (cmd=install-curseforge), x-fetch-session: 22d257de-b599-4875-b29f-813fba3899be, x-api-key: [redacted], accept: application/json, host: api.curseforge.com]
minecraft  | [mc-image-helper] 17:07:50.393 DEBUG : JSON FETCH: uri=https://api.curseforge.com/v1/mods/362528/files/5089406 headers=[user-agent: itzg/mc-image-helper/1.39.11 (cmd=install-curseforge), x-fetch-session: 22d257de-b599-4875-b29f-813fba3899be, x-api-key: [redacted], accept: application/json, host: api.curseforge.com]
minecraft  | [mc-image-helper] 17:07:50.394 DEBUG : Download/confirm mod YOSBY-Forge-1.1.0.jar @ 569868:4803559
minecraft  | [mc-image-helper] 17:07:50.395 INFO  : Mod file ./mods/YOSBY-Forge-1.1.0.jar already exists
minecraft  | [mc-image-helper] 17:07:50.395 DEBUG : Verifying hash of ./mods/YOSBY-Forge-1.1.0.jar
minecraft  | [mc-image-helper] 17:07:50.394 DEBUG : Download/confirm mod okzoomer-forge-1.20-3.0.1.jar @ 631278:4715660
minecraft  | [mc-image-helper] 17:07:50.396 INFO  : Mod file ./mods/okzoomer-forge-1.20-3.0.1.jar already exists
minecraft  | [mc-image-helper] 17:07:50.396 DEBUG : Verifying hash of ./mods/okzoomer-forge-1.20-3.0.1.jar
minecraft  | [mc-image-helper] 17:07:50.396 DEBUG : JSON FETCH: uri=https://api.curseforge.com/v1/mods/368293/files/4750014 headers=[user-agent: itzg/mc-image-helper/1.39.11 (cmd=install-curseforge), x-fetch-session: 22d257de-b599-4875-b29f-813fba3899be, x-api-key: [redacted], accept: application/json, host: api.curseforge.com]
minecraft  | [mc-image-helper] 17:07:50.400 DEBUG : Download/confirm mod oceansdelight-1.0.2-1.20.jar @ 841262:4652060
minecraft  | [mc-image-helper] 17:07:50.400 INFO  : Mod file ./mods/oceansdelight-1.0.2-1.20.jar already exists
minecraft  | [mc-image-helper] 17:07:50.400 DEBUG : Download/confirm mod cosmeticarmorreworked-1.20.1-v1a.jar @ 237307:4600191
minecraft  | [mc-image-helper] 17:07:50.400 INFO  : Mod file ./mods/cosmeticarmorreworked-1.20.1-v1a.jar already exists
minecraft  | [mc-image-helper] 17:07:50.400 DEBUG : Verifying hash of ./mods/Patchouli-1.20.1-83-FORGE.jar
minecraft  | [mc-image-helper] 17:07:50.401 DEBUG : Download/confirm mod minecells-1.8.3.jar @ 618790:5429097
minecraft  | [mc-image-helper] 17:07:50.401 INFO  : Mod file ./mods/minecells-1.8.3.jar already exists
minecraft  | [mc-image-helper] 17:07:50.402 DEBUG : Download/confirm mod structure_gel-1.20.1-2.15.1.jar @ 378802:4900814
minecraft  | [mc-image-helper] 17:07:50.402 INFO  : Mod file ./mods/structure_gel-1.20.1-2.15.1.jar already exists
minecraft  | [mc-image-helper] 17:07:50.402 DEBUG : Download/confirm mod industrial-foregoing-1.20.1-3.5.9.jar @ 266515:4709710
minecraft  | [mc-image-helper] 17:07:50.402 INFO  : Mod file ./mods/industrial-foregoing-1.20.1-3.5.9.jar already exists
minecraft  | [mc-image-helper] 17:07:50.404 DEBUG : Verifying hash of ./mods/minecells-1.8.3.jar
minecraft  | [mc-image-helper] 17:07:50.405 DEBUG : Verifying hash of ./mods/structure_gel-1.20.1-2.15.1.jar
minecraft  | [mc-image-helper] 17:07:50.406 DEBUG : Getting mod file metadata for 276951:4803941
minecraft  | [mc-image-helper] 17:07:50.407 DEBUG : Download/confirm mod repurposed_structures-7.1.6+1.20.1-forge.jar @ 368293:4750014
minecraft  | [mc-image-helper] 17:07:50.407 INFO  : Mod file ./mods/repurposed_structures-7.1.6+1.20.1-forge.jar already exists
minecraft  | [mc-image-helper] 17:07:50.408 DEBUG : Verifying hash of ./mods/repurposed_structures-7.1.6+1.20.1-forge.jar
minecraft  | [mc-image-helper] 17:07:50.404 DEBUG : Verifying hash of ./mods/cosmeticarmorreworked-1.20.1-v1a.jar
minecraft  | [mc-image-helper] 17:07:50.409 DEBUG : Verifying hash of ./mods/industrial-foregoing-1.20.1-3.5.9.jar
minecraft  | [mc-image-helper] 17:07:50.410 DEBUG : Download/confirm mod decorative_blocks-forge-1.20.1-4.1.3.jar @ 362528:5089406
minecraft  | [mc-image-helper] 17:07:50.411 INFO  : Mod file ./mods/decorative_blocks-forge-1.20.1-4.1.3.jar already exists
minecraft  | [mc-image-helper] 17:07:50.404 DEBUG : Verifying hash of ./mods/oceansdelight-1.0.2-1.20.jar
minecraft  | [mc-image-helper] 17:07:50.415 DEBUG : Download/confirm mod titanium-1.20.1-3.8.24.jar @ 287342:4943665
minecraft  | [mc-image-helper] 17:07:50.415 INFO  : Mod file ./mods/titanium-1.20.1-3.8.24.jar already exists
minecraft  | [mc-image-helper] 17:07:50.416 DEBUG : Verifying hash of ./mods/titanium-1.20.1-3.8.24.jar
minecraft  | [mc-image-helper] 17:07:50.416 DEBUG : JSON FETCH: uri=https://api.curseforge.com/v1/mods/276951/files/4803941 headers=[user-agent: itzg/mc-image-helper/1.39.11 (cmd=install-curseforge), x-fetch-session: 22d257de-b599-4875-b29f-813fba3899be, x-api-key: [redacted], accept: application/json, host: api.curseforge.com]
minecraft  | [mc-image-helper] 17:07:50.417 DEBUG : Verifying hash of ./mods/decorative_blocks-forge-1.20.1-4.1.3.jar
minecraft  | [mc-image-helper] 17:07:50.436 DEBUG : Download/confirm mod comforts-forge-6.3.4+1.20.1.jar @ 276951:4803941
minecraft  | [mc-image-helper] 17:07:50.436 INFO  : Mod file ./mods/comforts-forge-6.3.4+1.20.1.jar already exists
minecraft  | [mc-image-helper] 17:07:50.437 DEBUG : Verifying hash of ./mods/comforts-forge-6.3.4+1.20.1.jar
minecraft  | [mc-image-helper] 17:07:50.856 DEBUG : Applying overrides from 'overrides' in zip file
minecraft  | [mc-image-helper] 17:07:50.907 DEBUG : While applying overrides, found level entry='null' in modpack overrides and worldOutputDirExists=false
minecraft  | [mc-image-helper] 17:07:51.305 DEBUG : Preparing mod loader given id=neoforge-1.20.1-47.1.99 minecraftVersion=1.20.1
minecraft  | [mc-image-helper] 17:07:51.369 DEBUG : Requesting NeoForge version=1.20.1-47.1.99 for minecraft=1.20.1
minecraft  | [mc-image-helper] 17:07:51.494 DEBUG : JSON FETCH: uri=https://maven.neoforged.net/releases/net/neoforged/forge/maven-metadata.xml headers=[user-agent: itzg/mc-image-helper/1.39.11 (cmd=install-curseforge), x-fetch-session: 131585b2-45fa-407e-a155-46cf893ccf3d, host: maven.neoforged.net, accept: */*]
minecraft  | [mc-image-helper] 17:07:51.870 ERROR : Invalid parameter provided for 'install-curseforge' command: Unable to locate requested NeoForge version '1.20.1-47.1.99' for Minecraft 1.20.1
minecraft  | [mc-image-helper] 17:07:51.870 DEBUG : Invalid parameter details
minecraft  | me.itzg.helpers.errors.InvalidParameterException: Unable to locate requested NeoForge version '1.20.1-47.1.99' for Minecraft 1.20.1
minecraft  |    at me.itzg.helpers.forge.NeoForgeInstallerResolver.resolveForgeLike(NeoForgeInstallerResolver.java:185)
minecraft  |    at me.itzg.helpers.forge.NeoForgeInstallerResolver.resolve(NeoForgeInstallerResolver.java:64)
minecraft  |    at me.itzg.helpers.forge.ForgeInstaller.install(ForgeInstaller.java:58)
minecraft  |    at me.itzg.helpers.curseforge.CurseForgeInstaller.prepareNeoForge(CurseForgeInstaller.java:992)
minecraft  |    at me.itzg.helpers.curseforge.CurseForgeInstaller.prepareModLoader(CurseForgeInstaller.java:957)
minecraft  |    at me.itzg.helpers.curseforge.CurseForgeInstaller.processModpack(CurseForgeInstaller.java:595)
minecraft  |    at me.itzg.helpers.curseforge.CurseForgeInstaller.resolveModpackFileAndProcess(CurseForgeInstaller.java:402)
minecraft  |    at me.itzg.helpers.curseforge.CurseForgeInstaller.installByRetrievingModpackZip(CurseForgeInstaller.java:264)
minecraft  |    at me.itzg.helpers.curseforge.CurseForgeInstaller.lambda$install$3(CurseForgeInstaller.java:183)
minecraft  |    at me.itzg.helpers.curseforge.CurseForgeInstaller.install(CurseForgeInstaller.java:220)
minecraft  |    at me.itzg.helpers.curseforge.CurseForgeInstaller.install(CurseForgeInstaller.java:182)
minecraft  |    at me.itzg.helpers.curseforge.InstallCurseForgeCommand.call(InstallCurseForgeCommand.java:213)
minecraft  |    at me.itzg.helpers.curseforge.InstallCurseForgeCommand.call(InstallCurseForgeCommand.java:29)
minecraft  |    at picocli.CommandLine.executeUserObject(CommandLine.java:2045)
minecraft  |    at picocli.CommandLine.access$1500(CommandLine.java:148)
minecraft  |    at picocli.CommandLine$RunLast.executeUserObjectOfLastSubcommandWithSameParent(CommandLine.java:2465)
minecraft  |    at picocli.CommandLine$RunLast.handle(CommandLine.java:2457)
minecraft  |    at picocli.CommandLine$RunLast.handle(CommandLine.java:2419)
minecraft  |    at picocli.CommandLine$AbstractParseResultHandler.execute(CommandLine.java:2277)
minecraft  |    at picocli.CommandLine$RunLast.execute(CommandLine.java:2421)
minecraft  |    at picocli.CommandLine.execute(CommandLine.java:2174)
minecraft  |    at me.itzg.helpers.McImageHelper.main(McImageHelper.java:159)
minecraft  | + log 'ERROR failed to auto-install CurseForge modpack'
minecraft  | + local oldState
minecraft  | ++ shopt -po xtrace
minecraft  | + oldState='set -o xtrace'
minecraft  | + shopt -u -o xtrace
minecraft  | [init] 2024-09-26 17:07:52+00:00 ERROR failed to auto-install CurseForge modpack
minecraft  | + exit 1
minecraft  | + export HOME=/data
minecraft  | + HOME=/data
minecraft  | ++ id -u
minecraft  | ++ id -g
minecraft  | ++ ls -lnd /data
minecraft  | + log 'Running as uid=1000 gid=1000 with /data as '\''drwxr-xr-x 7 1000 1000 4096 Sep 26 17:07 /data'\'''
minecraft  | + local oldState
minecraft  | ++ shopt -po xtrace
minecraft  | + oldState='set -o xtrace'
minecraft  | + shopt -u -o xtrace
minecraft  | [init] 2024-09-26 17:07:56+00:00 Running as uid=1000 gid=1000 with /data as 'drwxr-xr-x 7 1000 1000 4096 Sep 26 17:07 /data'
minecraft  | + '[' '!' -e /data/eula.txt ']'
minecraft  | + isTrue false
minecraft  | + case "${1,,}" in
minecraft  | + return 1
minecraft  | + isTrue true
minecraft  | + case "${1,,}" in
minecraft  | + return 0
minecraft  | + set +x
minecraft  | + isTrue false
minecraft  | + case "${1,,}" in
minecraft  | + return 1
minecraft  | + isTrue false
minecraft  | + case "${1,,}" in
minecraft  | + return 1
minecraft  | + [[ -n '' ]]
minecraft  | + fixJavaPath
minecraft  | + which java
minecraft  | + cd /data
minecraft  | + export DECLARED_TYPE=AUTO_CURSEFORGE
minecraft  | + DECLARED_TYPE=AUTO_CURSEFORGE
minecraft  | + export DECLARED_VERSION=LATEST
minecraft  | + DECLARED_VERSION=LATEST
minecraft  | + isTrue false
minecraft  | + case "${1,,}" in
minecraft  | + return 1
minecraft  | + isTrue false
minecraft  | + case "${1,,}" in
minecraft  | + return 1
minecraft  | + [[ -n '' ]]
minecraft  | + [[ -n '' ]]
minecraft  | + [[ -n '' ]]
minecraft  | + [[ -n '' ]]
minecraft  | + [[ -n '' ]]
minecraft  | + : ''
minecraft  | + case "${TYPE^^}" in
minecraft  | + MOD_PLATFORM=AUTO_CURSEFORGE
minecraft  | + [[ -n AUTO_CURSEFORGE ]]
minecraft  | + case "${MOD_PLATFORM^^}" in
minecraft  | + exec /start-deployAutoCF
minecraft  | + ensureRemoveAllModsOff MOD_PLATFORM=AUTO_CURSEFORGE
minecraft  | + reason=MOD_PLATFORM=AUTO_CURSEFORGE
minecraft  | + isTrue false
minecraft  | + case "${1,,}" in
minecraft  | + return 1
minecraft  | + args=(--results-file="$resultsFile")
minecraft  | + [[ -n '' ]]
minecraft  | + [[ -n '' ]]
minecraft  | + [[ -n prominence-2-classic ]]
minecraft  | + args+=(--slug="$CF_SLUG")
minecraft  | + [[ -n '' ]]
minecraft  | + [[ -n '' ]]
minecraft  | + [[ -n '' ]]
minecraft  | + [[ -n mods/iris*.jar
minecraft  | mods/sodium*.jar
minecraft  |  ]]
minecraft  | + args+=(--overrides-exclusions="$CF_OVERRIDES_EXCLUSIONS")
minecraft  | + [[ -n '' ]]
minecraft  | + args+=(--force-synchronize="$CF_FORCE_SYNCHRONIZE" --force-reinstall-modloader="$CF_FORCE_REINSTALL_MODLOADER" --overrides-skip-existing="$CF_OVERRIDES_SKIP_EXISTING")
minecraft  | + [[ -n '' ]]
minecraft  | + [[ -n '' ]]
minecraft  | + [[ -n /image/cf-exclude-include.json ]]
minecraft  | + args+=(--exclude-include-file="$CF_EXCLUDE_INCLUDE_FILE")
minecraft  | + [[ -n '' ]]
minecraft  | + mc-image-helper install-curseforge --results-file=/data/.install-curseforge.env --slug=prominence-2-classic '--overrides-exclusions=mods/iris*.jar
minecraft  | mods/sodium*.jar
minecraft  | ' --force-synchronize=false --force-reinstall-modloader=false --overrides-skip-existing=false --exclude-include-file=/image/cf-exclude-include.json
minecraft  | [mc-image-helper] 17:07:58.533 DEBUG : JSON FETCH: uri=https://api.curseforge.com/v1/categories?gameId=432&classesOnly=true headers=[user-agent: itzg/mc-image-helper/1.39.11 (cmd=install-curseforge), x-fetch-session: f0c4797a-7be2-44d1-81e3-e60760e5ee78, x-api-key: [redacted], accept: application/json, host: api.curseforge.com]
minecraft  | [mc-image-helper] 17:07:58.576 DEBUG : Failed request details: FailedRequestException(uri=https://api.curseforge.com/v1/categories?gameId=432&classesOnly=true, statusCode=403, body=<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
minecraft  | <HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
minecraft  | <TITLE>ERROR: The request could not be satisfied</TITLE>
minecraft  | </HEAD><BODY>
minecraft  | <H1>403 ERROR</H1>
minecraft  | <H2>The request could not be satisfied.</H2>
minecraft  | <HR noshade size="1px">
minecraft  | Request blocked.
minecraft  | We can't connect to the server for this app or website at this time. There might be too much traffic or a configuration error. Try again later, or contact the app or website owner.
minecraft  | <BR clear="all">
minecraft  | If you provide content to customers through CloudFront, you can find steps to troubleshoot and help prevent this error by reviewing the CloudFront documentation.
minecraft  | <BR clear="all">
minecraft  | <HR noshade size="1px">
minecraft  | <PRE>
minecraft  | Generated by cloudfront (CloudFront)
minecraft  | Request ID: LNOiop3nJiqGBNyKAIXGl-K25aH7K13_5lMFWiM4y6z9piUYIndjxA==
minecraft  | </PRE>
minecraft  | <ADDRESS>
minecraft  | </ADDRESS>
minecraft  | </BODY></HTML>, headers=DefaultHttpHeaders[Server: CloudFront, Date: Thu, 26 Sep 2024 17:07:58 GMT, Content-Type: text/html, Content-Length: 919, Connection: keep-alive, X-Cache: Error from cloudfront, Via: 1.1 6080b2713e502211e152f21f5c59c5a6.cloudfront.net (CloudFront), X-Amz-Cf-Pop: FRA53-C1, X-Amz-Cf-Id: LNOiop3nJiqGBNyKAIXGl-K25aH7K13_5lMFWiM4y6z9piUYIndjxA==])
minecraft  | [mc-image-helper] 17:07:58.577 ERROR : 'install-curseforge' command failed. Version is 1.39.11
minecraft  | me.itzg.helpers.errors.RateLimitException: Access to https://api.curseforge.com has been rate-limited.
minecraft  |    at me.itzg.helpers.curseforge.CurseForgeInstaller.install(CurseForgeInstaller.java:229)
minecraft  |    at me.itzg.helpers.curseforge.CurseForgeInstaller.install(CurseForgeInstaller.java:182)
minecraft  |    at me.itzg.helpers.curseforge.InstallCurseForgeCommand.call(InstallCurseForgeCommand.java:213)
minecraft  |    at me.itzg.helpers.curseforge.InstallCurseForgeCommand.call(InstallCurseForgeCommand.java:29)
minecraft  |    at picocli.CommandLine.executeUserObject(CommandLine.java:2045)
minecraft  |    at picocli.CommandLine.access$1500(CommandLine.java:148)
minecraft  |    at picocli.CommandLine$RunLast.executeUserObjectOfLastSubcommandWithSameParent(CommandLine.java:2465)
minecraft  |    at picocli.CommandLine$RunLast.handle(CommandLine.java:2457)
minecraft  |    at picocli.CommandLine$RunLast.handle(CommandLine.java:2419)
minecraft  |    at picocli.CommandLine$AbstractParseResultHandler.execute(CommandLine.java:2277)
minecraft  |    at picocli.CommandLine$RunLast.execute(CommandLine.java:2421)
minecraft  |    at picocli.CommandLine.execute(CommandLine.java:2174)
minecraft  |    at me.itzg.helpers.McImageHelper.main(McImageHelper.java:159)
minecraft  | Caused by: me.itzg.helpers.http.FailedRequestException: HTTP request of https://api.curseforge.com/v1/categories?gameId=432&classesOnly=true failed with 403 Forbidden: Fetching object content
minecraft  |    at me.itzg.helpers.http.FetchBuilderBase.lambda$failedRequestMono$2(FetchBuilderBase.java:220)
minecraft  |    at reactor.core.publisher.MonoFlatMap$FlatMapMain.onNext(MonoFlatMap.java:132)
minecraft  |    at reactor.core.publisher.FluxDefaultIfEmpty$DefaultIfEmptySubscriber.onNext(FluxDefaultIfEmpty.java:122)
minecraft  |    at reactor.core.publisher.FluxHandle$HandleSubscriber.onNext(FluxHandle.java:129)
minecraft  |    at reactor.core.publisher.FluxMap$MapConditionalSubscriber.onNext(FluxMap.java:224)
minecraft  |    at reactor.core.publisher.FluxDoFinally$DoFinallySubscriber.onNext(FluxDoFinally.java:113)
minecraft  |    at reactor.core.publisher.FluxHandleFuseable$HandleFuseableSubscriber.onNext(FluxHandleFuseable.java:194)
minecraft  |    at reactor.core.publisher.FluxContextWrite$ContextWriteSubscriber.onNext(FluxContextWrite.java:107)
minecraft  |    at reactor.core.publisher.Operators$BaseFluxToMonoOperator.completePossiblyEmpty(Operators.java:2071)
minecraft  |    at reactor.core.publisher.MonoCollectList$MonoCollectListSubscriber.onComplete(MonoCollectList.java:118)
minecraft  |    at reactor.core.publisher.FluxPeek$PeekSubscriber.onComplete(FluxPeek.java:260)
minecraft  |    at reactor.core.publisher.FluxMap$MapSubscriber.onComplete(FluxMap.java:144)
minecraft  |    at reactor.netty.channel.FluxReceive.onInboundComplete(FluxReceive.java:415)
minecraft  |    at reactor.netty.channel.ChannelOperations.onInboundComplete(ChannelOperations.java:445)
minecraft  |    at reactor.netty.channel.ChannelOperations.terminate(ChannelOperations.java:499)
minecraft  |    at reactor.netty.http.client.HttpClientOperations.onInboundNext(HttpClientOperations.java:800)
minecraft  |    at reactor.netty.channel.ChannelOperationsHandler.channelRead(ChannelOperationsHandler.java:115)
minecraft  |    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:444)
minecraft  |    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)
minecraft  |    at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412)
minecraft  |    at io.netty.handler.timeout.IdleStateHandler.channelRead(IdleStateHandler.java:289)
minecraft  |    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:442)
minecraft  |    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)
minecraft  |    at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412)
minecraft  |    at io.netty.channel.CombinedChannelDuplexHandler$DelegatingChannelHandlerContext.fireChannelRead(CombinedChannelDuplexHandler.java:436)
minecraft  |    at io.netty.handler.codec.ByteToMessageDecoder.fireChannelRead(ByteToMessageDecoder.java:346)
minecraft  |    at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:318)
minecraft  |    at io.netty.channel.CombinedChannelDuplexHandler.channelRead(CombinedChannelDuplexHandler.java:251)
minecraft  |    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:442)
minecraft  |    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)
minecraft  |    at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412)
minecraft  |    at io.netty.handler.ssl.SslHandler.unwrap(SslHandler.java:1473)
minecraft  |    at io.netty.handler.ssl.SslHandler.decodeJdkCompatible(SslHandler.java:1336)
minecraft  |    at io.netty.handler.ssl.SslHandler.decode(SslHandler.java:1385)
minecraft  |    at io.netty.handler.codec.ByteToMessageDecoder.decodeRemovalReentryProtection(ByteToMessageDecoder.java:530)
minecraft  |    at io.netty.handler.codec.ByteToMessageDecoder.callDecode(ByteToMessageDecoder.java:469)
minecraft  |    at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:290)
minecraft  |    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:444)
minecraft  |    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)
minecraft  |    at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412)
minecraft  |    at io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1407)
minecraft  |    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:440)
minecraft  |    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)
minecraft  |    at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:918)
minecraft  |    at io.netty.channel.epoll.AbstractEpollStreamChannel$EpollStreamUnsafe.epollInReady(AbstractEpollStreamChannel.java:799)
minecraft  |    at io.netty.channel.epoll.EpollEventLoop.processReady(EpollEventLoop.java:501)
minecraft  |    at io.netty.channel.epoll.EpollEventLoop.run(EpollEventLoop.java:399)
minecraft  |    at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:994)
minecraft  |    at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)
minecraft  |    at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
minecraft  |    at java.base/java.lang.Thread.run(Thread.java:1583)
minecraft  |    Suppressed: java.lang.Exception: #block terminated with an error
minecraft  |        at reactor.core.publisher.BlockingSingleSubscriber.blockingGet(BlockingSingleSubscriber.java:103)
minecraft  |        at reactor.core.publisher.Mono.block(Mono.java:1712)
minecraft  |        at me.itzg.helpers.curseforge.CurseForgeInstaller.install(CurseForgeInstaller.java:218)
minecraft  |        at me.itzg.helpers.curseforge.CurseForgeInstaller.install(CurseForgeInstaller.java:182)
minecraft  |        at me.itzg.helpers.curseforge.InstallCurseForgeCommand.call(InstallCurseForgeCommand.java:213)
minecraft  |        at me.itzg.helpers.curseforge.InstallCurseForgeCommand.call(InstallCurseForgeCommand.java:29)
minecraft  |        at picocli.CommandLine.executeUserObject(CommandLine.java:2045)
minecraft  |        at picocli.CommandLine.access$1500(CommandLine.java:148)
minecraft  |        at picocli.CommandLine$RunLast.executeUserObjectOfLastSubcommandWithSameParent(CommandLine.java:2465)
minecraft  |        at picocli.CommandLine$RunLast.handle(CommandLine.java:2457)
minecraft  |        at picocli.CommandLine$RunLast.handle(CommandLine.java:2419)
minecraft  |        at picocli.CommandLine$AbstractParseResultHandler.execute(CommandLine.java:2277)
minecraft  |        at picocli.CommandLine$RunLast.execute(CommandLine.java:2421)
minecraft  |        at picocli.CommandLine.execute(CommandLine.java:2174)
minecraft  |        at me.itzg.helpers.McImageHelper.main(McImageHelper.java:159)
minecraft  | + log 'ERROR failed to auto-install CurseForge modpack'
minecraft  | + local oldState
minecraft  | ++ shopt -po xtrace
minecraft  | + oldState='set -o xtrace'
minecraft  | + shopt -u -o xtrace
minecraft  | [init] 2024-09-26 17:07:58+00:00 ERROR failed to auto-install CurseForge modpack
minecraft  | + exit 1
minecraft  | + export HOME=/data
minecraft  | + HOME=/data
minecraft  | ++ id -u
minecraft  | ++ id -g
minecraft  | ++ ls -lnd /data
minecraft  | + log 'Running as uid=1000 gid=1000 with /data as '\''drwxr-xr-x 7 1000 1000 4096 Sep 26 17:07 /data'\'''
minecraft  | + local oldState
minecraft  | ++ shopt -po xtrace
minecraft  | + oldState='set -o xtrace'
minecraft  | + shopt -u -o xtrace
minecraft  | [init] 2024-09-26 17:08:05+00:00 Running as uid=1000 gid=1000 with /data as 'drwxr-xr-x 7 1000 1000 4096 Sep 26 17:07 /data'
minecraft  | + '[' '!' -e /data/eula.txt ']'
minecraft  | + isTrue false
minecraft  | + case "${1,,}" in
minecraft  | + return 1
minecraft  | + isTrue true
minecraft  | + case "${1,,}" in
minecraft  | + return 0
minecraft  | + set +x
minecraft  | + isTrue false
minecraft  | + case "${1,,}" in
minecraft  | + return 1
minecraft  | + isTrue false
minecraft  | + case "${1,,}" in
minecraft  | + return 1
minecraft  | + [[ -n '' ]]
minecraft  | + fixJavaPath
minecraft  | + which java
minecraft  | + cd /data
minecraft  | + export DECLARED_TYPE=AUTO_CURSEFORGE
minecraft  | + DECLARED_TYPE=AUTO_CURSEFORGE
minecraft  | + export DECLARED_VERSION=LATEST
minecraft  | + DECLARED_VERSION=LATEST
minecraft  | + isTrue false
minecraft  | + case "${1,,}" in
minecraft  | + return 1
minecraft  | + isTrue false
minecraft  | + case "${1,,}" in
minecraft  | + return 1
minecraft  | + [[ -n '' ]]
minecraft  | + [[ -n '' ]]
minecraft  | + [[ -n '' ]]
minecraft  | + [[ -n '' ]]
minecraft  | + [[ -n '' ]]
minecraft  | + : ''
minecraft  | + case "${TYPE^^}" in
minecraft  | + MOD_PLATFORM=AUTO_CURSEFORGE
minecraft  | + [[ -n AUTO_CURSEFORGE ]]
minecraft  | + case "${MOD_PLATFORM^^}" in
minecraft  | + exec /start-deployAutoCF
minecraft  | + ensureRemoveAllModsOff MOD_PLATFORM=AUTO_CURSEFORGE
minecraft  | + reason=MOD_PLATFORM=AUTO_CURSEFORGE
minecraft  | + isTrue false
minecraft  | + case "${1,,}" in
minecraft  | + return 1
minecraft  | + args=(--results-file="$resultsFile")
minecraft  | + [[ -n '' ]]
minecraft  | + [[ -n '' ]]
minecraft  | + [[ -n prominence-2-classic ]]
minecraft  | + args+=(--slug="$CF_SLUG")
minecraft  | + [[ -n '' ]]
minecraft  | + [[ -n '' ]]
minecraft  | + [[ -n '' ]]
minecraft  | + [[ -n mods/iris*.jar
minecraft  | mods/sodium*.jar
minecraft  |  ]]
minecraft  | + args+=(--overrides-exclusions="$CF_OVERRIDES_EXCLUSIONS")
minecraft  | + [[ -n '' ]]
minecraft  | + args+=(--force-synchronize="$CF_FORCE_SYNCHRONIZE" --force-reinstall-modloader="$CF_FORCE_REINSTALL_MODLOADER" --overrides-skip-existing="$CF_OVERRIDES_SKIP_EXISTING")
minecraft  | + [[ -n '' ]]
minecraft  | + [[ -n '' ]]
minecraft  | + [[ -n /image/cf-exclude-include.json ]]
minecraft  | + args+=(--exclude-include-file="$CF_EXCLUDE_INCLUDE_FILE")
minecraft  | + [[ -n '' ]]
minecraft  | + mc-image-helper install-curseforge --results-file=/data/.install-curseforge.env --slug=prominence-2-classic '--overrides-exclusions=mods/iris*.jar
minecraft  | mods/sodium*.jar
minecraft  | ' --force-synchronize=false --force-reinstall-modloader=false --overrides-skip-existing=false --exclude-include-file=/image/cf-exclude-include.json
minecraft  | [mc-image-helper] 17:08:08.466 DEBUG : JSON FETCH: uri=https://api.curseforge.com/v1/categories?gameId=432&classesOnly=true headers=[user-agent: itzg/mc-image-helper/1.39.11 (cmd=install-curseforge), x-fetch-session: fbdc7378-af8a-4ae3-a90e-9a14f50b2290, x-api-key: [redacted], accept: application/json, host: api.curseforge.com]
minecraft  | [mc-image-helper] 17:08:08.502 DEBUG : Failed request details: FailedRequestException(uri=https://api.curseforge.com/v1/categories?gameId=432&classesOnly=true, statusCode=403, body=<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
minecraft  | <HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
minecraft  | <TITLE>ERROR: The request could not be satisfied</TITLE>
minecraft  | </HEAD><BODY>
minecraft  | <H1>403 ERROR</H1>
minecraft  | <H2>The request could not be satisfied.</H2>
minecraft  | <HR noshade size="1px">
minecraft  | Request blocked.
minecraft  | We can't connect to the server for this app or website at this time. There might be too much traffic or a configuration error. Try again later, or contact the app or website owner.
minecraft  | <BR clear="all">
minecraft  | If you provide content to customers through CloudFront, you can find steps to troubleshoot and help prevent this error by reviewing the CloudFront documentation.
minecraft  | <BR clear="all">
minecraft  | <HR noshade size="1px">
minecraft  | <PRE>
minecraft  | Generated by cloudfront (CloudFront)
minecraft  | Request ID: sCYYCuK4BNJAdhEd7O4s6vobkBh4iRL9S81PKeyG89FYuvIs_idA9w==
minecraft  | </PRE>
minecraft  | <ADDRESS>
minecraft  | </ADDRESS>
minecraft  | </BODY></HTML>, headers=DefaultHttpHeaders[Server: CloudFront, Date: Thu, 26 Sep 2024 17:08:08 GMT, Content-Type: text/html, Content-Length: 919, Connection: keep-alive, X-Cache: Error from cloudfront, Via: 1.1 1764af62d635a1a6ee51aabc37405452.cloudfront.net (CloudFront), X-Amz-Cf-Pop: FRA53-C1, X-Amz-Cf-Id: sCYYCuK4BNJAdhEd7O4s6vobkBh4iRL9S81PKeyG89FYuvIs_idA9w==])
minecraft  | [mc-image-helper] 17:08:08.503 ERROR : 'install-curseforge' command failed. Version is 1.39.11
minecraft  | me.itzg.helpers.errors.RateLimitException: Access to https://api.curseforge.com has been rate-limited.
minecraft  |    at me.itzg.helpers.curseforge.CurseForgeInstaller.install(CurseForgeInstaller.java:229)
minecraft  |    at me.itzg.helpers.curseforge.CurseForgeInstaller.install(CurseForgeInstaller.java:182)
minecraft  |    at me.itzg.helpers.curseforge.InstallCurseForgeCommand.call(InstallCurseForgeCommand.java:213)
minecraft  |    at me.itzg.helpers.curseforge.InstallCurseForgeCommand.call(InstallCurseForgeCommand.java:29)
minecraft  |    at picocli.CommandLine.executeUserObject(CommandLine.java:2045)
minecraft  |    at picocli.CommandLine.access$1500(CommandLine.java:148)
minecraft  |    at picocli.CommandLine$RunLast.executeUserObjectOfLastSubcommandWithSameParent(CommandLine.java:2465)
minecraft  |    at picocli.CommandLine$RunLast.handle(CommandLine.java:2457)
minecraft  |    at picocli.CommandLine$RunLast.handle(CommandLine.java:2419)
minecraft  |    at picocli.CommandLine$AbstractParseResultHandler.execute(CommandLine.java:2277)
minecraft  |    at picocli.CommandLine$RunLast.execute(CommandLine.java:2421)
minecraft  |    at picocli.CommandLine.execute(CommandLine.java:2174)
minecraft  |    at me.itzg.helpers.McImageHelper.main(McImageHelper.java:159)
minecraft  | Caused by: me.itzg.helpers.http.FailedRequestException: HTTP request of https://api.curseforge.com/v1/categories?gameId=432&classesOnly=true failed with 403 Forbidden: Fetching object content
minecraft  |    at me.itzg.helpers.http.FetchBuilderBase.lambda$failedRequestMono$2(FetchBuilderBase.java:220)
minecraft  |    at reactor.core.publisher.MonoFlatMap$FlatMapMain.onNext(MonoFlatMap.java:132)
minecraft  |    at reactor.core.publisher.FluxDefaultIfEmpty$DefaultIfEmptySubscriber.onNext(FluxDefaultIfEmpty.java:122)
minecraft  |    at reactor.core.publisher.FluxHandle$HandleSubscriber.onNext(FluxHandle.java:129)
minecraft  |    at reactor.core.publisher.FluxMap$MapConditionalSubscriber.onNext(FluxMap.java:224)
minecraft  |    at reactor.core.publisher.FluxDoFinally$DoFinallySubscriber.onNext(FluxDoFinally.java:113)
minecraft  |    at reactor.core.publisher.FluxHandleFuseable$HandleFuseableSubscriber.onNext(FluxHandleFuseable.java:194)
minecraft  |    at reactor.core.publisher.FluxContextWrite$ContextWriteSubscriber.onNext(FluxContextWrite.java:107)
minecraft  |    at reactor.core.publisher.Operators$BaseFluxToMonoOperator.completePossiblyEmpty(Operators.java:2071)
minecraft  |    at reactor.core.publisher.MonoCollectList$MonoCollectListSubscriber.onComplete(MonoCollectList.java:118)
minecraft  |    at reactor.core.publisher.FluxPeek$PeekSubscriber.onComplete(FluxPeek.java:260)
minecraft  |    at reactor.core.publisher.FluxMap$MapSubscriber.onComplete(FluxMap.java:144)
minecraft  |    at reactor.netty.channel.FluxReceive.onInboundComplete(FluxReceive.java:415)
minecraft  |    at reactor.netty.channel.ChannelOperations.onInboundComplete(ChannelOperations.java:445)
minecraft  |    at reactor.netty.channel.ChannelOperations.terminate(ChannelOperations.java:499)
minecraft  |    at reactor.netty.http.client.HttpClientOperations.onInboundNext(HttpClientOperations.java:800)
minecraft  |    at reactor.netty.channel.ChannelOperationsHandler.channelRead(ChannelOperationsHandler.java:115)
minecraft  |    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:444)
minecraft  |    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)
minecraft  |    at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412)
minecraft  |    at io.netty.handler.timeout.IdleStateHandler.channelRead(IdleStateHandler.java:289)
minecraft  |    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:442)
minecraft  |    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)
minecraft  |    at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412)
minecraft  |    at io.netty.channel.CombinedChannelDuplexHandler$DelegatingChannelHandlerContext.fireChannelRead(CombinedChannelDuplexHandler.java:436)
minecraft  |    at io.netty.handler.codec.ByteToMessageDecoder.fireChannelRead(ByteToMessageDecoder.java:346)
minecraft  |    at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:318)
minecraft  |    at io.netty.channel.CombinedChannelDuplexHandler.channelRead(CombinedChannelDuplexHandler.java:251)
minecraft  |    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:442)
minecraft  |    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)
minecraft  |    at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412)
minecraft  |    at io.netty.handler.ssl.SslHandler.unwrap(SslHandler.java:1473)
minecraft  |    at io.netty.handler.ssl.SslHandler.decodeJdkCompatible(SslHandler.java:1336)
minecraft  |    at io.netty.handler.ssl.SslHandler.decode(SslHandler.java:1385)
minecraft  |    at io.netty.handler.codec.ByteToMessageDecoder.decodeRemovalReentryProtection(ByteToMessageDecoder.java:530)
minecraft  |    at io.netty.handler.codec.ByteToMessageDecoder.callDecode(ByteToMessageDecoder.java:469)
minecraft  |    at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:290)
minecraft  |    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:444)
minecraft  |    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)
minecraft  |    at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412)
minecraft  |    at io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1407)
minecraft  |    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:440)
minecraft  |    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)
minecraft  |    at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:918)
minecraft  |    at io.netty.channel.epoll.AbstractEpollStreamChannel$EpollStreamUnsafe.epollInReady(AbstractEpollStreamChannel.java:799)
minecraft  |    at io.netty.channel.epoll.EpollEventLoop.processReady(EpollEventLoop.java:501)
minecraft  |    at io.netty.channel.epoll.EpollEventLoop.run(EpollEventLoop.java:399)
minecraft  |    at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:994)
minecraft  |    at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)
minecraft  |    at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
minecraft  |    at java.base/java.lang.Thread.run(Thread.java:1583)
minecraft  |    Suppressed: java.lang.Exception: #block terminated with an error
minecraft  |        at reactor.core.publisher.BlockingSingleSubscriber.blockingGet(BlockingSingleSubscriber.java:103)
minecraft  |        at reactor.core.publisher.Mono.block(Mono.java:1712)
minecraft  |        at me.itzg.helpers.curseforge.CurseForgeInstaller.install(CurseForgeInstaller.java:218)
minecraft  |        at me.itzg.helpers.curseforge.CurseForgeInstaller.install(CurseForgeInstaller.java:182)
minecraft  |        at me.itzg.helpers.curseforge.InstallCurseForgeCommand.call(InstallCurseForgeCommand.java:213)
minecraft  |        at me.itzg.helpers.curseforge.InstallCurseForgeCommand.call(InstallCurseForgeCommand.java:29)
minecraft  |        at picocli.CommandLine.executeUserObject(CommandLine.java:2045)
minecraft  |        at picocli.CommandLine.access$1500(CommandLine.java:148)
minecraft  |        at picocli.CommandLine$RunLast.executeUserObjectOfLastSubcommandWithSameParent(CommandLine.java:2465)
minecraft  |        at picocli.CommandLine$RunLast.handle(CommandLine.java:2457)
minecraft  |        at picocli.CommandLine$RunLast.handle(CommandLine.java:2419)
minecraft  |        at picocli.CommandLine$AbstractParseResultHandler.execute(CommandLine.java:2277)
minecraft  |        at picocli.CommandLine$RunLast.execute(CommandLine.java:2421)
minecraft  |        at picocli.CommandLine.execute(CommandLine.java:2174)
minecraft  |        at me.itzg.helpers.McImageHelper.main(McImageHelper.java:159)
minecraft  | + log 'ERROR failed to auto-install CurseForge modpack'
minecraft  | + local oldState
minecraft  | ++ shopt -po xtrace
minecraft  | + oldState='set -o xtrace'
minecraft  | + shopt -u -o xtrace
minecraft  | [init] 2024-09-26 17:08:08+00:00 ERROR failed to auto-install CurseForge modpack
minecraft  | + exit 1
Katze719 commented 3 days ago

looks like it is trying to install neoforge but with a recent version number of forge

me.itzg.helpers.errors.InvalidParameterException: Unable to locate requested NeoForge version '1.20.1-47.1.99' for Minecraft 1.20.1

i dont think Neoforge 47 is a valid version

Katze719 commented 3 days ago

i have a feeling that i will have to try again but on different Java versions, man i fucking hate java, i mainly used :latest / java21, lets try 17 :D

itzg commented 3 days ago

I certainly appreciate that you're frustrated. I have found modpacks to be very difficult to support via automation. You'd think it should be easy since the UIs provide easy one click download and run.

With that said, there are several working examples provided

https://github.com/itzg/docker-minecraft-server/tree/master/examples

If you want further advice, then please narrow down to one particular scenario, make sure you have re-pulled the image, using correct image/java version as you mentioned, and avoid distracting generalizations about 90% failure rate.

I am also glad to accept PRs with enhancements and fixes. Adding to the global exclusions is one area that is easy to do.

Katze719 commented 3 days ago

sooo, why is the manual install for curse forge then marked Depricated when the auto one still work in progress is, or at least a note that a bit of tinkering is needed to get modpacks working would be nice. (some work out of the box like stoneblock3)

i will see if i have time to look in the code and create a PR for some patches or thing that dont work at the moment.

itzg commented 3 days ago

It's not a work in progress.

I'll investigate the neoforge lookup issue you noted.

Yes, I get the same error:

mc-1  | [mc-image-helper] 00:38:27.569 ERROR : Invalid parameter provided for 'install-curseforge' command: Unable to locate requested NeoForge version '1.20.1-47.1.99' for Minecraft 1.20.1

I'll work on fixing that.

itzg commented 3 days ago

Please re-pull the image and it should now properly retrieve the neoforge loader for prominence-2-classic

Katze719 commented 2 days ago

thx, now im getting these exceptions:

minecraft  | + exec /start-finalExec
minecraft  | + '[' -n https://tiermaker.com/images/templates/6636671605401175.png ']'
minecraft  | + '[' '!' -e server-icon.png ']'
minecraft  | + isTrue true
minecraft  | + case "${1,,}" in
minecraft  | + return 0
minecraft  | + log 'Using server icon from https://tiermaker.com/images/templates/6636671605401175.png...'
minecraft  | + local oldState
minecraft  | ++ shopt -po xtrace
minecraft  | + oldState='set -o xtrace'
minecraft  | + shopt -u -o xtrace
minecraft  | [init] 2024-09-27 14:50:43+00:00 Using server icon from https://tiermaker.com/images/templates/6636671605401175.png...
minecraft  | + isURL https://tiermaker.com/images/templates/6636671605401175.png
minecraft  | + local value=https://tiermaker.com/images/templates/6636671605401175.png
minecraft  | + [[ https:// == \h\t\t\p\s\:\/\/ ]]
minecraft  | + return 0
minecraft  | + get -o /tmp/icon.img https://tiermaker.com/images/templates/6636671605401175.png
minecraft  | + mc-image-helper get -o /tmp/icon.img https://tiermaker.com/images/templates/6636671605401175.png
minecraft  | [mc-image-helper] 14:50:46.333 DEBUG : FILE FETCH: uri=https://tiermaker.com/images/templates/6636671605401175.png headers=[user-agent: itzg/mc-image-helper/1.39.12 (cmd=unspecified), x-fetch-session: 5f268e7b-814a-4e8b-a1fa-b24359ce50e1, host: tiermaker.com, accept: */*]
minecraft  | [mc-image-helper] 14:50:46.469 DEBUG : Download of https://tiermaker.com/images/templates/6636671605401175.png took 899ms at 300 KB/s
minecraft  | + ICON=/tmp/icon.img
minecraft  | + iconSrc=url
minecraft  | + read -r -a specs
minecraft  | ++ identify /tmp/icon.img
minecraft  | ++ awk 'NR == 1 { print $2, $3 }'
minecraft  | + '[' 'PNG 500x466' = 'PNG 64x64' ']'
minecraft  | + '[' PNG = GIF ']'
minecraft  | + log 'Converting image to 64x64 PNG...'
minecraft  | + local oldState
minecraft  | ++ shopt -po xtrace
minecraft  | + oldState='set -o xtrace'
minecraft  | + shopt -u -o xtrace
minecraft  | [init] 2024-09-27 14:50:46+00:00 Converting image to 64x64 PNG...
minecraft  | + convert /tmp/icon.img -resize '64x64!' /data/server-icon.png
minecraft  | + canUseRollingLogs=true
minecraft  | + useFallbackJvmFlag=false
minecraft  | + [[ -n '' ]]
minecraft  | + SERVER_DIR=/data
minecraft  | ++ shopt -po xtrace
minecraft  | + oldState='set -o xtrace'
minecraft  | + shopt -u -o xtrace
minecraft  | + false
minecraft  | + versionLessThan 1.7
minecraft  | + local oldState
minecraft  | ++ shopt -po xtrace
minecraft  | + oldState='set -o xtrace'
minecraft  | + shopt -u -o xtrace
minecraft  | + return 1
minecraft  | + versionLessThan 1.18.1
minecraft  | + local oldState
minecraft  | ++ shopt -po xtrace
minecraft  | + oldState='set -o xtrace'
minecraft  | + shopt -u -o xtrace
minecraft  | + return 1
minecraft  | + isTrue false
minecraft  | + case "${1,,}" in
minecraft  | + return 1
minecraft  | + versionLessThan 1.14
minecraft  | + local oldState
minecraft  | ++ shopt -po xtrace
minecraft  | + oldState='set -o xtrace'
minecraft  | + shopt -u -o xtrace
minecraft  | + return 1
minecraft  | + [[ '' = false ]]
minecraft  | + expandedDOpts=
minecraft  | + '[' -n '' ']'
minecraft  | + isTrue ''
minecraft  | + case "${1,,}" in
minecraft  | + return 1
minecraft  | + isTrue ''
minecraft  | + case "${1,,}" in
minecraft  | + return 1
minecraft  | + isTrue ''
minecraft  | + case "${1,,}" in
minecraft  | + return 1
minecraft  | + isTrue ''
minecraft  | + case "${1,,}" in
minecraft  | + return 1
minecraft  | + [[ -n 15G ]]
minecraft  | + log 'Setting initial memory to 15G and max to 15G'
minecraft  | + local oldState
minecraft  | ++ shopt -po xtrace
minecraft  | + oldState='set -o xtrace'
minecraft  | + shopt -u -o xtrace
minecraft  | [init] 2024-09-27 14:50:46+00:00 Setting initial memory to 15G and max to 15G
minecraft  | + [[ -n 15G ]]
minecraft  | + JVM_OPTS='-Xms15G '
minecraft  | + [[ -n 15G ]]
minecraft  | + JVM_OPTS='-Xmx15G -Xms15G '
minecraft  | + versionLessThan b1.8
minecraft  | + local oldState
minecraft  | ++ shopt -po xtrace
minecraft  | + oldState='set -o xtrace'
minecraft  | + shopt -u -o xtrace
minecraft  | + return 1
minecraft  | + versionLessThan 1.7
minecraft  | + local oldState
minecraft  | ++ shopt -po xtrace
minecraft  | + oldState='set -o xtrace'
minecraft  | + shopt -u -o xtrace
minecraft  | + return 1
minecraft  | + isTrue ''
minecraft  | + case "${1,,}" in
minecraft  | + return 1
minecraft  | + rm -f /data/.mc-health.env
minecraft  | + mcServerRunnerArgs=(--stop-duration "${STOP_DURATION:-60}s")
minecraft  | + isTrue false
minecraft  | + case "${1,,}" in
minecraft  | + return 1
minecraft  | + [[ -n '' ]]
minecraft  | + isTrue ''
minecraft  | + case "${1,,}" in
minecraft  | + return 1
minecraft  | + [[ NEOFORGE == \C\U\R\S\E\F\O\R\G\E ]]
minecraft  | + [[ NEOFORGE == \C\U\R\S\E\F\O\R\G\E ]]
minecraft  | + [[ /data/./run.sh =~ run.sh ]]
minecraft  | + log 'Using Forge supplied run.sh script...'
minecraft  | + local oldState
minecraft  | ++ shopt -po xtrace
minecraft  | + oldState='set -o xtrace'
minecraft  | + shopt -u -o xtrace
minecraft  | [init] 2024-09-27 14:50:46+00:00 Using Forge supplied run.sh script...
minecraft  | + echo -Xmx15G -Xms15G
minecraft  | + isTrue false
minecraft  | + case "${1,,}" in
minecraft  | + return 1
minecraft  | + isTrue false
minecraft  | + case "${1,,}" in
minecraft  | + return 1
minecraft  | + exec mc-server-runner --stop-duration 60s --shell bash /data/./run.sh
...
...
minecraft  | [14:48:02.532] [main/ERROR] [loading.ModSorter/LOADING]: Missing or unsupported mandatory dependencies:
minecraft  |    Mod ID: 'fancymenu', Requested by: 'fmextension_audio', Expected range: '[2.14.0,)', Actual version: '[MISSING]'
minecraft  |    Mod ID: 'auudio', Requested by: 'fmextension_audio', Expected range: '[1.0.3,)', Actual version: '[MISSING]' 
minecraft  | [14:48:02.737] [main/INFO] [service.hacks.ModuleLayerMigrator/]: Successfully made module authlib transformable 
minecraft  | [14:48:02.956] [main/ERROR] [loader.ConnectorEarlyLoader/]: Skipping early mod setup due to previous error 
minecraft  | [14:48:02.959] [main/INFO] [LaunchServiceHandler/MODLAUNCHER]: Launching target 'forgeserver' with arguments [] 
minecraft  | Exception in thread "main" java.lang.RuntimeException: java.lang.ClassNotFoundException: org.sinytra.connector.mod.DummyTarget
minecraft  |    at MC-BOOTSTRAP/cpw.mods.modlauncher@10.0.9/cpw.mods.modlauncher.LaunchServiceHandlerDecorator.launch(LaunchServiceHandlerDecorator.java:32)
minecraft  |    at MC-BOOTSTRAP/cpw.mods.modlauncher@10.0.9/cpw.mods.modlauncher.LaunchServiceHandler.launch(LaunchServiceHandler.java:53)
minecraft  |    at MC-BOOTSTRAP/cpw.mods.modlauncher@10.0.9/cpw.mods.modlauncher.LaunchServiceHandler.launch(LaunchServiceHandler.java:71)
minecraft  |    at MC-BOOTSTRAP/cpw.mods.modlauncher@10.0.9/cpw.mods.modlauncher.Launcher.run(Launcher.java:108)
minecraft  |    at MC-BOOTSTRAP/cpw.mods.modlauncher@10.0.9/cpw.mods.modlauncher.Launcher.main(Launcher.java:78)
minecraft  |    at MC-BOOTSTRAP/cpw.mods.modlauncher@10.0.9/cpw.mods.modlauncher.BootstrapLaunchConsumer.accept(BootstrapLaunchConsumer.java:26)
minecraft  |    at MC-BOOTSTRAP/cpw.mods.modlauncher@10.0.9/cpw.mods.modlauncher.BootstrapLaunchConsumer.accept(BootstrapLaunchConsumer.java:23)
minecraft  |    at cpw.mods.bootstraplauncher@1.1.2/cpw.mods.bootstraplauncher.BootstrapLauncher.main(BootstrapLauncher.java:141)
minecraft  | Caused by: java.lang.ClassNotFoundException: org.sinytra.connector.mod.DummyTarget
minecraft  |    at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(Unknown Source)
minecraft  |    at java.base/java.lang.ClassLoader.loadClass(Unknown Source)
minecraft  |    at cpw.mods.securejarhandler/cpw.mods.cl.ModuleClassLoader.loadClass(ModuleClassLoader.java:137)
minecraft  |    at java.base/java.lang.ClassLoader.loadClass(Unknown Source)
minecraft  |    at cpw.mods.securejarhandler/cpw.mods.cl.ModuleClassLoader.loadClass(ModuleClassLoader.java:137)
minecraft  |    at java.base/java.lang.ClassLoader.loadClass(Unknown Source)
minecraft  |    at java.base/java.lang.Class.forName0(Native Method)
minecraft  |    at java.base/java.lang.Class.forName(Unknown Source)
minecraft  |    at java.base/java.lang.Class.forName(Unknown Source)
minecraft  |    at LAYER SERVICE/org.sinytra.connector@1.0.0-beta.44+1.20.1/org.sinytra.connector.service.ConnectorLoaderService$1.lambda$updateModuleReads$0(ConnectorLoaderService.java:65)
minecraft  |    at MC-BOOTSTRAP/cpw.mods.modlauncher@10.0.9/cpw.mods.modlauncher.api.LamdbaExceptionUtils.uncheck(LamdbaExceptionUtils.java:95)
minecraft  |    at LAYER SERVICE/org.sinytra.connector@1.0.0-beta.44+1.20.1/org.sinytra.connector.service.ConnectorLoaderService$1.updateModuleReads(ConnectorLoaderService.java:65)
minecraft  |    at MC-BOOTSTRAP/fml_loader@47.2.2/net.minecraftforge.fml.loading.ImmediateWindowHandler.acceptGameLayer(ImmediateWindowHandler.java:71)
minecraft  |    at MC-BOOTSTRAP/fml_loader@47.2.2/net.minecraftforge.fml.loading.FMLLoader.beforeStart(FMLLoader.java:207)
minecraft  |    at MC-BOOTSTRAP/fml_loader@47.2.2/net.minecraftforge.fml.loading.targets.CommonLaunchHandler.launchService(CommonLaunchHandler.java:105)
minecraft  |    at MC-BOOTSTRAP/cpw.mods.modlauncher@10.0.9/cpw.mods.modlauncher.LaunchServiceHandlerDecorator.launch(LaunchServiceHandlerDecorator.java:30)
minecraft  |    ... 7 more
minecraft  | 2024-09-27T14:48:03.326Z   WARN    mc-server-runner    Minecraft server failed. Inspect logs above for errors that indicate cause. DO NOT report this line as an error.    {"exitCode": 1}
minecraft  | 2024-09-27T14:48:03.327Z   INFO    mc-server-runner    Done
minecraft exited with code 1
itzg commented 2 days ago

The "good news" is that is no longer an issue with this image. That is a problem with the modpack, most likely needs a client mod excluded

https://docker-minecraft-server.readthedocs.io/en/latest/types-and-platforms/mod-platforms/auto-curseforge/#exclude-client-mods

Please read the whole section -- it is the mod/pack publisher that should be responsible for proper client/server designations. That's what I meant about difficulty with automating support for modpacks. I have gone to a whole lot of trouble to allow for all these variations, but there's only so much that can be solved.

Katze719 commented 2 days ago

Thanks

CF_EXCLUDE_MODS: |
    audio-extension-for-fancymenu-forge
CF_FORCE_SYNCHRONIZE: true

worked