@@ -192,16 +192,29 @@ public abstract class AbstractCellInventory<T extends IAEStack<T>> implements IC
|
|||||||
this.cellItems.resetStatus(); // clears totals and stuff.
|
this.cellItems.resetStatus(); // clears totals and stuff.
|
||||||
|
|
||||||
final int types = (int) this.getStoredItemTypes();
|
final int types = (int) this.getStoredItemTypes();
|
||||||
|
boolean needsUpdate = false;
|
||||||
|
|
||||||
for( int slot = 0; slot < types; slot++ )
|
for( int slot = 0; slot < types; slot++ )
|
||||||
{
|
{
|
||||||
NBTTagCompound compoundTag = this.tagCompound.getCompoundTag( ITEM_SLOT_KEYS[slot] );
|
NBTTagCompound compoundTag = this.tagCompound.getCompoundTag( ITEM_SLOT_KEYS[slot] );
|
||||||
int stackSize = this.tagCompound.getInteger( ITEM_SLOT_COUNT_KEYS[slot] );
|
int stackSize = this.tagCompound.getInteger( ITEM_SLOT_COUNT_KEYS[slot] );
|
||||||
this.loadCellItem( compoundTag, stackSize );
|
needsUpdate |= !this.loadCellItem( compoundTag, stackSize );
|
||||||
|
}
|
||||||
|
|
||||||
|
if( needsUpdate )
|
||||||
|
{
|
||||||
|
this.saveChanges();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
protected abstract void loadCellItem( NBTTagCompound compoundTag, int stackSize );
|
/**
|
||||||
|
* Load a single item.
|
||||||
|
*
|
||||||
|
* @param compoundTag
|
||||||
|
* @param stackSize
|
||||||
|
* @return true when successfully loaded
|
||||||
|
*/
|
||||||
|
protected abstract boolean loadCellItem( NBTTagCompound compoundTag, int stackSize );
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public IItemList<T> getAvailableItems( final IItemList<T> out )
|
public IItemList<T> getAvailableItems( final IItemList<T> out )
|
||||||
|
|||||||
@@ -253,7 +253,7 @@ public class BasicCellInventory<T extends IAEStack<T>> extends AbstractCellInven
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void loadCellItem( NBTTagCompound compoundTag, int stackSize )
|
protected boolean loadCellItem( NBTTagCompound compoundTag, int stackSize )
|
||||||
{
|
{
|
||||||
// Now load the item stack
|
// Now load the item stack
|
||||||
final T t;
|
final T t;
|
||||||
@@ -263,7 +263,7 @@ public class BasicCellInventory<T extends IAEStack<T>> extends AbstractCellInven
|
|||||||
if( t == null )
|
if( t == null )
|
||||||
{
|
{
|
||||||
AELog.warn( "Removing item " + compoundTag + " from storage cell because the associated item type couldn't be found." );
|
AELog.warn( "Removing item " + compoundTag + " from storage cell because the associated item type couldn't be found." );
|
||||||
return;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
catch( Throwable ex )
|
catch( Throwable ex )
|
||||||
@@ -271,7 +271,7 @@ public class BasicCellInventory<T extends IAEStack<T>> extends AbstractCellInven
|
|||||||
if( AEConfig.instance().isRemoveCrashingItemsOnLoad() )
|
if( AEConfig.instance().isRemoveCrashingItemsOnLoad() )
|
||||||
{
|
{
|
||||||
AELog.warn( ex, "Removing item " + compoundTag + " from storage cell because loading the ItemStack crashed." );
|
AELog.warn( ex, "Removing item " + compoundTag + " from storage cell because loading the ItemStack crashed." );
|
||||||
return;
|
return false;
|
||||||
}
|
}
|
||||||
throw ex;
|
throw ex;
|
||||||
}
|
}
|
||||||
@@ -282,5 +282,7 @@ public class BasicCellInventory<T extends IAEStack<T>> extends AbstractCellInven
|
|||||||
{
|
{
|
||||||
this.cellItems.add( t );
|
this.cellItems.add( t );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user