docker-minecraft-server icon indicating copy to clipboard operation
docker-minecraft-server copied to clipboard

Ultimate Progression: Sky Shulker Tooltip has class loading errors

Open Craneneaulos opened this issue 1 year ago • 9 comments

Describe the problem

Hello, I'm trying to set up a server on the Ultimate Progression modpack: Sky. Unfortunately, when launching my docker-compose file, I encounter an error that seems to be related to ShulkerTooltip. I'm unable to fix the error or generate an exclusion of the mod in my docker-compose file.

I'm posting the docker-compose and the end of the bug report below.

Container definition

version: "3.8"

services:
  mc:
    image: itzg/minecraft-server:java8-multiarch
    ports:
      - "25566:25566"
    environment:
      VERSION: 1.16.5
      DEBUG: true
      EULA: "true"
      MOD_PLATFORM: AUTO_CURSEFORGE
      CF_API_KEY: '********'
      CF_SLUG: ultimate-progression-sky
      CF_FILE_ID: "4978917"
      MOTD: "Ultimate Progression Sky"
      MEMORY: 8G # 4G for base server + 2G per player
      ALLOW_FLIGHT: true
      ENABLE_COMMAND_BLOCK: true
      DIFFICULTY: hard
        # CF_EXCLUDE_MODS: ShulkerTooltip*.jar
        # CF_FORCE_SYNCHRONIZE: true

    volumes:
      - ./data:/data
      - ./downloads:/downloads

Container logs

Suspected Mods: None[18:49:31] [main/FATAL] [minecraft/Main]: Failed to start the minecraft server
mc-1  | net.minecraftforge.fml.LoadingFailedException: Loading errors encountered: [
mc-1  |         Shulker Tooltip has class loading errors
mc-1  | §7java.lang.ExceptionInInitializerError: null
mc-1  | ]
mc-1  |         at net.minecraftforge.fml.ModLoader.gatherAndInitializeMods(ModLoader.java:176) ~[forge:?] {re:classloading}
mc-1  |         at net.minecraftforge.fml.server.ServerModLoader.load(ServerModLoader.java:30) ~[forge:?] {re:classloading}
mc-1  |         at net.minecraft.server.Main.main(Main.java:95) ~[?:?] {re:classloading,re:mixin,pl:mixin:A}
mc-1  |         at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_312] {}
mc-1  |         at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:1.8.0_312] {}
mc-1  |         at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_312] {}
mc-1  |         at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_312] {}
mc-1  |         at net.minecraftforge.fml.loading.FMLServerLaunchProvider.lambda$launchService$0(FMLServerLaunchProvider.java:37) ~[forge-1.16.5-36.2.39.jar:36.2] {}
mc-1  |         at cpw.mods.modlauncher.LaunchServiceHandlerDecorator.launch(LaunchServiceHandlerDecorator.java:37) [modlauncher-8.1.3.jar:?] {re:classloading}
mc-1  |         at cpw.mods.modlauncher.LaunchServiceHandler.launch(LaunchServiceHandler.java:54) [modlauncher-8.1.3.jar:?] {re:classloading}
mc-1  |         at cpw.mods.modlauncher.LaunchServiceHandler.launch(LaunchServiceHandler.java:72) [modlauncher-8.1.3.jar:?] {re:classloading}
mc-1  |         at cpw.mods.modlauncher.Launcher.run(Launcher.java:82) [modlauncher-8.1.3.jar:?] {re:classloading}
mc-1  |         at cpw.mods.modlauncher.Launcher.main(Launcher.java:66) [modlauncher-8.1.3.jar:?] {re:classloading}
mc-1  |         at net.minecraftforge.server.ServerMain$Runner.runLauncher(ServerMain.java:49) [forge-1.16.5-36.2.39.jar:?] {re:classloading}
mc-1  |         at net.minecraftforge.server.ServerMain$Runner.access$100(ServerMain.java:46) [forge-1.16.5-36.2.39.jar:?] {re:classloading}
mc-1  |         at net.minecraftforge.server.ServerMain.main(ServerMain.java:43) [forge-1.16.5-36.2.39.jar:?] {re:classloading}
mc-1  | 2024-03-26T18:49:31.447Z        INFO    mc-server-runner        Done
mc-1 exited with code 0

