cache fixes

This commit is contained in:
Salomão
2021-06-14 12:57:49 -03:00
parent 59effe8131
commit d69395a117
2 changed files with 22 additions and 11 deletions
@@ -304,6 +304,8 @@ class ItemHandlerAdapter implements IMEInventory<IAEItemStack>, IBaseMonitor<IAE
} }
} }
IItemList<IAEItemStack> newCachedAeStacks = AEApi.instance().storage().getStorageChannel( IItemStorageChannel.class ).createList();
Iterator<IAEItemStack> cachedAeStacksIterator = cachedAeStacks.iterator(); Iterator<IAEItemStack> cachedAeStacksIterator = cachedAeStacks.iterator();
while ( cachedAeStacksIterator.hasNext() ) while ( cachedAeStacksIterator.hasNext() )
{ {
@@ -313,9 +315,13 @@ class ItemHandlerAdapter implements IMEInventory<IAEItemStack>, IBaseMonitor<IAE
{ {
changes.add( cachedStack.setStackSize( -cachedStack.getStackSize() ) ); changes.add( cachedStack.setStackSize( -cachedStack.getStackSize() ) );
} }
else if( cachedStack.getStackSize() != storedStack.getStackSize() ) else
{ {
handleStackSizeChanged( cachedStack, storedStack, changes ); newCachedAeStacks.add( storedStack );
if( cachedStack.getStackSize() != storedStack.getStackSize() )
{
handleStackSizeChanged( cachedStack, storedStack, changes );
}
} }
} }
@@ -323,11 +329,13 @@ class ItemHandlerAdapter implements IMEInventory<IAEItemStack>, IBaseMonitor<IAE
{ {
if( cachedAeStacks.findPrecise( storedStack ) == null ) if( cachedAeStacks.findPrecise( storedStack ) == null )
{ {
cachedAeStacks.add( storedStack ); newCachedAeStacks.add( storedStack );
changes.add( storedStack.copy() ); changes.add( storedStack.copy() );
} }
} }
this.cachedAeStacks = newCachedAeStacks;
return changes; return changes;
} }
@@ -338,8 +346,6 @@ class ItemHandlerAdapter implements IMEInventory<IAEItemStack>, IBaseMonitor<IAE
if( diff != 0 ) if( diff != 0 )
{ {
cachedStack.setStackSize( storedStack.getStackSize() );
final IAEItemStack diffStack = cachedStack.copy(); final IAEItemStack diffStack = cachedStack.copy();
diffStack.setStackSize( diff ); diffStack.setStackSize( diff );
changes.add( diffStack ); changes.add( diffStack );
@@ -205,6 +205,8 @@ class ItemRepositoryAdapter implements IMEInventory<IAEItemStack>, IBaseMonitor<
IItemList<IAEItemStack> storage = AEApi.instance().storage().getStorageChannel( IItemStorageChannel.class ).createList(); IItemList<IAEItemStack> storage = AEApi.instance().storage().getStorageChannel( IItemStorageChannel.class ).createList();
this.iItemRepository.getAllItems().stream().map( s -> AEItemStack.fromItemStack( s.itemPrototype ).setStackSize( s.count ) ).forEach( storage::add ); this.iItemRepository.getAllItems().stream().map( s -> AEItemStack.fromItemStack( s.itemPrototype ).setStackSize( s.count ) ).forEach( storage::add );
IItemList<IAEItemStack> newCachedAeStacks = AEApi.instance().storage().getStorageChannel( IItemStorageChannel.class ).createList();
Iterator<IAEItemStack> cachedAeStacksIterator = cachedAeStacks.iterator(); Iterator<IAEItemStack> cachedAeStacksIterator = cachedAeStacks.iterator();
while ( cachedAeStacksIterator.hasNext() ) while ( cachedAeStacksIterator.hasNext() )
{ {
@@ -213,11 +215,14 @@ class ItemRepositoryAdapter implements IMEInventory<IAEItemStack>, IBaseMonitor<
if( storedStack == null ) if( storedStack == null )
{ {
changes.add( cachedStack.setStackSize( -cachedStack.getStackSize() ) ); changes.add( cachedStack.setStackSize( -cachedStack.getStackSize() ) );
cachedAeStacksIterator.remove();
} }
else if( cachedStack.getStackSize() != storedStack.getStackSize() ) else
{ {
handleStackSizeChanged( cachedStack, storedStack, changes ); newCachedAeStacks.add( storedStack );
if( cachedStack.getStackSize() != storedStack.getStackSize() )
{
handleStackSizeChanged( cachedStack, storedStack, changes );
}
} }
} }
@@ -225,11 +230,13 @@ class ItemRepositoryAdapter implements IMEInventory<IAEItemStack>, IBaseMonitor<
{ {
if( cachedAeStacks.findPrecise( storedStack ) == null ) if( cachedAeStacks.findPrecise( storedStack ) == null )
{ {
cachedAeStacks.add( storedStack ); newCachedAeStacks.add( storedStack );
changes.add( storedStack.copy() ); changes.add( storedStack.copy() );
} }
} }
this.cachedAeStacks = newCachedAeStacks;
return changes; return changes;
} }
@@ -240,8 +247,6 @@ class ItemRepositoryAdapter implements IMEInventory<IAEItemStack>, IBaseMonitor<
if( diff != 0 ) if( diff != 0 )
{ {
cachedStack.setStackSize( storedStack.getStackSize() );
final IAEItemStack diffStack = cachedStack.copy(); final IAEItemStack diffStack = cachedStack.copy();
diffStack.setStackSize( diff ); diffStack.setStackSize( diff );
changes.add( diffStack ); changes.add( diffStack );