blob: 3e3691497a1d77e4e2c43c50e44f448c8b136dfe [file] [log] [blame] [raw]
package appeng.api.me.util;
import appeng.api.IAEItemStack;
import appeng.api.IItemList;
/**
* Lets you access Internal Cell Inventories.
*/
public interface IMEInventory
{
/**
* The number of different item types stored in inventory.
*/
public long storedItemTypes();
/**
* The number of stored items total, regardless of type.
*/
public long storedItemCount();
/**
* The estimated number of additional items this inventory can hold, regardless of type.
*/
public long remainingItemCount();
/**
* The estimated number of additional types the inventory could hold.
*/
public long remainingItemTypes();
/**
* True or False if this item is inside this inventory.
*/
public boolean containsItemType(IAEItemStack i);
/**
* The total number of types holdable in this inventory.
*/
public long getTotalItemTypes();
/**
* Returns how many of this item are in the inventory, regardless of a how many stacks / cells or anything else.
*/
public long countOfItemType(IAEItemStack i);
/**
* Adds input, to the inventory, and returns items not added, complete failure yields a copy of the stack that was passed.
*/
public IAEItemStack addItems( IAEItemStack input );
/**
* Attempts to extract the requested item, in the count specified by the request, returns items extracted, complete failure yields NULL.
*/
public IAEItemStack extractItems( IAEItemStack request );
// DO NOT USE ItemStack.split, these are for information purpose ONLY!
// I you wan to remove items from the cell, use extractItemss
/**
* Returns a list of all available items, with stackSize set to the real amount, without stack limits.
*/
public IItemList getAvailableItems( IItemList out );
/**
* Returns a list of all available items, with stackSize set to the real amount, without stack limits.
*/
public IItemList getAvailableItems();
/**
* Identical to addItems(...) but it don't change anything, its just a simulation.
* this is used when dealing with pipes/tubes, and routing.
*/
public IAEItemStack calculateItemAddition(IAEItemStack stack);
// calculates available space for a specific item.
public long getAvailableSpaceByItem( IAEItemStack i, long maxNeeded );
}