Craneneaulos avatar Mar 26 '24 19:03 Craneneaulos

I was able to get it running by excluding the ShulkerTooltip mod which looks like you tried to do. This is the format I used:

CF_IGNORE_MISSING_FILES: |
  mods/ShulkerTooltip-1.10.jar

rhullah avatar Mar 26 '24 23:03 rhullah

I just realized I used the wrong option (even though it resulted in still excluding the mod). But it's likely better to use the proper option such as the following:

CF_EXCLUDE_MODS: shulker-tooltip

And that option supports:

passing a comma or space delimited list of project slugs or IDs

rhullah avatar Mar 27 '24 04:03 rhullah

Okay, it works very well with the right option. When I tried to apply it, I must have done something wrong. After that, I still can't connect to the server. I already have a Minecraft server running on the machine. I would like both to work simultaneously, so I changed the ports on the new one as can be seen above in the docker-compose.yml.

But when I enter my IP with port 25566 on the modpack, I get the message: io.netty.channel.AbstractChannel$AnnotatedConnectException: Connection refused: no further information."

Craneneaulos avatar Mar 27 '24 17:03 Craneneaulos

When you use a different port, you only should/need to change the host side (left of the colon), and leave the container side (right of the colon) as-is. So you would set it to: "25566:25565".

rhullah avatar Mar 27 '24 17:03 rhullah

It's perfect! Everything works as it should. I'm new to docker and don't really understand how ports work yet.

Craneneaulos avatar Mar 27 '24 18:03 Craneneaulos

Here's a diagram I had created to help visualize the port mappings

https://github.com/itzg/docker-minecraft-server/blob/master/notes/container-network-namespaces.drawio.png

itzg avatar Mar 27 '24 20:03 itzg

Thank you for the diagrams, they are really clear and have helped me understand how it works.

However, when I came back from work, my first server was off and I couldn't restart it. So, I shut down everything, restarted my machine, and now neither of the two servers wants to boot up... I have the same error report for both servers. The only thing I changed was the API key because I thought that might be the issue, but it didn't solve the problem.

