Err too much.

This commit is contained in:
AlgorithmX2
2014-01-20 10:41:37 -06:00
parent 5652ec30ec
commit 834e9c04c5
159 changed files with 7953 additions and 1541 deletions
+29 -2
View File
@@ -3,6 +3,7 @@ package appeng.me.storage;
import java.util.HashSet;
import java.util.Iterator;
import net.minecraft.inventory.IInventory;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTBase;
@@ -11,8 +12,10 @@ import net.minecraft.nbt.NBTTagInt;
import net.minecraft.nbt.NBTTagShort;
import net.minecraftforge.oredict.OreDictionary;
import appeng.api.config.Actionable;
import appeng.api.config.FuzzyMode;
import appeng.api.exceptions.AppEngException;
import appeng.api.implementations.IStorageCell;
import appeng.api.networking.security.BaseActionSource;
import appeng.api.storage.IMEInventory;
import appeng.api.storage.IMEInventoryHandler;
import appeng.api.storage.StorageChannel;
@@ -335,7 +338,7 @@ public class CellInventory implements IMEInventory<IAEItemStack>
}
@Override
public IAEItemStack injectItems(IAEItemStack input, Actionable mode)
public IAEItemStack injectItems(IAEItemStack input, Actionable mode, BaseActionSource src)
{
if ( input == null )
return null;
@@ -422,7 +425,7 @@ public class CellInventory implements IMEInventory<IAEItemStack>
}
@Override
public IAEItemStack extractItems(IAEItemStack request, Actionable mode)
public IAEItemStack extractItems(IAEItemStack request, Actionable mode, BaseActionSource src)
{
if ( request == null )
return null;
@@ -482,4 +485,28 @@ public class CellInventory implements IMEInventory<IAEItemStack>
return CellType.getIdleDrain();
}
public FuzzyMode getFuzzyMode()
{
return CellType.getFuzzyMode( this.i );
}
public IInventory getConfigInventory()
{
return CellType.getConfigInventory( this.i );
}
public IInventory getUpgradesInventory()
{
return CellType.getUpgradesInventory( this.i );
}
public int getStatusForCell()
{
if ( canHoldNewItem() )
return 1;
if ( remainingItemCount() > 0 )
return 2;
return 3;
}
}
+69 -2
View File
@@ -1,9 +1,20 @@
package appeng.me.storage;
import net.minecraft.inventory.IInventory;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import appeng.api.config.FuzzyMode;
import appeng.api.config.IncludeExclude;
import appeng.api.config.Upgrades;
import appeng.api.implementations.IUpgradeModule;
import appeng.api.storage.IMEInventory;
import appeng.api.storage.data.IAEItemStack;
import appeng.api.storage.data.IItemList;
import appeng.util.Platform;
import appeng.util.item.AEItemStack;
import appeng.util.item.ItemList;
import appeng.util.prioitylist.FuzzyPriorityList;
import appeng.util.prioitylist.PrecisePriorityList;
public class CellInventoryHandler extends MEInventoryHandler<IAEItemStack>
{
@@ -15,11 +26,67 @@ public class CellInventoryHandler extends MEInventoryHandler<IAEItemStack>
public CellInventory getCellInv()
{
return (CellInventory) (this.internal instanceof CellInventory ? this.internal : null);
Object o = this.internal;
if ( o instanceof MEPassthru )
o = ((MEPassthru) o).getInternal();
return (CellInventory) (o instanceof CellInventory ? o : null);
}
CellInventoryHandler(IMEInventory c) {
super( c );
}
CellInventory ci = getCellInv();
if ( ci != null )
{
IItemList priorityList = new ItemList();
IInventory upgrades = ci.getUpgradesInventory();
IInventory config = ci.getConfigInventory();
FuzzyMode fzMode = ci.getFuzzyMode();
boolean hasInverter = false;
boolean hasFuzzy = false;
for (int x = 0; x < upgrades.getSizeInventory(); x++)
{
ItemStack is = upgrades.getStackInSlot( x );
if ( is != null && is.getItem() instanceof IUpgradeModule )
{
Upgrades u = ((IUpgradeModule) is.getItem()).getType( is );
if ( u != null )
{
switch (u)
{
case FUZZY:
hasFuzzy = true;
break;
case INVERTER:
hasInverter = true;
break;
default:
}
}
}
}
for (int x = 0; x < config.getSizeInventory(); x++)
{
ItemStack is = config.getStackInSlot( x );
if ( is != null )
priorityList.add( AEItemStack.create( is ) );
}
myWhitelist = hasInverter ? IncludeExclude.BLACKLIST : IncludeExclude.WHITELIST;
if ( !priorityList.isEmpty() )
{
if ( hasFuzzy )
myPartitionList = new FuzzyPriorityList<IAEItemStack>( priorityList, fzMode );
else
myPartitionList = new PrecisePriorityList<IAEItemStack>( priorityList );
}
}
}
}
+57 -66
View File
@@ -1,18 +1,22 @@
package appeng.me.storage;
import net.minecraft.item.ItemStack;
import appeng.api.config.AccessRestriction;
import appeng.api.config.Actionable;
import appeng.api.exceptions.AppEngException;
import appeng.api.implementations.IStorageCell;
import appeng.api.networking.security.BaseActionSource;
import appeng.api.storage.IMEInventoryHandler;
import appeng.api.storage.StorageChannel;
import appeng.api.storage.data.IAEItemStack;
import appeng.util.Platform;
import appeng.api.storage.data.IItemList;
import appeng.items.storage.CellConfig;
import appeng.util.item.AEItemStack;
import appeng.util.item.ItemList;
public class CreativeCellInventory extends CellInventory implements IStorageCell
public class CreativeCellInventory implements IMEInventoryHandler<IAEItemStack>
{
ItemList itemListCache;
ItemList<IAEItemStack> itemListCache = new ItemList();
public static IMEInventoryHandler getCell(ItemStack o)
{
@@ -28,58 +32,20 @@ public class CreativeCellInventory extends CellInventory implements IStorageCell
}
protected CreativeCellInventory(ItemStack o) throws AppEngException {
super( Platform.openNbtData( o ) );
if ( MAX_ITEM_TYPES > 63 )
MAX_ITEM_TYPES = 63;
if ( MAX_ITEM_TYPES < 1 )
MAX_ITEM_TYPES = 1;
storedItems = tagCompound.getShort( ITEM_TYPE_TAG );
storedItemCount = tagCompound.getInteger( ITEM_COUNT_TAG );
cellItems = null;
CellConfig cc = new CellConfig( o );
for (ItemStack is : cc)
if ( is != null )
{
IAEItemStack i = AEItemStack.create( is );
i.setStackSize( Integer.MAX_VALUE );
itemListCache.add( i );
}
}
@Override
public boolean isStorageCell(ItemStack i)
public IAEItemStack injectItems(IAEItemStack input, Actionable mode, BaseActionSource src)
{
return true;
}
@Override
public int getBytes(ItemStack cellItem)
{
return 0;
}
@Override
public int BytePerType(ItemStack iscellItem)
{
return 8;
}
@Override
public int getTotalTypes(ItemStack cellItem)
{
return 63;
}
@Override
public boolean isBlackListed(ItemStack cellItem, IAEItemStack requsetedAddition)
{
return false;
}
@Override
public boolean storableInStorageCell()
{
return false;
}
@Override
public IAEItemStack injectItems(IAEItemStack input, Actionable mode)
{
IAEItemStack local = getCellItems().findPrecise( input );
IAEItemStack local = itemListCache.findPrecise( input );
if ( local == null )
return input;
@@ -87,9 +53,9 @@ public class CreativeCellInventory extends CellInventory implements IStorageCell
}
@Override
public IAEItemStack extractItems(IAEItemStack request, Actionable mode)
public IAEItemStack extractItems(IAEItemStack request, Actionable mode, BaseActionSource src)
{
IAEItemStack local = getCellItems().findPrecise( request );
IAEItemStack local = itemListCache.findPrecise( request );
if ( local == null )
return null;
@@ -97,22 +63,47 @@ public class CreativeCellInventory extends CellInventory implements IStorageCell
}
@Override
ItemList<IAEItemStack> getCellItems()
public IItemList<IAEItemStack> getAvailableItems(IItemList out)
{
if ( itemListCache != null )
return itemListCache;
for (IAEItemStack ais : itemListCache)
out.add( ais );
return out;
}
ItemList list = new ItemList();
CellInventoryHandler handler = new CellInventoryHandler( this );
@Override
public StorageChannel getChannel()
{
return StorageChannel.ITEMS;
}
for (IAEItemStack is : handler.myPartitionList.getItems())
{
IAEItemStack b = is.copy();
b.setStackSize( Integer.MAX_VALUE );
list.add( b );
}
@Override
public AccessRestriction getAccess()
{
return AccessRestriction.READ_WRITE;
}
return itemListCache = list;
@Override
public boolean isPrioritized(IAEItemStack input)
{
return itemListCache.findPrecise( input ) != null;
}
@Override
public boolean canAccept(IAEItemStack input)
{
return itemListCache.findPrecise( input ) != null;
}
@Override
public int getPriority()
{
return 0;
}
@Override
public int getSlot()
{
return 0;
}
}
+63
View File
@@ -0,0 +1,63 @@
package appeng.me.storage;
import net.minecraft.item.ItemStack;
import appeng.api.config.Actionable;
import appeng.api.implementations.IChestOrDrive;
import appeng.api.networking.security.BaseActionSource;
import appeng.api.storage.ICellHandler;
import appeng.api.storage.IMEInventory;
import appeng.api.storage.data.IAEStack;
public class DriveWatcher<T extends IAEStack<T>> extends MEInventoryHandler<T>
{
int oldStatus = 0;
final ItemStack is;
final ICellHandler handler;
final IChestOrDrive cord;
public DriveWatcher(IMEInventory<T> i, ItemStack is, ICellHandler han, IChestOrDrive cod) {
super( i );
this.is = is;
handler = han;
cord = cod;
}
@Override
public T injectItems(T input, Actionable type, BaseActionSource src)
{
long size = input.getStackSize();
T a = super.injectItems( input, type, src );
if ( a == null || a.getStackSize() != size )
{
int newStatus = handler.getStatusForCell( is, getInternal() );
if ( newStatus != oldStatus )
{
cord.blinkCell( getSlot() );
}
}
return a;
}
@Override
public T extractItems(T request, Actionable type, BaseActionSource src)
{
T a = super.extractItems( request, type, src );
if ( a != null )
{
int newStatus = handler.getStatusForCell( is, getInternal() );
if ( newStatus != oldStatus )
{
cord.blinkCell( getSlot() );
}
}
return a;
}
}
+171 -171
View File
@@ -1,171 +1,171 @@
package appeng.me.storage;
import java.util.Collection;
import java.util.HashSet;
import java.util.Iterator;
import appeng.api.networking.storage.IStackWatcher;
import appeng.api.networking.storage.IStackWatcherHost;
import appeng.api.storage.data.IAEStack;
import appeng.me.cache.GridStorageCache;
/**
* Maintain my interests, and a global watch list, they should always be fully synchronized.
*/
public class ItemWatcher implements IStackWatcher
{
class ItemWatcherIterator implements Iterator<IAEStack>
{
final ItemWatcher watcher;
final Iterator<IAEStack> interestIterator;
IAEStack myLast;
public ItemWatcherIterator(ItemWatcher parent, Iterator<IAEStack> i) {
watcher = parent;
interestIterator = i;
}
@Override
public boolean hasNext()
{
return interestIterator.hasNext();
}
@Override
public IAEStack next()
{
return myLast = interestIterator.next();
}
@Override
public void remove()
{
gsc.interests.remove( myLast, watcher );
interestIterator.remove();
}
};
GridStorageCache gsc;
IStackWatcherHost myObject;
HashSet<IAEStack> myInterests = new HashSet();
public ItemWatcher(GridStorageCache cache, IStackWatcherHost host) {
gsc = cache;
myObject = host;
}
public IStackWatcherHost getHost()
{
return myObject;
}
@Override
public boolean add(IAEStack e)
{
if ( myInterests.contains( e ) )
return false;
return myInterests.add( e.copy() ) && gsc.interests.put( e, this );
}
@Override
public boolean addAll(Collection<? extends IAEStack> c)
{
boolean didChange = false;
for (IAEStack o : c)
didChange = add( o ) || didChange;
return didChange;
}
@Override
public void clear()
{
Iterator<IAEStack> i = myInterests.iterator();
while (i.hasNext())
{
gsc.interests.remove( i.next(), this );
i.remove();
}
}
@Override
public boolean contains(Object o)
{
return myInterests.contains( o );
}
@Override
public boolean containsAll(Collection<?> c)
{
return myInterests.containsAll( c );
}
@Override
public boolean isEmpty()
{
return myInterests.isEmpty();
}
@Override
public Iterator<IAEStack> iterator()
{
return new ItemWatcherIterator( this, myInterests.iterator() );
}
@Override
public boolean remove(Object o)
{
return myInterests.remove( o ) && gsc.interests.remove( o, this );
}
@Override
public boolean removeAll(Collection<?> c)
{
boolean didSomething = false;
for (Object o : c)
didSomething = remove( o ) || didSomething;
return didSomething;
}
@Override
public boolean retainAll(Collection<?> c)
{
boolean changed = false;
Iterator<IAEStack> i = iterator();
while (i.hasNext())
{
if ( !c.contains( i.next() ) )
{
i.remove();
changed = true;
}
}
return changed;
}
@Override
public int size()
{
return myInterests.size();
}
@Override
public Object[] toArray()
{
return myInterests.toArray();
}
@Override
public <T> T[] toArray(T[] a)
{
return myInterests.toArray( a );
}
}
package appeng.me.storage;
import java.util.Collection;
import java.util.HashSet;
import java.util.Iterator;
import appeng.api.networking.storage.IStackWatcher;
import appeng.api.networking.storage.IStackWatcherHost;
import appeng.api.storage.data.IAEStack;
import appeng.me.cache.GridStorageCache;
/**
* Maintain my interests, and a global watch list, they should always be fully synchronized.
*/
public class ItemWatcher implements IStackWatcher
{
class ItemWatcherIterator implements Iterator<IAEStack>
{
final ItemWatcher watcher;
final Iterator<IAEStack> interestIterator;
IAEStack myLast;
public ItemWatcherIterator(ItemWatcher parent, Iterator<IAEStack> i) {
watcher = parent;
interestIterator = i;
}
@Override
public boolean hasNext()
{
return interestIterator.hasNext();
}
@Override
public IAEStack next()
{
return myLast = interestIterator.next();
}
@Override
public void remove()
{
gsc.interests.remove( myLast, watcher );
interestIterator.remove();
}
};
GridStorageCache gsc;
IStackWatcherHost myObject;
HashSet<IAEStack> myInterests = new HashSet();
public ItemWatcher(GridStorageCache cache, IStackWatcherHost host) {
gsc = cache;
myObject = host;
}
public IStackWatcherHost getHost()
{
return myObject;
}
@Override
public boolean add(IAEStack e)
{
if ( myInterests.contains( e ) )
return false;
return myInterests.add( e.copy() ) && gsc.interests.put( e, this );
}
@Override
public boolean addAll(Collection<? extends IAEStack> c)
{
boolean didChange = false;
for (IAEStack o : c)
didChange = add( o ) || didChange;
return didChange;
}
@Override
public void clear()
{
Iterator<IAEStack> i = myInterests.iterator();
while (i.hasNext())
{
gsc.interests.remove( i.next(), this );
i.remove();
}
}
@Override
public boolean contains(Object o)
{
return myInterests.contains( o );
}
@Override
public boolean containsAll(Collection<?> c)
{
return myInterests.containsAll( c );
}
@Override
public boolean isEmpty()
{
return myInterests.isEmpty();
}
@Override
public Iterator<IAEStack> iterator()
{
return new ItemWatcherIterator( this, myInterests.iterator() );
}
@Override
public boolean remove(Object o)
{
return myInterests.remove( o ) && gsc.interests.remove( o, this );
}
@Override
public boolean removeAll(Collection<?> c)
{
boolean didSomething = false;
for (Object o : c)
didSomething = remove( o ) || didSomething;
return didSomething;
}
@Override
public boolean retainAll(Collection<?> c)
{
boolean changed = false;
Iterator<IAEStack> i = iterator();
while (i.hasNext())
{
if ( !c.contains( i.next() ) )
{
i.remove();
changed = true;
}
}
return changed;
}
@Override
public int size()
{
return myInterests.size();
}
@Override
public Object[] toArray()
{
return myInterests.toArray();
}
@Override
public <T> T[] toArray(T[] a)
{
return myInterests.toArray( a );
}
}
+3 -2
View File
@@ -3,6 +3,7 @@ package appeng.me.storage;
import net.minecraft.inventory.IInventory;
import net.minecraft.item.ItemStack;
import appeng.api.config.Actionable;
import appeng.api.networking.security.BaseActionSource;
import appeng.api.storage.IMEInventory;
import appeng.api.storage.StorageChannel;
import appeng.api.storage.data.IAEItemStack;
@@ -29,7 +30,7 @@ public class MEIInventoryWrapper implements IMEInventory<IAEItemStack>
}
@Override
public IAEItemStack injectItems(IAEItemStack iox, Actionable mode)
public IAEItemStack injectItems(IAEItemStack iox, Actionable mode, BaseActionSource src)
{
ItemStack input = iox.getItemStack();
@@ -105,7 +106,7 @@ public class MEIInventoryWrapper implements IMEInventory<IAEItemStack>
}
@Override
public IAEItemStack extractItems(IAEItemStack request, Actionable mode)
public IAEItemStack extractItems(IAEItemStack request, Actionable mode, BaseActionSource src)
{
ItemStack Gathered = null;
ItemStack Req = request.getItemStack();
+10 -4
View File
@@ -3,6 +3,7 @@ package appeng.me.storage;
import appeng.api.config.AccessRestriction;
import appeng.api.config.Actionable;
import appeng.api.config.IncludeExclude;
import appeng.api.networking.security.BaseActionSource;
import appeng.api.storage.IMEInventory;
import appeng.api.storage.IMEInventoryHandler;
import appeng.api.storage.IMEMonitor;
@@ -33,18 +34,18 @@ public class MEInventoryHandler<T extends IAEStack<T>> implements IMEInventoryHa
}
@Override
public T injectItems(T input, Actionable type)
public T injectItems(T input, Actionable type, BaseActionSource src)
{
if ( !this.canAccept( input ) )
return input;
return internal.injectItems( input, type );
return internal.injectItems( input, type, src );
}
@Override
public T extractItems(T request, Actionable type)
public T extractItems(T request, Actionable type, BaseActionSource src)
{
return internal.extractItems( request, type );
return internal.extractItems( request, type, src );
}
@Override
@@ -99,4 +100,9 @@ public class MEInventoryHandler<T extends IAEStack<T>> implements IMEInventoryHa
return internal.getSlot();
}
public IMEInventory getInternal()
{
return internal;
}
}
+2 -2
View File
@@ -78,7 +78,7 @@ public class MEMonitorIInventory implements IMEInventory<IAEItemStack>, IMEMonit
}
@Override
public IAEItemStack injectItems(IAEItemStack input, Actionable type)
public IAEItemStack injectItems(IAEItemStack input, Actionable type, BaseActionSource src)
{
ItemStack out = null;
@@ -142,7 +142,7 @@ public class MEMonitorIInventory implements IMEInventory<IAEItemStack>, IMEMonit
}
@Override
public IAEItemStack extractItems(IAEItemStack request, Actionable type)
public IAEItemStack extractItems(IAEItemStack request, Actionable type, BaseActionSource src)
{
ItemStack out = null;
+5 -4
View File
@@ -2,6 +2,7 @@ package appeng.me.storage;
import appeng.api.config.AccessRestriction;
import appeng.api.config.Actionable;
import appeng.api.networking.security.BaseActionSource;
import appeng.api.storage.IMEInventory;
import appeng.api.storage.IMEInventoryHandler;
import appeng.api.storage.StorageChannel;
@@ -28,15 +29,15 @@ public class MEPassthru<T extends IAEStack<T>> implements IMEInventoryHandler<T>
}
@Override
public T injectItems(T input, Actionable type)
public T injectItems(T input, Actionable type, BaseActionSource src)
{
return internal.injectItems( input, type );
return internal.injectItems( input, type, src );
}
@Override
public T extractItems(T request, Actionable type)
public T extractItems(T request, Actionable type, BaseActionSource src)
{
return internal.extractItems( request, type );
return internal.extractItems( request, type, src );
}
@Override
+30 -32
View File
@@ -1,20 +1,20 @@
package appeng.me.storage;
import java.util.Collection;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.Map.Entry;
import java.util.List;
import java.util.TreeMap;
import appeng.api.config.AccessRestriction;
import appeng.api.config.Actionable;
import appeng.api.networking.security.BaseActionSource;
import appeng.api.storage.IMEInventoryHandler;
import appeng.api.storage.StorageChannel;
import appeng.api.storage.data.IAEStack;
import appeng.api.storage.data.IItemList;
import com.google.common.collect.TreeMultimap;
public class NetworkInventoryHandler<T extends IAEStack<T>> implements IMEInventoryHandler<T>
{
@@ -28,27 +28,23 @@ public class NetworkInventoryHandler<T extends IAEStack<T>> implements IMEInvent
};
private final static Comparator hashSorter = new Comparator<IMEInventoryHandler>() {
@Override
public int compare(IMEInventoryHandler o1, IMEInventoryHandler o2)
{
return o1.hashCode() - o2.hashCode();
}
};
final StorageChannel myChannel;
final TreeMultimap<Integer, IMEInventoryHandler<T>> prorityInventory;
// final TreeMultimap<Integer, IMEInventoryHandler<T>> prorityInventory;
final TreeMap<Integer, List<IMEInventoryHandler<T>>> prorityInventory;
public NetworkInventoryHandler(StorageChannel chan) {
myChannel = chan;
prorityInventory = TreeMultimap.create( prioritySorter, hashSorter );
prorityInventory = new TreeMap( prioritySorter ); // TreeMultimap.create( prioritySorter, hashSorter );
}
public void addNewStorage(IMEInventoryHandler<T> h)
{
prorityInventory.put( h.getPriority(), h );
int priority = h.getPriority();
List<IMEInventoryHandler<T>> list = prorityInventory.get( priority );
if ( list == null )
prorityInventory.put( priority, list = new ArrayList() );
list.add( h );
}
static int currentPass = 0;
@@ -91,32 +87,32 @@ public class NetworkInventoryHandler<T extends IAEStack<T>> implements IMEInvent
}
@Override
public T injectItems(T input, Actionable type)
public T injectItems(T input, Actionable type, BaseActionSource src)
{
if ( diveList( this ) )
return input;
Iterator<Entry<Integer, Collection<IMEInventoryHandler<T>>>> i = prorityInventory.asMap().entrySet().iterator();
Iterator<List<IMEInventoryHandler<T>>> i = prorityInventory.values().iterator();// asMap().entrySet().iterator();
while (i.hasNext())
{
Entry<Integer, Collection<IMEInventoryHandler<T>>> invList = i.next();
List<IMEInventoryHandler<T>> invList = i.next();
Iterator<IMEInventoryHandler<T>> ii = invList.getValue().iterator();
Iterator<IMEInventoryHandler<T>> ii = invList.iterator();
while (ii.hasNext() && input != null)
{
IMEInventoryHandler<T> inv = ii.next();
if ( inv.canAccept( input ) && (inv.extractItems( input, Actionable.SIMULATE ) != null || inv.isPrioritized( input )) )
input = inv.injectItems( input, type );
if ( inv.canAccept( input ) && (inv.extractItems( input, Actionable.SIMULATE, src ) != null || inv.isPrioritized( input )) )
input = inv.injectItems( input, type, src );
}
ii = invList.getValue().iterator();
ii = invList.iterator();
while (ii.hasNext() && input != null)
{
IMEInventoryHandler<T> inv = ii.next();
if ( inv.canAccept( input ) )
input = inv.injectItems( input, type );
input = inv.injectItems( input, type, src );
}
}
@@ -126,12 +122,12 @@ public class NetworkInventoryHandler<T extends IAEStack<T>> implements IMEInvent
}
@Override
public T extractItems(T request, Actionable mode)
public T extractItems(T request, Actionable mode, BaseActionSource src)
{
if ( diveList( this ) )
return null;
Iterator<Entry<Integer, Collection<IMEInventoryHandler<T>>>> i = prorityInventory.asMap().descendingMap().entrySet().iterator();
Iterator<List<IMEInventoryHandler<T>>> i = prorityInventory.descendingMap().values().iterator();// prorityInventory.asMap().descendingMap().entrySet().iterator();
T output = request.copy();
request = request.copy();
@@ -140,15 +136,15 @@ public class NetworkInventoryHandler<T extends IAEStack<T>> implements IMEInvent
while (i.hasNext())
{
Entry<Integer, Collection<IMEInventoryHandler<T>>> invList = i.next();
List<IMEInventoryHandler<T>> invList = i.next();
Iterator<IMEInventoryHandler<T>> ii = invList.getValue().iterator();
Iterator<IMEInventoryHandler<T>> ii = invList.iterator();
while (ii.hasNext() && output.getStackSize() < req)
{
IMEInventoryHandler<T> inv = ii.next();
request.setStackSize( req - output.getStackSize() );
output.add( inv.extractItems( request, mode ) );
output.add( inv.extractItems( request, mode, src ) );
}
}
@@ -166,8 +162,10 @@ public class NetworkInventoryHandler<T extends IAEStack<T>> implements IMEInvent
if ( diveIteration( this ) )
return out;
for (Entry<Integer, IMEInventoryHandler<T>> h : prorityInventory.entries())
out = h.getValue().getAvailableItems( out );
// for (Entry<Integer, IMEInventoryHandler<T>> h : prorityInventory.entries())
for (List<IMEInventoryHandler<T>> i : prorityInventory.values())
for (IMEInventoryHandler<T> j : i)
out = j.getAvailableItems( out );
surface( this );
+3 -2
View File
@@ -2,6 +2,7 @@ package appeng.me.storage;
import appeng.api.config.AccessRestriction;
import appeng.api.config.Actionable;
import appeng.api.networking.security.BaseActionSource;
import appeng.api.storage.IMEInventoryHandler;
import appeng.api.storage.StorageChannel;
import appeng.api.storage.data.IAEStack;
@@ -17,13 +18,13 @@ public class NullInventory<T extends IAEStack<T>> implements IMEInventoryHandler
}
@Override
public T injectItems(T input, Actionable mode)
public T injectItems(T input, Actionable mode, BaseActionSource src)
{
return input;
}
@Override
public T extractItems(T request, Actionable mode)
public T extractItems(T request, Actionable mode, BaseActionSource src)
{
return null;
}
+3 -2
View File
@@ -2,6 +2,7 @@ package appeng.me.storage;
import appeng.api.config.AccessRestriction;
import appeng.api.config.Actionable;
import appeng.api.networking.security.BaseActionSource;
import appeng.api.storage.IMEInventoryHandler;
import appeng.api.storage.StorageChannel;
import appeng.api.storage.data.IAEFluidStack;
@@ -18,7 +19,7 @@ public class VoidFluidInventory implements IMEInventoryHandler<IAEFluidStack>
}
@Override
public IAEFluidStack injectItems(IAEFluidStack input, Actionable mode)
public IAEFluidStack injectItems(IAEFluidStack input, Actionable mode, BaseActionSource src)
{
if ( input != null )
target.addPower( (double) input.getStackSize() / 1000.0 );
@@ -32,7 +33,7 @@ public class VoidFluidInventory implements IMEInventoryHandler<IAEFluidStack>
}
@Override
public IAEFluidStack extractItems(IAEFluidStack request, Actionable mode)
public IAEFluidStack extractItems(IAEFluidStack request, Actionable mode, BaseActionSource src)
{
return null;
}
+3 -2
View File
@@ -2,6 +2,7 @@ package appeng.me.storage;
import appeng.api.config.AccessRestriction;
import appeng.api.config.Actionable;
import appeng.api.networking.security.BaseActionSource;
import appeng.api.storage.IMEInventoryHandler;
import appeng.api.storage.StorageChannel;
import appeng.api.storage.data.IAEItemStack;
@@ -18,7 +19,7 @@ public class VoidItemInventory implements IMEInventoryHandler<IAEItemStack>
}
@Override
public IAEItemStack injectItems(IAEItemStack input, Actionable mode)
public IAEItemStack injectItems(IAEItemStack input, Actionable mode, BaseActionSource src)
{
if ( input != null )
target.addPower( input.getStackSize() );
@@ -32,7 +33,7 @@ public class VoidItemInventory implements IMEInventoryHandler<IAEItemStack>
}
@Override
public IAEItemStack extractItems(IAEItemStack request, Actionable mode)
public IAEItemStack extractItems(IAEItemStack request, Actionable mode, BaseActionSource src)
{
return null;
}