As a small addendum - better up to date example than digging through the messy old threads. This is getting dangerously close to derailing the thread so if a big non-liquid discussion takes place it is probably better to do over in the block storage thread - but liquid is a critical part of it.
I'm pondering if it would make sense to merge some of the core systems. Lighting and "block integrity" in particular were prime candidates for this in the past as solid (opaque) blocks wasted two entire nibbles of light data (in the old days at least, before the changes from Panserbjoern) that could almost perfectly be used for block integrity instead (only solid blocks provide structural support for the world)
That gets trickier when you get to something like a Greek column block shape - clearly that should provide structural support, yet as a non-full block it also is lit up. I was thinking maybe in that relatively rare case (the ratio of Greek column blocks vs natural blocks in the entire world remains pretty low) the lighting could take over and the column makes itself an entity to handle support needs (and interaction with nice handy levers that break the column at just the right time)
Other similar interactions exist, like liquid rising around said Greek column. Right now that wouldn't work as both the column block and the liquid use the primary block ID byte. So liquids might need to grow independent from the block ID - maybe we should store the liquid type in the liquid per-block data described in the top post here, or even in a singular "block network" type entity instead of block-level data in the first place.
I could go on and on about theorizing the exact combinations of block data, extra data, and entity data but ... yeah that gets too complicated, so I'll leave it at this. Maybe we need a handy little table with the different combinations
I'm pondering if it would make sense to merge some of the core systems. Lighting and "block integrity" in particular were prime candidates for this in the past as solid (opaque) blocks wasted two entire nibbles of light data (in the old days at least, before the changes from Panserbjoern) that could almost perfectly be used for block integrity instead (only solid blocks provide structural support for the world)
That gets trickier when you get to something like a Greek column block shape - clearly that should provide structural support, yet as a non-full block it also is lit up. I was thinking maybe in that relatively rare case (the ratio of Greek column blocks vs natural blocks in the entire world remains pretty low) the lighting could take over and the column makes itself an entity to handle support needs (and interaction with nice handy levers that break the column at just the right time)
Other similar interactions exist, like liquid rising around said Greek column. Right now that wouldn't work as both the column block and the liquid use the primary block ID byte. So liquids might need to grow independent from the block ID - maybe we should store the liquid type in the liquid per-block data described in the top post here, or even in a singular "block network" type entity instead of block-level data in the first place.
I could go on and on about theorizing the exact combinations of block data, extra data, and entity data but ... yeah that gets too complicated, so I'll leave it at this. Maybe we need a handy little table with the different combinations