Multi-block complexity
Posted by Jeff Disher
Multi-block complexity
The fire logic is now complete for OctoberPeaks 1.2 but not I need to get the multi-block support working, which is another level of complexity.

I added aspects for orientation and multi-block root, so that multi-block objects which always be located in a specific block with generic "extension" blocks placed around it. Clients and mutation logic will need to know to go through this additional level of indirection when interacting.

There are 2 ways of interpreting how to move forward and I keep waffling back and forth on this: (1) Nothing is done to the extensions and they are only used to find the root where everything applies and (2) Everything needs to apply to all the blocks, using the root to find out where all the other blocks are.

I am currently favouring (1) since it avoids the tedium and expense of having every block need to worry about everything from fire to inventories to logic dust. It means that the client will to know about multi-block roots in order to correctly render the changes but the rest of the logic could arguably be handled on the server-side: Any change must either be made directly to the root (like logic dust) and everything else will be passed on from the extensions to the root, at a single tick delay. It isn't obvious if client damage/repair mutations should pre-check this, but I think that is probably most sensible.

Part of the reason for this is to avoid additional complexity since (2) would have required special mutations from the client to apply to every block based on its current view of the world and then lots of special handling for logic dust, fire spread, etc, to handle something which isn't very common.

Either way, this will be tricky and needs to be done in a way that the version 2.x enhanced collision detection can easily use.

I have a feeling that this will take a while,
Jeff.