Storage Buses should only update the grid when their target changes.

don't set the item count via IDSU unless the count changes ( ignore full inventories )
This commit is contained in:
AlgorithmX2 2014-07-21 22:50:40 -05:00
parent 3ef02cb485
commit 92171d36d3
2 changed files with 17 additions and 13 deletions

View file

@ -37,12 +37,15 @@ public class MFRDSU implements IMEInventory<IAEItemStack>
if ( input.equals( is ) )
{
long max = dsu.getMaxStoredCount();
long additiona = is.stackSize;
additiona += input.getStackSize();
if ( additiona > max )
long storedItems = is.stackSize;
if ( max == storedItems )
return input;
storedItems += input.getStackSize();
if ( storedItems > max )
{
IAEItemStack overflow = AEItemStack.create( is );
overflow.setStackSize( (int) (additiona - max) );
overflow.setStackSize( (int) (storedItems - max) );
if ( mode == Actionable.MODULATE )
dsu.setStoredItemCount( (int) max );
return overflow;

View file

@ -166,15 +166,6 @@ public class PartStorageBus extends PartUpgradeable implements IGridTickable, IC
cached = false;
if ( fullReset )
handlerHash = 0;
try
{
// force grid to update handlers...
proxy.getGrid().postEvent( new MENetworkCellArrayUpdate() );
}
catch (GridAccessException e)
{
// :3
}
IMEInventory<IAEItemStack> out = getInternalHandler();
IItemList<IAEItemStack> after = AEApi.instance().storage().createItemList();
@ -237,6 +228,16 @@ public class PartStorageBus extends PartUpgradeable implements IGridTickable, IC
if ( handlerHash == newHandlerHash && handlerHash != 0 )
return handler;
try
{
// force grid to update handlers...
proxy.getGrid().postEvent( new MENetworkCellArrayUpdate() );
}
catch (GridAccessException e)
{
// :3
}
handlerHash = newHandlerHash;
handler = null;
monitor = null;