Lootr (Forge & NeoForge)

Lootr (Forge & NeoForge)

59M Downloads

[1.20.1] Crash on Creating World

HockeyZman2000 opened this issue ยท 7 comments

commented

crash-2023-09-26_17.11.11-server.txt
latest.log

Forge 47.2.0
Lootr 1.20-0.7.30.73

commented

So this means that there are points in time where the storage is inaccessible. I'll try to create a custom build for 1.20 that checks for the nullness of the overworld to see if that helps in your case, although it is not ideal in the long term.

I'm not sure what a good long term solution would be.

commented

Can you try out this build? lootr-1.20-0.7.30.75.jar.zip You'll need to rename it from .jar.zip to .jar; it has a higher version number but it hasn't been released yet.

This build:

  • Checks the overworld for nullness and returns null in data storage
  • In all decay/refresh checks, if the data storage is null, provide a warning and skip the call
  • In all "get contents" calls, print out if the data storage is null but also raise an exception.

In theory, this should catch instances where the "tick decay" or "tick refresh" are firing before the overworld has been constructed and prevent a crash (which is the crash that you're experiencing). This shouldn't be happening but obviously something has changed or there's some edge case.

It will still crash if you open a chest ("get contents" call) and the data storage is null. If players are moving around the world at this point (rather than just the first few ticks of the server), and the overworld isn't accessible, something is terribly, terribly wrong.

Please let me know if this solves the issue and I'll do an official release.

commented

Further investigation, you seem t obe runnign spark-1.10.54-forge.jar; according ot CurseForge, this is the version for Minecraft 1.20.2. Please try downgrading to 1.10.53, which is for 1.20.1, and seeing if the error still occurs.

commented

Trying to work out the exact cause of this.

It appears as though MinecraftServer::overworld's returning null, which implies that the standard server post-tick is ticking when the server hasn't been properly constructed. I'm not sure under what circumstances this could happen, as the overworld is the first level that is created and stored, and it is never unloaded.

Sifting through the latest.log, I notice an earlier error with spark:

java.lang.NullPointerException: Cannot invoke "java.lang.Thread.getId()" because "thread" is null
	at TRANSFORMER/spark@1.10.54/me.lucko.spark.common.sampler.ThreadDumper$Specific.<init>(ThreadDumper.java:145)
	at TRANSFORMER/spark@1.10.54/me.lucko.spark.forge.plugin.ForgeServerSparkPlugin.<init>(ForgeServerSparkPlugin.java:101)

This is taking place inside the "ServerAboutToStart" event. I'm not sure if it's possible that the error in this event is preventing proper construction; indeed, I'm surprised that this error (which occurs before the Lootr error) isn't actually what's causing the server to crash.

Could you try two things for me:

  • Remove Lootr and test to see if your server loads properly (to ensure that it is an issue with Lootr)
  • If it still crashes, remove spark and reinstate Lootr and then test to see if it loads properly.
commented

java.lang.NullPointerException: Cannot invoke "java.lang.Thread.getId()" because "thread" is null at TRANSFORMER/[email protected]/me.lucko.spark.common.sampler.ThreadDumper$Specific.<init>(ThreadDumper.java:145) at TRANSFORMER/[email protected]/me.lucko.spark.forge.plugin.ForgeServerSparkPlugin.<init>(ForgeServerSparkPlugin.java:101)

Still seems to occur even with version 1.10.53 of Spark.
Also can verify that the world does load without Lootr installed.

commented

I've actually stopped coming across this problem for some reason, most likely was being caused by another mod that got updated at some point. I've been playing on the pack for a week now with the same version as before with no problems so you can feel free to close the issue if you want or even release that version still. Thank you for your help!

commented

I'll leave this on the back-burner then!