Refactored StorageChannel enum into an interface (#3138)

This replaces the static enum with a more dynamic interface providing
factory methods for handling network storage.
This commit is contained in:
yueh
2017-10-08 17:59:30 +02:00
committed by GitHub
parent 8ad8ce68b5
commit 6e81f698c0
115 changed files with 1255 additions and 943 deletions
@@ -40,6 +40,7 @@ import appeng.api.networking.crafting.ICraftingPatternDetails;
import appeng.api.networking.security.IActionHost;
import appeng.api.networking.security.IActionSource;
import appeng.api.networking.storage.IStorageGrid;
import appeng.api.storage.channels.IItemStorageChannel;
import appeng.api.storage.data.IAEItemStack;
import appeng.api.storage.data.IItemList;
import appeng.api.util.DimensionalCoord;
@@ -54,8 +55,8 @@ public class CraftingJob implements Runnable, ICraftingJob
private final MECraftingInventory original;
private final World world;
private final IItemList<IAEItemStack> crafting = AEApi.instance().storage().createItemList();
private final IItemList<IAEItemStack> missing = AEApi.instance().storage().createItemList();
private final IItemList<IAEItemStack> crafting = AEApi.instance().storage().getStorageChannel( IItemStorageChannel.class ).createList();
private final IItemList<IAEItemStack> missing = AEApi.instance().storage().getStorageChannel( IItemStorageChannel.class ).createList();
private final HashMap<String, TwoIntegers> opsAndMultiplier = new HashMap<>();
private final Object monitor = new Object();
private final Stopwatch watch = Stopwatch.createUnstarted();
@@ -85,7 +86,8 @@ public class CraftingJob implements Runnable, ICraftingJob
this.callback = callback;
final ICraftingGrid cc = grid.getCache( ICraftingGrid.class );
final IStorageGrid sg = grid.getCache( IStorageGrid.class );
this.original = new MECraftingInventory( sg.getItemInventory(), actionSrc, false, false, false );
this.original = new MECraftingInventory( sg
.getInventory( AEApi.instance().storage().getStorageChannel( IItemStorageChannel.class ) ), actionSrc, false, false, false );
this.setTree( this.getCraftingTree( cc, what ) );
this.availableCheck = null;
@@ -34,6 +34,7 @@ import appeng.api.config.FuzzyMode;
import appeng.api.networking.crafting.ICraftingGrid;
import appeng.api.networking.crafting.ICraftingPatternDetails;
import appeng.api.networking.security.IActionSource;
import appeng.api.storage.channels.IItemStorageChannel;
import appeng.api.storage.data.IAEItemStack;
import appeng.api.storage.data.IItemList;
import appeng.me.cluster.implementations.CraftingCPUCluster;
@@ -45,7 +46,7 @@ public class CraftingTreeNode
// what slot!
private final int slot;
private final CraftingJob job;
private final IItemList<IAEItemStack> used = AEApi.instance().storage().createItemList();
private final IItemList<IAEItemStack> used = AEApi.instance().storage().getStorageChannel( IItemStorageChannel.class ).createList();
// parent node.
private final CraftingTreeProcess parent;
private final World world;
@@ -34,6 +34,7 @@ import appeng.api.config.Actionable;
import appeng.api.networking.crafting.ICraftingGrid;
import appeng.api.networking.crafting.ICraftingPatternDetails;
import appeng.api.networking.security.IActionSource;
import appeng.api.storage.channels.IItemStorageChannel;
import appeng.api.storage.data.IAEItemStack;
import appeng.api.storage.data.IItemList;
import appeng.container.ContainerNull;
@@ -207,7 +208,7 @@ public class CraftingTreeProcess
ItemStack is = ic.getStackInSlot( x );
is = Platform.getContainerItem( is );
final IAEItemStack o = AEApi.instance().storage().createItemStack( is );
final IAEItemStack o = AEApi.instance().storage().getStorageChannel( IItemStorageChannel.class ).createStack( is );
if( o != null )
{
this.bytes++;
@@ -226,7 +227,7 @@ public class CraftingTreeProcess
if( this.containerItems )
{
final ItemStack is = Platform.getContainerItem( stack.createItemStack() );
final IAEItemStack o = AEApi.instance().storage().createItemStack( is );
final IAEItemStack o = AEApi.instance().storage().getStorageChannel( IItemStorageChannel.class ).createStack( is );
if( o != null )
{
this.bytes++;
@@ -24,7 +24,8 @@ import appeng.api.config.Actionable;
import appeng.api.networking.security.IActionSource;
import appeng.api.storage.IMEInventory;
import appeng.api.storage.IMEMonitor;
import appeng.api.storage.StorageChannel;
import appeng.api.storage.IStorageChannel;
import appeng.api.storage.channels.IItemStorageChannel;
import appeng.api.storage.data.IAEItemStack;
import appeng.api.storage.data.IItemList;
import appeng.util.inv.ItemListIgnoreCrafting;
@@ -49,7 +50,7 @@ public class MECraftingInventory implements IMEInventory<IAEItemStack>
public MECraftingInventory()
{
this.localCache = new ItemListIgnoreCrafting<>( AEApi.instance().storage().createItemList() );
this.localCache = new ItemListIgnoreCrafting<>( AEApi.instance().storage().getStorageChannel( IItemStorageChannel.class ).createList() );
this.extractedCache = null;
this.injectedCache = null;
this.missingCache = null;
@@ -69,7 +70,7 @@ public class MECraftingInventory implements IMEInventory<IAEItemStack>
if( this.logMissing )
{
this.missingCache = AEApi.instance().storage().createItemList();
this.missingCache = AEApi.instance().storage().getStorageChannel( IItemStorageChannel.class ).createList();
}
else
{
@@ -78,7 +79,7 @@ public class MECraftingInventory implements IMEInventory<IAEItemStack>
if( this.logExtracted )
{
this.extractedCache = AEApi.instance().storage().createItemList();
this.extractedCache = AEApi.instance().storage().getStorageChannel( IItemStorageChannel.class ).createList();
}
else
{
@@ -87,14 +88,15 @@ public class MECraftingInventory implements IMEInventory<IAEItemStack>
if( this.logInjections )
{
this.injectedCache = AEApi.instance().storage().createItemList();
this.injectedCache = AEApi.instance().storage().getStorageChannel( IItemStorageChannel.class ).createList();
}
else
{
this.injectedCache = null;
}
this.localCache = this.target.getAvailableItems( new ItemListIgnoreCrafting<>( AEApi.instance().storage().createItemList() ) );
this.localCache = this.target
.getAvailableItems( new ItemListIgnoreCrafting<>( AEApi.instance().storage().getStorageChannel( IItemStorageChannel.class ).createList() ) );
this.par = parent;
}
@@ -108,7 +110,7 @@ public class MECraftingInventory implements IMEInventory<IAEItemStack>
if( logMissing )
{
this.missingCache = AEApi.instance().storage().createItemList();
this.missingCache = AEApi.instance().storage().getStorageChannel( IItemStorageChannel.class ).createList();
}
else
{
@@ -117,7 +119,7 @@ public class MECraftingInventory implements IMEInventory<IAEItemStack>
if( logExtracted )
{
this.extractedCache = AEApi.instance().storage().createItemList();
this.extractedCache = AEApi.instance().storage().getStorageChannel( IItemStorageChannel.class ).createList();
}
else
{
@@ -126,14 +128,14 @@ public class MECraftingInventory implements IMEInventory<IAEItemStack>
if( logInjections )
{
this.injectedCache = AEApi.instance().storage().createItemList();
this.injectedCache = AEApi.instance().storage().getStorageChannel( IItemStorageChannel.class ).createList();
}
else
{
this.injectedCache = null;
}
this.localCache = new ItemListIgnoreCrafting<>( AEApi.instance().storage().createItemList() );
this.localCache = new ItemListIgnoreCrafting<>( AEApi.instance().storage().getStorageChannel( IItemStorageChannel.class ).createList() );
for( final IAEItemStack is : target.getStorageList() )
{
this.localCache.add( target.extractItems( is, Actionable.SIMULATE, src ) );
@@ -151,7 +153,7 @@ public class MECraftingInventory implements IMEInventory<IAEItemStack>
if( logMissing )
{
this.missingCache = AEApi.instance().storage().createItemList();
this.missingCache = AEApi.instance().storage().getStorageChannel( IItemStorageChannel.class ).createList();
}
else
{
@@ -160,7 +162,7 @@ public class MECraftingInventory implements IMEInventory<IAEItemStack>
if( logExtracted )
{
this.extractedCache = AEApi.instance().storage().createItemList();
this.extractedCache = AEApi.instance().storage().getStorageChannel( IItemStorageChannel.class ).createList();
}
else
{
@@ -169,14 +171,14 @@ public class MECraftingInventory implements IMEInventory<IAEItemStack>
if( logInjections )
{
this.injectedCache = AEApi.instance().storage().createItemList();
this.injectedCache = AEApi.instance().storage().getStorageChannel( IItemStorageChannel.class ).createList();
}
else
{
this.injectedCache = null;
}
this.localCache = target.getAvailableItems( AEApi.instance().storage().createItemList() );
this.localCache = target.getAvailableItems( AEApi.instance().storage().getStorageChannel( IItemStorageChannel.class ).createList() );
this.par = null;
}
@@ -255,9 +257,9 @@ public class MECraftingInventory implements IMEInventory<IAEItemStack>
}
@Override
public StorageChannel getChannel()
public IStorageChannel getChannel()
{
return StorageChannel.ITEMS;
return AEApi.instance().storage().getStorageChannel( IItemStorageChannel.class );
}
public IItemList<IAEItemStack> getItemList()
@@ -267,8 +269,8 @@ public class MECraftingInventory implements IMEInventory<IAEItemStack>
public boolean commit( final IActionSource src )
{
final IItemList<IAEItemStack> added = AEApi.instance().storage().createItemList();
final IItemList<IAEItemStack> pulled = AEApi.instance().storage().createItemList();
final IItemList<IAEItemStack> added = AEApi.instance().storage().getStorageChannel( IItemStorageChannel.class ).createList();
final IItemList<IAEItemStack> pulled = AEApi.instance().storage().getStorageChannel( IItemStorageChannel.class ).createList();
boolean failed = false;
if( this.logInjections )