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     * If this returns false, the inventory name will be used as an unlocalized name, and translated into the player's
037     * language. Otherwise it will be used directly.
038     */
039    public boolean isInvNameLocalized()
040    {
041        return false;
042    }
043
044    /**
045     * Removes from an inventory slot (first arg) up to a specified number (second arg) of items and returns them in a
046     * new stack.
047     */
048    public ItemStack decrStackSize(int par1, int par2)
049    {
050        if (this.stackResult[0] != null)
051        {
052            ItemStack itemstack = this.stackResult[0];
053            this.stackResult[0] = null;
054            return itemstack;
055        }
056        else
057        {
058            return null;
059        }
060    }
061
062    /**
063     * When some containers are closed they call this on each slot, then drop whatever it returns as an EntityItem -
064     * like when you close a workbench GUI.
065     */
066    public ItemStack getStackInSlotOnClosing(int par1)
067    {
068        if (this.stackResult[0] != null)
069        {
070            ItemStack itemstack = this.stackResult[0];
071            this.stackResult[0] = null;
072            return itemstack;
073        }
074        else
075        {
076            return null;
077        }
078    }
079
080    /**
081     * Sets the given item stack to the specified slot in the inventory (can be crafting or armor sections).
082     */
083    public void setInventorySlotContents(int par1, ItemStack par2ItemStack)
084    {
085        this.stackResult[0] = par2ItemStack;
086    }
087
088    /**
089     * Returns the maximum stack size for a inventory slot. Seems to always be 64, possibly will be extended. *Isn't
090     * this more of a set than a get?*
091     */
092    public int getInventoryStackLimit()
093    {
094        return 64;
095    }
096
097    /**
098     * Called when an the contents of an Inventory change, usually
099     */
100    public void onInventoryChanged() {}
101
102    /**
103     * Do not make give this method the name canInteractWith because it clashes with Container
104     */
105    public boolean isUseableByPlayer(EntityPlayer par1EntityPlayer)
106    {
107        return true;
108    }
109
110    public void openChest() {}
111
112    public void closeChest() {}
113
114    /**
115     * Returns true if automation is allowed to insert the given stack (ignoring stack size) into the given slot.
116     */
117    public boolean isStackValidForSlot(int par1, ItemStack par2ItemStack)
118    {
119        return true;
120    }
121}