Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Bug] Having ModernUI in a development environment causes data generation to crash #37

Closed
desht opened this issue Jan 5, 2021 · 5 comments

Comments

@desht
Copy link

desht commented Jan 5, 2021

Describe the bug
Having ModernUI in a development environment causes data generation (gradlew runData) to crash with the following stacktrace:

[09:08:22] [modloading-worker-7/ERROR] [ne.mi.fm.ja.FMLModContainer/LOADING]: Failed to create mod instance. ModID: modernui, class icyllis.modernui.system.ModernUI
java.lang.NullPointerException: null
        at icyllis.modernui.graphics.RenderCore.init(RenderCore.java:54) ~[modernui:1.16.4-2.3.2.71] {re:classloading,pl:runtimedistcleaner:A}
        at icyllis.modernui.system.ModernUI.<init>(ModernUI.java:62) ~[modernui:1.16.4-2.3.2.71] {re:classloading}
        at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) ~[?:1.8.0_275] {}
        at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) ~[?:1.8.0_275] {}
        at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) ~[?:1.8.0_275] {}
        at java.lang.reflect.Constructor.newInstance(Constructor.java:423) ~[?:1.8.0_275] {}
        at java.lang.Class.newInstance(Class.java:442) ~[?:1.8.0_275] {}
        at net.minecraftforge.fml.javafmlmod.FMLModContainer.constructMod(FMLModContainer.java:81) ~[forge:35.1] {re:classloading}
        at net.minecraftforge.fml.ModContainer.lambda$buildTransitionHandler$4(ModContainer.java:120) ~[forge:?] {re:classloading}
        at java.util.concurrent.CompletableFuture$AsyncRun.run(CompletableFuture.java:1640) [?:1.8.0_275] {}
        at java.util.concurrent.CompletableFuture$AsyncRun.exec(CompletableFuture.java:1632) [?:1.8.0_275] {}
        at java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:289) [?:1.8.0_275] {}
        at java.util.concurrent.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1056) [?:1.8.0_275] {}
        at java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1692) [?:1.8.0_275] {}
        at java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:175) [?:1.8.0_275] {}

To Reproduce
Steps to reproduce the behavior:

  1. Have ModernUI in your dev environment (I needed to do this as the developer of PneumaticCraft: Repressurized to investigate a mod init crash when ModernUI is present)
  2. Run data generation: ./gradlew runData or use the IDE to launch runData
  3. Data generation will fail with the above stacktrace

Expected behavior
ModernUI should detect that it's being loaded in data generation and gracefully exit. I noticed it will also crash if present on a dedicated server, which isn't ideal.

Screenshots
n/a

Environment

  • Mod Version: 2.3.2.71
  • Forge Version: 35.1.29
  • Operating System: Linux Mint 19.3
  • Graphics Card: GTX 1660
@BloCamLimb
Copy link
Owner

I don't need the data gen so I passed it over, the data gen won't launch minecraft client so the crash. And what conditions does it crash on dedicated server?

@desht
Copy link
Author

desht commented Jan 5, 2021

I had ModernUI in my dev environment via this entry in my gradle dependencies:

    runtimeOnly fg.deobf("curse.maven:modernui:3158102")

This works fine for running/debugging runClient, but will crash with the above exception if runData is used.

I get this exception when ModernUI is present on a dedicated server:

[15:06:26] [modloading-worker-6/FATAL] [ne.mi.fm.lo.RuntimeDistCleaner/DISTXFORM]: Attempted to load class icyllis/modernui/plugin/event/OpenMenuEvent for invalid dist DEDICATED_SERVER
[15:06:26] [modloading-worker-6/ERROR] [ne.mi.fm.ja.FMLModContainer/LOADING]: Failed to create mod instance. ModID: modernui, class icyllis.modernui.system.ModernUI
java.lang.RuntimeException: Attempted to load class icyllis/modernui/plugin/event/OpenMenuEvent for invalid dist DEDICATED_SERVER
	at net.minecraftforge.fml.loading.RuntimeDistCleaner.processClassWithFlags(RuntimeDistCleaner.java:71) ~[forge-1.16.4-35.0.18.jar:35.0] {}
	at cpw.mods.modlauncher.LaunchPluginHandler.offerClassNodeToPlugins(LaunchPluginHandler.java:85) ~[modlauncher-8.0.6.jar:?] {}
	at cpw.mods.modlauncher.ClassTransformer.transform(ClassTransformer.java:119) ~[modlauncher-8.0.6.jar:?] {}
	at cpw.mods.modlauncher.TransformingClassLoader$DelegatedClassLoader.findClass(TransformingClassLoader.java:265) ~[modlauncher-8.0.6.jar:?] {}
	at cpw.mods.modlauncher.TransformingClassLoader.loadClass(TransformingClassLoader.java:136) ~[modlauncher-8.0.6.jar:?] {re:classloading}
	at cpw.mods.modlauncher.TransformingClassLoader.loadClass(TransformingClassLoader.java:98) ~[modlauncher-8.0.6.jar:?] {re:classloading}
	at java.lang.ClassLoader.loadClass(ClassLoader.java:351) ~[?:1.8.0_275] {}
	at java.lang.Class.getDeclaredMethods0(Native Method) ~[?:1.8.0_275] {}
	at java.lang.Class.privateGetDeclaredMethods(Class.java:2701) ~[?:1.8.0_275] {}
	at java.lang.Class.privateGetPublicMethods(Class.java:2902) ~[?:1.8.0_275] {}
	at java.lang.Class.getMethods(Class.java:1615) ~[?:1.8.0_275] {}
	at net.minecraftforge.eventbus.EventBus.registerClass(EventBus.java:75) ~[eventbus-3.0.5-service.jar:?] {}
	at net.minecraftforge.eventbus.EventBus.register(EventBus.java:118) ~[eventbus-3.0.5-service.jar:?] {}
	at icyllis.modernui.system.ModernUI.<init>(ModernUI.java:66) ~[modernui:1.16.4-2.3.0.69] {re:classloading}
	at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) ~[?:1.8.0_275] {}
	at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) ~[?:1.8.0_275] {}
	at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) ~[?:1.8.0_275] {}
	at java.lang.reflect.Constructor.newInstance(Constructor.java:423) ~[?:1.8.0_275] {}
	at java.lang.Class.newInstance(Class.java:442) ~[?:1.8.0_275] {}
	at net.minecraftforge.fml.javafmlmod.FMLModContainer.constructMod(FMLModContainer.java:81) ~[forge:35.0] {re:classloading}
	at net.minecraftforge.fml.ModContainer.lambda$buildTransitionHandler$4(ModContainer.java:120) ~[forge:?] {re:classloading}
	at java.util.concurrent.CompletableFuture$AsyncRun.run(CompletableFuture.java:1640) [?:1.8.0_275] {}
	at java.util.concurrent.CompletableFuture$AsyncRun.exec(CompletableFuture.java:1632) [?:1.8.0_275] {}
	at java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:289) [?:1.8.0_275] {}
	at java.util.concurrent.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1056) [?:1.8.0_275] {}
	at java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1692) [?:1.8.0_275] {}
	at java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:175) [?:1.8.0_275] {}

@BloCamLimb
Copy link
Owner

It seems that gradle cache not updated, the crash was already fixed in 2.3.2

@desht
Copy link
Author

desht commented Jan 5, 2021

You're right, my apologies. 2.3.2.71 is loading fine for me.

The runData issue stands, though. While it's not a show-stopper, it's a pain to need to remove ModernUI from my dev environment if/when need to do a datagen run...

@BloCamLimb
Copy link
Owner

My latest commit fixes that.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants