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