001 package net.minecraft.item.crafting;
002
003 import net.minecraft.inventory.InventoryCrafting;
004 import net.minecraft.item.Item;
005 import net.minecraft.item.ItemStack;
006 import net.minecraft.world.World;
007
008 public 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 }