001package net.minecraft.item.crafting;
002
003import net.minecraft.inventory.InventoryCrafting;
004import net.minecraft.item.Item;
005import net.minecraft.item.ItemStack;
006import net.minecraft.world.World;
007
008public class RecipesMapCloning implements IRecipe
009{
010    /**
011     * Used to check if a recipe matches current crafting inventory
012     */
013    public boolean matches(InventoryCrafting par1InventoryCrafting, World par2World)
014    {
015        int i = 0;
016        ItemStack itemstack = null;
017
018        for (int j = 0; j < par1InventoryCrafting.getSizeInventory(); ++j)
019        {
020            ItemStack itemstack1 = par1InventoryCrafting.getStackInSlot(j);
021
022            if (itemstack1 != null)
023            {
024                if (itemstack1.itemID == Item.map.itemID)
025                {
026                    if (itemstack != null)
027                    {
028                        return false;
029                    }
030
031                    itemstack = itemstack1;
032                }
033                else
034                {
035                    if (itemstack1.itemID != Item.emptyMap.itemID)
036                    {
037                        return false;
038                    }
039
040                    ++i;
041                }
042            }
043        }
044
045        return itemstack != null && i > 0;
046    }
047
048    /**
049     * Returns an Item that is the result of this recipe
050     */
051    public ItemStack getCraftingResult(InventoryCrafting par1InventoryCrafting)
052    {
053        int i = 0;
054        ItemStack itemstack = null;
055
056        for (int j = 0; j < par1InventoryCrafting.getSizeInventory(); ++j)
057        {
058            ItemStack itemstack1 = par1InventoryCrafting.getStackInSlot(j);
059
060            if (itemstack1 != null)
061            {
062                if (itemstack1.itemID == Item.map.itemID)
063                {
064                    if (itemstack != null)
065                    {
066                        return null;
067                    }
068
069                    itemstack = itemstack1;
070                }
071                else
072                {
073                    if (itemstack1.itemID != Item.emptyMap.itemID)
074                    {
075                        return null;
076                    }
077
078                    ++i;
079                }
080            }
081        }
082
083        if (itemstack != null && i >= 1)
084        {
085            ItemStack itemstack2 = new ItemStack(Item.map, i + 1, itemstack.getItemDamage());
086
087            if (itemstack.hasDisplayName())
088            {
089                itemstack2.setItemName(itemstack.getDisplayName());
090            }
091
092            return itemstack2;
093        }
094        else
095        {
096            return null;
097        }
098    }
099
100    /**
101     * Returns the size of the recipe area
102     */
103    public int getRecipeSize()
104    {
105        return 9;
106    }
107
108    public ItemStack getRecipeOutput()
109    {
110        return null;
111    }
112}