Improved Blocking Behavior for interfaces with inventories on multiple sides.

AE now ignores inventories that have no sizes this will improve a few strange behaviors.
This commit is contained in:
AlgorithmX2
2014-07-23 11:47:59 -05:00
parent 175e21782a
commit 253221e494
2 changed files with 19 additions and 4 deletions
+12 -2
View File
@@ -740,6 +740,8 @@ public class DualityInterface implements IGridTickable, ISegmentedInventory, ISt
TileEntity tile = iHost.getTileEntity();
World w = tile.getWorldObj();
boolean allAreBusy=true;
for (ForgeDirection s : possibleDirections)
{
TileEntity te = w.getTileEntity( tile.xCoord + s.offsetX, tile.yCoord + s.offsetY, tile.zCoord + s.offsetZ );
@@ -747,13 +749,15 @@ public class DualityInterface implements IGridTickable, ISegmentedInventory, ISt
InventoryAdaptor ad = InventoryAdaptor.getAdaptor( te, s.getOpposite() );
if ( ad != null )
{
if ( ad.simulateRemove( 1, null, null ) != null )
if ( ad.simulateRemove( 1, null, null ) == null )
{
busy = true;
allAreBusy = false;
break;
}
}
}
busy = allAreBusy;
}
return busy;
@@ -804,6 +808,12 @@ public class DualityInterface implements IGridTickable, ISegmentedInventory, ISt
InventoryAdaptor ad = InventoryAdaptor.getAdaptor( te, s.getOpposite() );
if ( ad != null )
{
if ( isBlocking() )
{
if ( ad.simulateRemove( 1, null, null ) != null )
continue;
}
if ( acceptsItems( ad, table ) )
{
for (int x = 0; x < table.getSizeInventory(); x++)
+7 -2
View File
@@ -65,11 +65,16 @@ public abstract class InventoryAdaptor implements Iterable<ItemSlot>
}
else if ( te instanceof ISidedInventory )
{
return new AdaptorIInventory( new WrapperMCISidedInventory( (ISidedInventory) te, d ) );
ISidedInventory si =(ISidedInventory)te;
int[] slots = si.getAccessibleSlotsFromSide( d.ordinal() );
if ( si.getSizeInventory() > 0 && slots != null && slots.length > 0 )
return new AdaptorIInventory( new WrapperMCISidedInventory( si, d ) );
}
else if ( te instanceof IInventory )
{
return new AdaptorIInventory( (IInventory) te );
IInventory i =(IInventory)te;
if ( i.getSizeInventory() > 0 )
return new AdaptorIInventory( i );
}
return null;