|  | package buildcraft.api.inventory; | 
|  |  | 
|  | import net.minecraft.inventory.IInventory; | 
|  | import net.minecraft.item.ItemStack; | 
|  | import net.minecraftforge.common.ForgeDirection; | 
|  |  | 
|  | public interface ISpecialInventory extends IInventory { | 
|  |  | 
|  | /** | 
|  | * Offers an ItemStack for addition to the inventory. | 
|  | * | 
|  | * @param stack | 
|  | *            ItemStack offered for addition. Do not manipulate this! | 
|  | * @param doAdd | 
|  | *            If false no actual addition should take place. Implementors should simulate. | 
|  | * @param from | 
|  | *            Orientation the ItemStack is offered from. | 
|  | * @return Amount of items used from the passed stack. | 
|  | */ | 
|  | int addItem(ItemStack stack, boolean doAdd, ForgeDirection from); | 
|  |  | 
|  | /** | 
|  | * Requests items to be extracted from the inventory | 
|  | * | 
|  | * @param doRemove | 
|  | *            If false no actual extraction may occur. Implementors should simulate. | 
|  | *            Can be used to "peek" at what the result would be | 
|  | * @param from | 
|  | *            Orientation the ItemStack is requested from. | 
|  | * @param maxItemCount | 
|  | *            Maximum amount of items to extract (spread over all returned item stacks) | 
|  | * @return Array of item stacks that were/would be extracted from the inventory | 
|  | */ | 
|  | ItemStack[] extractItem(boolean doRemove, ForgeDirection from, int maxItemCount); | 
|  |  | 
|  | } |