Fixed a bug where interfaces would try to send items into cables ( or other IInv implementations that can't accept items. )

This commit is contained in:
AlgorithmX2 2014-07-11 18:59:55 -05:00
parent ef759c7a7e
commit 93940c151d

View file

@ -778,7 +778,8 @@ public class DualityInterface implements IGridTickable, ISegmentedInventory, ISt
InventoryAdaptor ad = InventoryAdaptor.getAdaptor( te, s.getOpposite() ); InventoryAdaptor ad = InventoryAdaptor.getAdaptor( te, s.getOpposite() );
if ( ad != null ) if ( ad != null )
{ {
if ( acceptsItems( ad, table ) )
{
for (int x = 0; x < table.getSizeInventory(); x++) for (int x = 0; x < table.getSizeInventory(); x++)
{ {
ItemStack is = table.getStackInSlot( x ); ItemStack is = table.getStackInSlot( x );
@ -787,15 +788,30 @@ public class DualityInterface implements IGridTickable, ISegmentedInventory, ISt
addToSendList( ad.addItems( is ) ); addToSendList( ad.addItems( is ) );
} }
} }
pushItemsOut( possibleDirections ); pushItemsOut( possibleDirections );
return true; return true;
} }
} }
}
return false; return false;
} }
private boolean acceptsItems(InventoryAdaptor ad, InventoryCrafting table)
{
for (int x = 0; x < table.getSizeInventory(); x++)
{
ItemStack is = table.getStackInSlot( x );
if ( is == null )
continue;
if ( ad.simulateAdd( is.copy() ) != null )
return false;
}
return true;
}
private void pushItemsOut(EnumSet<ForgeDirection> possibleDirections) private void pushItemsOut(EnumSet<ForgeDirection> possibleDirections)
{ {
if ( !hasItemsToSend() ) if ( !hasItemsToSend() )
@ -826,8 +842,6 @@ public class DualityInterface implements IGridTickable, ISegmentedInventory, ISt
if ( whatToSend == null ) if ( whatToSend == null )
i.remove(); i.remove();
else
whatToSend.stackSize = whatToSend.stackSize;
} }
if ( waitingToSend.isEmpty() ) if ( waitingToSend.isEmpty() )