    001package net.minecraft.inventory;
    002
    003import net.minecraft.entity.player.EntityPlayer;
    004import net.minecraft.item.ItemStack;
    005
    006public class InventoryCraftResult implements IInventory
    007{
    008    /** A list of one item containing the result of the crafting formula */
    009    private ItemStack[] stackResult = new ItemStack[1];
    010
    011    /**
    012     * Returns the number of slots in the inventory.
    013     */
    014    public int getSizeInventory()
    015    {
    016        return 1;
    017    }
    018
    019    /**
    020     * Returns the stack in slot i
    021     */
    022    public ItemStack getStackInSlot(int par1)
    023    {
    024        return this.stackResult[0];
    025    }
    026
    027    /**
    028     * Returns the name of the inventory.
    029     */
    030    public String getInvName()
    031    {
    032        return "Result";
    033    }
    034
    035    /**
    036     * Removes from an inventory slot (first arg) up to a specified number (second arg) of items and returns them in a
    037     * new stack.
    038     */
    039    public ItemStack decrStackSize(int par1, int par2)
    040    {
    041        if (this.stackResult[0] != null)
    042        {
    043            ItemStack var3 = this.stackResult[0];
    044            this.stackResult[0] = null;
    045            return var3;
    046        }
    047        else
    048        {
    049            return null;
    050        }
    051    }
    052
    053    /**
    054     * When some containers are closed they call this on each slot, then drop whatever it returns as an EntityItem -
    055     * like when you close a workbench GUI.
    056     */
    057    public ItemStack getStackInSlotOnClosing(int par1)
    058    {
    059        if (this.stackResult[0] != null)
    060        {
    061            ItemStack var2 = this.stackResult[0];
    062            this.stackResult[0] = null;
    063            return var2;
    064        }
    065        else
    066        {
    067            return null;
    068        }
    069    }
    070
    071    /**
    072     * Sets the given item stack to the specified slot in the inventory (can be crafting or armor sections).
    073     */
    074    public void setInventorySlotContents(int par1, ItemStack par2ItemStack)
    075    {
    076        this.stackResult[0] = par2ItemStack;
    077    }
    078
    079    /**
    080     * Returns the maximum stack size for a inventory slot. Seems to always be 64, possibly will be extended. *Isn't
    081     * this more of a set than a get?*
    082     */
    083    public int getInventoryStackLimit()
    084    {
    085        return 64;
    086    }
    087
    088    /**
    089     * Called when an the contents of an Inventory change, usually
    090     */
    091    public void onInventoryChanged() {}
    092
    093    /**
    094     * Do not make give this method the name canInteractWith because it clashes with Container
    095     */
    096    public boolean isUseableByPlayer(EntityPlayer par1EntityPlayer)
    097    {
    098        return true;
    099    }
    100
    101    public void openChest() {}
    102
    103    public void closeChest() {}
    104}