mc-1 | [mc-image-helper] 18:43:04.488 ERROR : 'install-curseforge' command failed. Version is 1.38.7 mc-1 | me.itzg.helpers.http.FailedRequestException: HTTP request of https://files.minecraftforge.net/maven/net/minecraftforge/forge/promotions_slim.json failed with 301 Moved Permanently: Fetching object content mc-1 | at me.itzg.helpers.http.FetchBuilderBase.lambda$failedRequestMono$2(FetchBuilderBase.java:195) mc-1 | at reactor.core.publisher.MonoFlatMap$FlatMapMain.onNext(MonoFlatMap.java:132) mc-1 | at reactor.core.publisher.FluxDefaultIfEmpty$DefaultIfEmptySubscriber.onNext(FluxDefaultIfEmpty.java:122) mc-1 | at reactor.core.publisher.FluxHandle$HandleSubscriber.onNext(FluxHandle.java:129) mc-1 | at reactor.core.publisher.FluxMap$MapConditionalSubscriber.onNext(FluxMap.java:224) mc-1 | at reactor.core.publisher.FluxDoFinally$DoFinallySubscriber.onNext(FluxDoFinally.java:113) mc-1 | at reactor.core.publisher.FluxHandleFuseable$HandleFuseableSubscriber.onNext(FluxHandleFuseable.java:194) mc-1 | at reactor.core.publisher.FluxContextWrite$ContextWriteSubscriber.onNext(FluxContextWrite.java:107) mc-1 | at reactor.core.publisher.Operators$BaseFluxToMonoOperator.completePossiblyEmpty(Operators.java:2071) mc-1 | at reactor.core.publisher.MonoCollectList$MonoCollectListSubscriber.onComplete(MonoCollectList.java:118) mc-1 | at reactor.core.publisher.FluxPeek$PeekSubscriber.onComplete(FluxPeek.java:260) mc-1 | at reactor.core.publisher.FluxMap$MapSubscriber.onComplete(FluxMap.java:144) mc-1 | at reactor.netty.channel.FluxReceive.onInboundComplete(FluxReceive.java:415) mc-1 | at reactor.netty.channel.ChannelOperations.onInboundComplete(ChannelOperations.java:446) mc-1 | at reactor.netty.channel.ChannelOperations.terminate(ChannelOperations.java:500) mc-1 | at reactor.netty.http.client.HttpClientOperations.onInboundNext(HttpClientOperations.java:782) mc-1 | at reactor.netty.channel.ChannelOperationsHandler.channelRead(ChannelOperationsHandler.java:114) mc-1 | at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:444) mc-1 | at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420) mc-1 | at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412) mc-1 | at io.netty.handler.timeout.IdleStateHandler.channelRead(IdleStateHandler.java:286) mc-1 | at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:442) mc-1 | at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420) mc-1 | at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412) mc-1 | at io.netty.channel.CombinedChannelDuplexHandler$DelegatingChannelHandlerContext.fireChannelRead(CombinedChannelDuplexHandler.java:436) mc-1 | at io.netty.handler.codec.ByteToMessageDecoder.fireChannelRead(ByteToMessageDecoder.java:346) mc-1 | at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:318) mc-1 | at io.netty.channel.CombinedChannelDuplexHandler.channelRead(CombinedChannelDuplexHandler.java:251) mc-1 | at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:442) mc-1 | at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420) mc-1 | at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412) mc-1 | at io.netty.handler.ssl.SslHandler.unwrap(SslHandler.java:1475) mc-1 | at io.netty.handler.ssl.SslHandler.decodeJdkCompatible(SslHandler.java:1338) mc-1 | at io.netty.handler.ssl.SslHandler.decode(SslHandler.java:1387) mc-1 | at io.netty.handler.codec.ByteToMessageDecoder.decodeRemovalReentryProtection(ByteToMessageDecoder.java:529) mc-1 | at io.netty.handler.codec.ByteToMessageDecoder.callDecode(ByteToMessageDecoder.java:468) mc-1 | at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:290) mc-1 | at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:444) mc-1 | at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420) mc-1 | at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412) mc-1 | at io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1410) mc-1 | at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:440) mc-1 | at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420) mc-1 | at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:919) mc-1 | at io.netty.channel.epoll.AbstractEpollStreamChannel$EpollStreamUnsafe.epollInReady(AbstractEpollStreamChannel.java:800) mc-1 | at io.netty.channel.epoll.EpollEventLoop.processReady(EpollEventLoop.java:509) mc-1 | at io.netty.channel.epoll.EpollEventLoop.run(EpollEventLoop.java:407) mc-1 | at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:997) mc-1 | at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74) mc-1 | at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30) mc-1 | at java.lang.Thread.run(Thread.java:748) mc-1 | Suppressed: java.lang.Exception: #block terminated with an error mc-1 | at reactor.core.publisher.BlockingSingleSubscriber.blockingGet(BlockingSingleSubscriber.java:103) mc-1 | at reactor.core.publisher.Mono.block(Mono.java:1712) mc-1 | at me.itzg.helpers.http.ObjectFetchBuilder.execute(ObjectFetchBuilder.java:44) mc-1 | at me.itzg.helpers.forge.ForgeInstallerResolver.loadPromotions(ForgeInstallerResolver.java:115) mc-1 | at me.itzg.helpers.forge.ForgeInstallerResolver.resolve(ForgeInstallerResolver.java:40) mc-1 | at me.itzg.helpers.forge.ForgeInstaller.install(ForgeInstaller.java:58) mc-1 | at me.itzg.helpers.curseforge.CurseForgeInstaller.prepareForge(CurseForgeInstaller.java:925) mc-1 | at me.itzg.helpers.curseforge.CurseForgeInstaller.prepareModLoader(CurseForgeInstaller.java:902) mc-1 | at me.itzg.helpers.curseforge.CurseForgeInstaller.finalizeExistingInstallation(CurseForgeInstaller.java:452) mc-1 | at me.itzg.helpers.curseforge.CurseForgeInstaller.resolveModpackFileAndProcess(CurseForgeInstaller.java:350) mc-1 | at me.itzg.helpers.curseforge.CurseForgeInstaller.installByRetrievingModpackZip(CurseForgeInstaller.java:257) mc-1 | at me.itzg.helpers.curseforge.CurseForgeInstaller.lambda$install$3(CurseForgeInstaller.java:176) mc-1 | at me.itzg.helpers.curseforge.CurseForgeInstaller.install(CurseForgeInstaller.java:213) mc-1 | at me.itzg.helpers.curseforge.CurseForgeInstaller.install(CurseForgeInstaller.java:175) mc-1 | at me.itzg.helpers.curseforge.InstallCurseForgeCommand.call(InstallCurseForgeCommand.java:226) mc-1 | at me.itzg.helpers.curseforge.InstallCurseForgeCommand.call(InstallCurseForgeCommand.java:30) mc-1 | at picocli.CommandLine.executeUserObject(CommandLine.java:2041) mc-1 | at picocli.CommandLine.access$1500(CommandLine.java:148) mc-1 | at picocli.CommandLine$RunLast.executeUserObjectOfLastSubcommandWithSameParent(CommandLine.java:2461) mc-1 | at picocli.CommandLine$RunLast.handle(CommandLine.java:2453) mc-1 | at picocli.CommandLine$RunLast.handle(CommandLine.java:2415) mc-1 | at picocli.CommandLine$AbstractParseResultHandler.execute(CommandLine.java:2273) mc-1 | at picocli.CommandLine$RunLast.execute(CommandLine.java:2417) mc-1 | at picocli.CommandLine.execute(CommandLine.java:2170) mc-1 | at me.itzg.helpers.McImageHelper.main(McImageHelper.java:159) mc-1 | [mc-image-helper] 18:43:04.493 DEBUG : Failed request details: FailedRequestException(uri=https://files.minecraftforge.net/maven/net/minecraftforge/forge/promotions_slim.json, statusCode=301, body=Moved Permanently, headers=DefaultHttpHeaders[Date: Fri, 29 Mar 2024 18:43:04 GMT, Content-Type: text/plain; charset=utf-8, Content-Length: 17, Connection: keep-alive, Location: https://files.minecraftforge.net/maven/net/minecraftforge/forge/promotions_slim.json, CF-Cache-Status: DYNAMIC, Report-To: {"endpoints":[{"url":"https://a.nel.cloudflare.com/report/v4?s=6I%2F2gAu1cIe5RoGZun3BQGl9QxABdNlY7XglwMBehjwOZpS3xWjjUPZvQY7Bc8kwNVvdPHfq0Ii1%2FYwfDydFo5Y1anTAKH%2F%2BzrRqy0zSNT6CWIVrVLW1Xoh86DuXdMZKaRIDlU7YafltqP8%3D"}],"group":"cf-nel","max_age":604800}, NEL: {"success_fraction":0,"report_to":"cf-nel","max_age":604800}, Server: cloudflare, CF-RAY: 86c200e06cc06f04-CDG, alt-svc: h3=":443"; ma=86400]) mc-1 | + log 'ERROR failed to auto-install CurseForge modpack' mc-1 | + local oldState mc-1 | ++ shopt -po xtrace mc-1 | + oldState='set -o xtrace' mc-1 | + shopt -u -o xtrace mc-1 | [init] 2024-03-29 18:43:04+00:00 ERROR failed to auto-install CurseForge modpack mc-1 | + exit 1 mc-1 exited with code 1

Craneneaulos avatar Mar 29 '24 18:03 Craneneaulos

Try it again. Others were having the same issue (#2748) and seems to be resolved now.

rhullah avatar Mar 29 '24 22:03 rhullah

Indeed, the problem resolved itself after a few hours.

Craneneaulos avatar Mar 31 '24 18:03 Craneneaulos

This issue is stale because it has been open 30 days with no activity. Please add a comment describing the reason to keep this issue open.

github-actions[bot] avatar May 01 '24 02:05 github-actions[bot]