fix blocking mode somehow voiding items

This commit is contained in:
PrototypeTrousers
2022-02-22 19:00:01 -03:00
parent 30f4cdf545
commit b0e81ac2d1
5 changed files with 32 additions and 18 deletions
@@ -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
View File
@@ -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;
}