    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 var3 = 0;
    016        ItemStack var4 = null;
    017
    018        for (int var5 = 0; var5 < par1InventoryCrafting.getSizeInventory(); ++var5)
    019        {
    020            ItemStack var6 = par1InventoryCrafting.getStackInSlot(var5);
    021
    022            if (var6 != null)
    023            {
    024                if (var6.itemID == Item.map.itemID)
    025                {
    026                    if (var4 != null)
    027                    {
    028                        return false;
    029                    }
    030
    031                    var4 = var6;
    032                }
    033                else
    034                {
    035                    if (var6.itemID != Item.emptyMap.itemID)
    036                    {
    037                        return false;
    038                    }
    039
    040                    ++var3;
    041                }
    042            }
    043        }
    044
    045        return var4 != null && var3 > 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 var2 = 0;
    054        ItemStack var3 = null;
    055
    056        for (int var4 = 0; var4 < par1InventoryCrafting.getSizeInventory(); ++var4)
    057        {
    058            ItemStack var5 = par1InventoryCrafting.getStackInSlot(var4);
    059
    060            if (var5 != null)
    061            {
    062                if (var5.itemID == Item.map.itemID)
    063                {
    064                    if (var3 != null)
    065                    {
    066                        return null;
    067                    }
    068
    069                    var3 = var5;
    070                }
    071                else
    072                {
    073                    if (var5.itemID != Item.emptyMap.itemID)
    074                    {
    075                        return null;
    076                    }
    077
    078                    ++var2;
    079                }
    080            }
    081        }
    082
    083        if (var3 != null && var2 >= 1)
    084        {
    085            ItemStack var6 = new ItemStack(Item.map, var2 + 1, var3.getItemDamage());
    086
    087            if (var3.hasDisplayName())
    088            {
    089                var6.setItemName(var3.getDisplayName());
    090            }
    091
    092            return var6;
    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}