Integrated Dynamics and Moonrise incompatibility
Shopper7 opened this issue ยท 5 comments
Issue type:
- ๐ Bug
Short description:
Using Integrated Dynamics on a server with Moonrise leads to the server being unable to actually load the chunks that have ID (and its addons) blocks on them. Server proceeds to crash if the server was restarted and someone tries to load these chunks in from a fresh state.
Steps to reproduce the problem:
- Install ID and Integrated Terminals and Moonrise on NeoForge (and their dependencies.)
- Build an ID setup on an already generated chunk.
- Use it/build it out until it can't be fully loaded. The chunk must be first unloaded for this to happen, for example, by the player going somewhere else in the world until the chunk is unloaded.
- Restart the server.
- Try to join the server.
- Server should crash each time the player tries to load that chunk in.
Expected behaviour:
Moonrise and ID work together without issues.
Versions:
This issue was found around 3 weeks ago while using Craftoria 1.4.1
Due to no changes related to this happening from either side, this should be still applicable in newer versions of Neo, ID and Moonrise.
- This mod: 1.23.6, 1.5.2 for IT
- Minecraft: 1.21.1
- Mod loader version: Neo 21.1.59
Log file:
More info
This exact issue was first reported to embeddedt, one of the developers of Moonrise (and a bunch of other mods).
After his talk with other Tuinity members, the issue was pinpointed to ID doing the following:
"The cable block attempts to read its current state from the world instead of using the state the light engine gives it"
According to the Moonrise team, this is something that's fully the fault of the ID side, and not something they can fix on their side.
"The cable block attempts to read its current state from the world instead of using the state the light engine gives it"
I don't immediately see how this description relates to the crashlog...
@embeddedt do you have some more insights to share on this issue?
The crashlog seems to indicate that some deadlock is occurring while ID is loading a block during network loading, which happens at server start.
Refer to lines 581-602 of the crash report. The CapabilityHelpersNeoForge.getCapability
function invokes Level.getBlockState
, which can cause deadlocks during lighting.
I am told using the blockstate already provided in BlockCable.getLightBlock
instead of re-retrieving it from the level will fix this.
(By the way, I'm not a member of the Tuinity team, I've just contributed a bit to development in the past.)
Oh I see. Thanks for the help @embeddedt! Should be an easy fix.