CaffeineMC / lithium-fabric

A Fabric mod designed to improve the general performance of Minecraft without breaking things
GNU Lesser General Public License v3.0
1.94k stars 188 forks source link

Allow externally changing Lithium's blockstate counters #506

Closed Steveplays28 closed 7 months ago

Steveplays28 commented 9 months ago

Is your feature request related to a problem? Please describe. Noisium and Big Globe use a performance optimisation during world generation that directly sets blocks in the palette instead of using setBlock(). Currently, both Noisium and Big Globe increment vanilla's blockstate counters for parity, which works fine for vanilla, but not for Lithium. Lithium has custom blockstate counters that need to be set for underwater entities to behave correctly, such as squids and fish. If these blockstate counters are not set correctly during worldgen, it will cause underwater entities to fall and drown in water.

Describe the solution you'd like A way for other mods to increment Lithium's blockstate counters using an API. Moving the implementation out of the mixin would probably be required.

Describe alternatives you've considered Calling Minecraft's vanilla blockstate counter method, instead of manually incrementing vanilla's blockstate counters. This is expensive though and would be very suboptimal.

Additional context See also https://github.com/Steveplays28/noisium/issues/10. Included in that issue is a video showing the issue.