Unfinished, projected merge blocks detach before welding

AshleyRiot shared this bug 23 hours ago
Submitted

Since Update 1.210, projections supported through a merge-block pair can repeatedly weld and eject unfinished merge blocks. This breaks automated missile/drone printers, particularly on survival servers. Creative single-player generally works because the block is created fully built.

MyShipMergeBlock.UpdateOnceBeforeFrame() now unconditionally refreshes both merge-block neighbours:

MyShipMergeBlock other = GetOtherMergeBlock(); if (other != null) { CubeGrid.UpdateBlockNeighbours(SlimBlock); CubeGrid.UpdateBlockNeighbours(other.SlimBlock); }

While the projected merge is unfinished, IsWorking == false. ConnectionAllowedInternal() therefore rejects its merge-face neighbour, causing grid-disconnection detection to split it away.

This appears to be a regression from the 1.210 fix for grids remaining attached to disabled merge blocks.

Fix Only refresh merge neighbours following an actual IsWorking state transition, rather than on every UpdateOnceBeforeFrame() call. Also refresh the opposing block through its owning grid:

CubeGrid.UpdateBlockNeighbours(SlimBlock); other.CubeGrid.UpdateBlockNeighbours(other.SlimBlock);

This should preserve deliberate merge-block disconnection while allowing newly projected merge blocks to remain supported until functional.

Leave a Comment
 
Attach a file