Immersive Engineering

Immersive Engineering

134M Downloads

[Compatibility] Consider calling World#updateComparatorOutputLevel() on multiblock item ports

maruohon opened this issue ยท 0 comments

commented

Currently the IE multiblocks only call TileEntity#markDirty() on the master/controller block.
In vanilla, World#updateComparatorOutputLevel() is called via the markDirty() call.

There are item movement mods that rely on the "comparator updates" (basically the Block#onNeighborChange() method call that gets called via it, also don't confuse with Block#neighborChanged() which is for block updates) to get notified of an inventory changing state, and thus a previously unsuccessful item movement operation to possibly become possible. At least the item Pipes in my Autoverse mod work this way. If they "go to sleep" due to not being able to move any items, they then need to receive either a block update or a comparator update to "wake up" and schedule a new update for themselves to try the item movement again.

Thus calling the World#updateComparatorOutputLevel() on the multiblock item input/output blocks themselves, or alternatively just calling Block#onNeighborChange() on the adjacent external block positions when the multiblock internal inventory changes, would allow those types of pipes to work properly with the multiblocks, without requiring an external "updater" like a redstone clock or adjacent item loop to periodically update the pipe adjacent to the multiblock.