fix blocking mode somehow voiding items
This commit is contained in:
@@ -561,6 +561,7 @@ public class DualityInterface implements IGridTickable, IStorageMonitorable, IIn
|
||||
{
|
||||
try
|
||||
{
|
||||
this.gridProxy.getGrid().postEvent( new MENetworkCraftingPatternChange( this, this.gridProxy.getNode() ) );
|
||||
this.gridProxy.getTick().wakeDevice( this.gridProxy.getNode() );
|
||||
}
|
||||
catch( final GridAccessException e )
|
||||
@@ -808,17 +809,18 @@ public class DualityInterface implements IGridTickable, IStorageMonitorable, IIn
|
||||
return;
|
||||
}
|
||||
|
||||
final InventoryAdaptor ad = InventoryAdaptor.getAdaptor( te, s.getOpposite() );
|
||||
|
||||
final Iterator<ItemStack> i = this.waitingToSendFacing.get( s ).iterator();
|
||||
while ( i.hasNext() )
|
||||
{
|
||||
ItemStack whatToSend = i.next();
|
||||
final InventoryAdaptor ad = InventoryAdaptor.getAdaptor( te, s.getOpposite() );
|
||||
if( ad != null )
|
||||
{
|
||||
final ItemStack result = ad.addItems( whatToSend );
|
||||
if( !result.isEmpty() )
|
||||
{
|
||||
whatToSend.setCount( whatToSend.getCount() - ( whatToSend.getCount() - result.getCount() ) );
|
||||
whatToSend.setCount( result.getCount() );
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
+14
-8
@@ -115,7 +115,7 @@ public class CraftingGridCache implements ICraftingGrid, ICraftingProviderHelper
|
||||
private IEnergyGrid energyGrid;
|
||||
int i;
|
||||
private boolean updateList = false;
|
||||
private boolean updatePatterns = true;
|
||||
private boolean updatePatterns = false;
|
||||
|
||||
public CraftingGridCache( final IGrid grid )
|
||||
{
|
||||
@@ -415,14 +415,20 @@ public class CraftingGridCache implements ICraftingGrid, ICraftingProviderHelper
|
||||
if( !updatePatterns )
|
||||
{
|
||||
List<IAEItemStack> newCraftables = new ArrayList<>();
|
||||
for( IAEItemStack stack : api.getOutputs() )
|
||||
|
||||
ObjectSet<ICraftingPatternDetails> b = new ObjectRBTreeSet<>( COMPARATOR );
|
||||
ImmutableList<ICraftingPatternDetails> a = this.craftableItems.get( api.getCondensedOutputs()[0] );
|
||||
if( a != null )
|
||||
{
|
||||
ImmutableList<ICraftingPatternDetails> a = this.craftableItems.get( stack );
|
||||
if( a == null || a.get( 0 ).getPriority() < api.getPriority() )
|
||||
{
|
||||
this.craftableItems.put( stack, ImmutableList.of( api ) );
|
||||
newCraftables.add( stack.copy().reset().setCraftable( true ) );
|
||||
}
|
||||
b.addAll( this.craftableItems.get( api.getOutputs()[0] ) );
|
||||
}
|
||||
b.add( api );
|
||||
|
||||
for( IAEItemStack stack : api.getCondensedOutputs() )
|
||||
{
|
||||
IAEItemStack i = stack.copy().reset().setCraftable( true );
|
||||
this.craftableItems.put( i, ImmutableList.copyOf( b ) );
|
||||
newCraftables.add( i );
|
||||
}
|
||||
this.storageGrid.postCraftablesChanges( AEApi.instance().storage().getStorageChannel( IItemStorageChannel.class ), newCraftables, new BaseActionSource() );
|
||||
}
|
||||
|
||||
@@ -232,6 +232,10 @@ public class AdaptorItemHandler extends InventoryAdaptor
|
||||
|
||||
for( int slot = 0; slot < this.itemHandler.getSlots(); slot++ )
|
||||
{
|
||||
if( !simulate )
|
||||
{
|
||||
itemsToAdd = itemsToAdd.copy();
|
||||
}
|
||||
itemsToAdd = this.itemHandler.insertItem( slot, itemsToAdd, simulate );
|
||||
|
||||
if( itemsToAdd.isEmpty() )
|
||||
|
||||
@@ -163,23 +163,26 @@ public class AdaptorItemRepository extends InventoryAdaptor
|
||||
return this.addItems( toBeAdded, false );
|
||||
}
|
||||
|
||||
protected ItemStack addItems( final ItemStack itemsToAdd, final boolean simulate )
|
||||
protected ItemStack addItems( ItemStack itemsToAdd, final boolean simulate )
|
||||
{
|
||||
if( itemsToAdd.isEmpty() )
|
||||
{
|
||||
return ItemStack.EMPTY;
|
||||
}
|
||||
|
||||
ItemStack left = itemsToAdd.copy();
|
||||
if( !simulate )
|
||||
{
|
||||
itemsToAdd = itemsToAdd.copy();
|
||||
}
|
||||
|
||||
left = this.itemRepository.insertItem( left, simulate );
|
||||
itemsToAdd = this.itemRepository.insertItem( itemsToAdd, simulate );
|
||||
|
||||
if( left.isEmpty() )
|
||||
if( itemsToAdd.isEmpty() )
|
||||
{
|
||||
return ItemStack.EMPTY;
|
||||
}
|
||||
|
||||
return left;
|
||||
return itemsToAdd;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -37,11 +37,10 @@ public class BlockingItemHandler extends BlockingInventoryAdaptor
|
||||
for( int slot = 0; slot < slots; slot++ )
|
||||
{
|
||||
ItemStack is = this.itemHandler.getStackInSlot( slot );
|
||||
if( is.isEmpty() || !isBlockableItem( is ) )
|
||||
if( !is.isEmpty() && isBlockableItem( is ) )
|
||||
{
|
||||
continue;
|
||||
return true;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user