PaperMC / Starlight

Rewrites the light engine to fix lighting performance and lighting errors
Other
1.27k stars 136 forks source link

[Forge 1.19.2] Issue with FramedBlocks #190

Closed unweeked closed 1 year ago

unweeked commented 1 year ago

Having both FramedBlocks and Starlight installed, glowing blocks from FramedBlocks won't emit light anymore after a relog into the world. I hope you're still active because I love both mods and it would be awesome to be able to use both together. (:

Spottedleaf commented 1 year ago

Yeah this must be because they route their TileEntity retrieval to the Vanilla method, which will return null server-side due to the light engine being run off-main. So their methods to retrieve the correct light source value will not work serverside, and so when you log in again you will see the server's computed light value.

Relates to https://github.com/PaperMC/Starlight/issues/197

Spottedleaf commented 1 year ago

After looking at the code again, it's become clear to me that I can't fix this. The TileEntity data is not actually available until the chunk has completely loaded into the world, and so as long as Starlight does edge checks this may happen. I'm pretty sure if you were to wipe the light data without Starlight installed it would also happen, as the Vanilla light engine doesn't do anything different when calculating values - just that Starlight performs checks on loading that Vanilla doesn't.

It's generally not safe for mods to be accessing this data off-main anyways, which is why Vanilla returns null.

I can tell from the general design of the mod that it's not really their fault either, making this work while being thread-safe is a not really easy since there's no way that Forge provides to facilitate this behavior and that this is a general architecture issue with how TEs and BlockStates work.

You will have to use Vanilla. In 1.20, it's not really bad anyways.