The current lighting implementation has always been brittle. It has relied on cooperation from other non-lighting-related classes and also had a decent amount of race conditions. Because these are structural issues, lighting has been fully rewritten to work as a standalone chunk implementation. This also means that users could now properly implement their own lighting logic, without needing to fork minestom to get the before mentioned support from other classes. As a result, access to light data has been fully removed from the default Section class, which really has nothing to do with lighting...
- When the client receives a chunk, it uses the light data from the chunk data packet
- When the client receives a block change, it correctly propagates light
- The LightUpdatePacket is sent by the server, when a chunk X is tracked, and at least one of the 8 surrounding chunks is not tracked by the client.
- Sending a LightUpdatePacket when it shouldn't be sent can cause an