Starting mod at server side fails due to attempt to load client side class: net/minecraft/client/MainWindow
Closed this issue · 4 comments
Server-side stacktrace:
03May2020 12:20:05.228] [modloading-worker-2/ERROR] [net.minecraftforge.fml.javafmlmod.FMLModContainer/LOADING]: Failed to register automatic subscribers. ModID: bassebombecraft, class bassebombecraft.BassebombeCraft
java.lang.NoClassDefFoundError: net/minecraft/client/MainWindow
at java.lang.Class.getDeclaredConstructors0(Native Method) ~[?:1.8.0_211]
at java.lang.Class.privateGetDeclaredConstructors(Unknown Source) ~[?:1.8.0_211]
at java.lang.Class.getConstructor0(Unknown Source) ~[?:1.8.0_211]
at java.lang.Class.getConstructor(Unknown Source) ~[?:1.8.0_211]
at net.minecraftforge.eventbus.api.EventListenerHelper.computeListenerList(EventListenerHelper.java:96) ~[eventbus-2.0.0-milestone.1-service.jar:?]
at net.minecraftforge.eventbus.api.EventListenerHelper.getListenerListInternal(EventListenerHelper.java:63) ~[eventbus-2.0.0-milestone.1-service.jar:?]
at net.minecraftforge.eventbus.api.EventListenerHelper.getListenerList(EventListenerHelper.java:48) ~[eventbus-2.0.0-milestone.1-service.jar:?]
at net.minecraftforge.eventbus.EventBus.addToListeners(EventBus.java:228) ~[eventbus-2.0.0-milestone.1-service.jar:?]
at net.minecraftforge.eventbus.EventBus.register(EventBus.java:221) ~[eventbus-2.0.0-milestone.1-service.jar:?]
at net.minecraftforge.eventbus.EventBus.registerListener(EventBus.java:138) ~[eventbus-2.0.0-milestone.1-service.jar:?]
at net.minecraftforge.eventbus.EventBus.lambda$registerClass$2(EventBus.java:72) ~[eventbus-2.0.0-milestone.1-service.jar:?]
at java.util.stream.ForEachOps$ForEachOp$OfRef.accept(Unknown Source) ~[?:1.8.0_211]
at java.util.stream.ReferencePipeline$2$1.accept(Unknown Source) ~[?:1.8.0_211]
at java.util.stream.ReferencePipeline$2$1.accept(Unknown Source) ~[?:1.8.0_211]
at java.util.Spliterators$ArraySpliterator.forEachRemaining(Unknown Source) ~[?:1.8.0_211]
at java.util.stream.AbstractPipeline.copyInto(Unknown Source) ~[?:1.8.0_211]
at java.util.stream.AbstractPipeline.wrapAndCopyInto(Unknown Source) ~[?:1.8.0_211]
at java.util.stream.ForEachOps$ForEachOp.evaluateSequential(Unknown Source) ~[?:1.8.0_211]
at java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(Unknown Source) ~[?:1.8.0_211]
at java.util.stream.AbstractPipeline.evaluate(Unknown Source) ~[?:1.8.0_211]
at java.util.stream.ReferencePipeline.forEach(Unknown Source) ~[?:1.8.0_211]
at net.minecraftforge.eventbus.EventBus.registerClass(EventBus.java:72) ~[eventbus-2.0.0-milestone.1-service.jar:?]
at net.minecraftforge.eventbus.EventBus.register(EventBus.java:112) ~[eventbus-2.0.0-milestone.1-service.jar:?]
at net.minecraftforge.fml.AutomaticEventSubscriber.lambda$inject$3(AutomaticEventSubscriber.java:70) ~[?:?]
at java.util.ArrayList.forEach(Unknown Source) ~[?:1.8.0_211]
at net.minecraftforge.fml.AutomaticEventSubscriber.inject(AutomaticEventSubscriber.java:57) ~[?:?]
at net.minecraftforge.fml.javafmlmod.FMLModContainer.constructMod(FMLModContainer.java:141) ~[?:31.1]
at java.util.function.Consumer.lambda$andThen$0(Unknown Source) ~[?:1.8.0_211]
at java.util.function.Consumer.lambda$andThen$0(Unknown Source) ~[?:1.8.0_211]
at net.minecraftforge.fml.ModContainer.transitionState(ModContainer.java:112) ~[?:?]
at net.minecraftforge.fml.ModList.lambda$null$10(ModList.java:134) ~[?:?]
at java.util.stream.ForEachOps$ForEachOp$OfRef.accept(Unknown Source) [?:1.8.0_211]
at java.util.ArrayList$ArrayListSpliterator.forEachRemaining(Unknown Source) [?:1.8.0_211]
at java.util.stream.AbstractPipeline.copyInto(Unknown Source) [?:1.8.0_211]
at java.util.stream.ForEachOps$ForEachTask.compute(Unknown Source) [?:1.8.0_211]
at java.util.concurrent.CountedCompleter.exec(Unknown Source) [?:1.8.0_211]
at java.util.concurrent.ForkJoinTask.doExec(Unknown Source) [?:1.8.0_211]
at java.util.concurrent.ForkJoinPool$WorkQueue.runTask(Unknown Source) [?:1.8.0_211]
at java.util.concurrent.ForkJoinPool.runWorker(Unknown Source) [?:1.8.0_211]
at java.util.concurrent.ForkJoinWorkerThread.run(Unknown Source) [?:1.8.0_211]
Caused by: java.lang.ClassNotFoundException: net.minecraft.client.MainWindow
at java.lang.ClassLoader.findClass(Unknown Source) ~[?:1.8.0_211]
at java.lang.ClassLoader.loadClass(Unknown Source) ~[?:1.8.0_211]
at cpw.mods.modlauncher.TransformingClassLoader.loadClass(TransformingClassLoader.java:101) ~[modlauncher-5.0.0-milestone.4.jar:?]
at java.lang.ClassLoader.loadClass(Unknown Source) ~[?:1.8.0_211]
... 40 more
[03May2020 12:20:05.239] [Server thread/FATAL] [net.minecraftforge.fml.ModLoader/LOADING]: Failed to complete lifecycle event CONSTRUCT, 1 errors found
[03May2020 12:20:05.256] [Server thread/ERROR] [net.minecraft.server.MinecraftServer/]: Encountered an unexpected exception
net.minecraftforge.fml.LoadingFailedException: Loading errors encountered: [
BasseBombeCraft Mod (bassebombecraft) has failed to load correctly
§7net/minecraft/client/MainWindow
Debugging the class loading shows:
�[36m[13:02:55] [modloading-worker-2/DEBUG] [ne.mi.fm.AutomaticEventSubscriber/LOADING]: Auto-subscribing bassebombecraft.client.event.rendering.DecoyRenderer to FORGE
�[m[Loaded bassebombecraft.client.event.rendering.DecoyRenderer from __JVM_DefineClass__]
[Loaded net.minecraftforge.common.ForgeConfig from __JVM_DefineClass__]
[Loaded net.minecraftforge.common.ForgeConfig$Client from __JVM_DefineClass__]
[Loaded net.minecraftforge.common.ForgeConfig$$Lambda$2773/1287132591 from net.minecraftforge.common.ForgeConfig]
[Loaded net.minecraftforge.common.ForgeConfig$Server from __JVM_DefineClass__]
[Loaded net.minecraftforge.common.ForgeConfig$$Lambda$2774/1370288927 from net.minecraftforge.common.ForgeConfig]
�[36m[13:02:55] [modloading-worker-1/DEBUG] [ne.mi.fm.co.ConfigTracker/CONFIG]: Config file forge-client.toml for forge tracking
�[m�[36m[13:02:55] [modloading-worker-1/DEBUG] [ne.mi.fm.co.ConfigTracker/CONFIG]: Config file forge-server.toml for forge tracking
�[m[Loaded net.minecraftforge.eventbus.ASMEventHandler_7_ForgeConfig_onLoad_Loading from __JVM_DefineClass__]
[Loaded net.minecraftforge.eventbus.ASMEventHandler_8_ForgeConfig_onFileChange_Reloading from __JVM_DefineClass__]
[Loaded net.minecraftforge.common.ForgeMod$$Lambda$2775/744668502 from net.minecraftforge.common.ForgeMod]
[Loaded com.google.common.base.Ascii from file:/C:/Users/Thrane/.gradle/caches/modules-2/files-2.1/com.google.guava/guava/21.0/3a3d111be1be1b745edfa7d91678a12d7ed38709/guava-21.0.jar]
[Loaded java.util.concurrent.CopyOnWriteArrayList$COWSubList from C:\Program Files\Java\jdk1.8.0_211\jre\lib\rt.jar]
�[36m[13:02:55] [modloading-worker-1/DEBUG] [ne.mi.fm.ja.FMLModContainer/LOADING]: Loaded mod instance forge of type net.minecraftforge.common.ForgeMod
�[m�[36m[13:02:55] [modloading-worker-1/DEBUG] [ne.mi.fm.ja.FMLModContainer/LOADING]: Injecting Automatic event subscribers for forge
�[m�[36m[13:02:55] [modloading-worker-1/DEBUG] [ne.mi.fm.AutomaticEventSubscriber/LOADING]: Attempting to inject @EventBusSubscriber classes into the eventbus for forge
�[m�[36m[13:02:55] [modloading-worker-1/DEBUG] [ne.mi.fm.ja.FMLModContainer/LOADING]: Completed Automatic event subscribers for forge
�[m[Loaded net.minecraftforge.client.event.RenderLivingEvent from __JVM_DefineClass__]
[Loaded net.minecraftforge.client.event.RenderLivingEvent$Pre from __JVM_DefineClass__]
[Loaded net.minecraftforge.client.event.RenderLivingEvent$Post from __JVM_DefineClass__]
�[36m[13:02:56] [modloading-worker-2/DEBUG] [ne.mi.fm.AutomaticEventSubscriber/LOADING]: Auto-subscribing bassebombecraft.client.event.rendering.DecreaseSizeEffectRenderer to FORGE
�[m[Loaded bassebombecraft.client.event.rendering.DecreaseSizeEffectRenderer from __JVM_DefineClass__]
�[36m[13:02:56] [modloading-worker-2/DEBUG] [ne.mi.fm.AutomaticEventSubscriber/LOADING]: Auto-subscribing bassebombecraft.client.event.rendering.IncreaseSizeEffectRenderer to FORGE
�[m[Loaded bassebombecraft.client.event.rendering.IncreaseSizeEffectRenderer from __JVM_DefineClass__]
�[36m[13:02:56] [modloading-worker-2/DEBUG] [ne.mi.fm.AutomaticEventSubscriber/LOADING]: Auto-subscribing bassebombecraft.client.event.rendering.RenderingEventHandler to FORGE
�[m[Loaded bassebombecraft.client.event.rendering.RenderingEventHandler from __JVM_DefineClass__]
[Loaded bassebombecraft.client.rendering.EntityRenderer from __JVM_DefineClass__]
[Loaded bassebombecraft.client.rendering.DefaultTeamRenderer from __JVM_DefineClass__]
[Loaded bassebombecraft.client.rendering.DefaultTargetEntityRenderer from __JVM_DefineClass__]
[Loaded bassebombecraft.client.rendering.DefaultBoundingBoxEntityRenderer from __JVM_DefineClass__]
[Loaded bassebombecraft.client.rendering.BoundingBoxRenderer from __JVM_DefineClass__]
[Loaded bassebombecraft.client.rendering.WireframeBoundingBoxRenderer from __JVM_DefineClass__]
[Loaded bassebombecraft.client.rendering.DefaultCharmedRenderer from __JVM_DefineClass__]
[Loaded bassebombecraft.client.rendering.DefaultLookAtBlockRenderer from __JVM_DefineClass__]
[Loaded bassebombecraft.client.rendering.DefaultBuildMineRenderer from __JVM_DefineClass__]
[Loaded bassebombecraft.client.rendering.HitByRayTraceBoundingBoxRenderer from __JVM_DefineClass__]
[Loaded net.minecraftforge.client.event.RenderGameOverlayEvent from __JVM_DefineClass__]
[Loaded net.minecraftforge.client.event.RenderWorldLastEvent from __JVM_DefineClass__]
[Loaded net.minecraftforge.client.event.DrawHighlightEvent from __JVM_DefineClass__]
[Loaded net.minecraftforge.client.event.DrawHighlightEvent$HighlightBlock from __JVM_DefineClass__]
[Loaded net.minecraftforge.eventbus.ASMEventHandler_9_RenderingEventHandler_handleRenderGameOverlayEvent_RenderGameOverlayEvent from __JVM_DefineClass__]
�[1;31m[13:02:56] [modloading-worker-2/FATAL] [ne.mi.fm.lo.RuntimeDistCleaner/DISTXFORM]: Attempted to load class net/minecraft/client/MainWindow for invalid dist DEDICATED_SERVER
�[m�[1;31m[13:02:56] [modloading-worker-2/ERROR] [ne.mi.fm.ja.FMLModContainer/LOADING]: Failed to register automatic subscribers. ModID: bassebombecraft, class bassebombecraft.BassebombeCraft
java.lang.RuntimeException: Attempted to load class net/minecraft/client/MainWindow for invalid dist DEDICATED_SERVER
It seems class loading of rendering class are triggered by the auto-subscription of bassebombecraft.client.event.rendering.DecoyRenderer
.
Why is that class registered at server side?
The classes in the package bassebombecraft.client.event.rendering
where the class DecoyRenderer
resides should be registered manually by the method ClientProxy.setupClientSideRendering(..)
.
Solution:
The class DecoyRenderer
had the annotation @Mod.EventBusSubscriber
which registered the class automatically also at server side. Instead of manually registering the renderer through the ClientProxy.setupClientSideRendering(..)
method as intended. The annotation is removed.
Resolved with commit c185dde.