package net.minecraft.item.crafting; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import net.minecraft.inventory.InventoryCrafting; import net.minecraft.item.ItemStack; import net.minecraft.world.World; public class ShapelessRecipes implements IRecipe { /** Is the ItemStack that you get when craft the recipe. */ private final ItemStack recipeOutput; /** Is a List of ItemStack that composes the recipe. */ public final List recipeItems; public ShapelessRecipes(ItemStack par1ItemStack, List par2List) { this.recipeOutput = par1ItemStack; this.recipeItems = par2List; } public ItemStack getRecipeOutput() { return this.recipeOutput; } /** * Used to check if a recipe matches current crafting inventory */ public boolean matches(InventoryCrafting par1InventoryCrafting, World par2World) { ArrayList var3 = new ArrayList(this.recipeItems); for (int var4 = 0; var4 < 3; ++var4) { for (int var5 = 0; var5 < 3; ++var5) { ItemStack var6 = par1InventoryCrafting.getStackInRowAndColumn(var5, var4); if (var6 != null) { boolean var7 = false; Iterator var8 = var3.iterator(); while (var8.hasNext()) { ItemStack var9 = (ItemStack)var8.next(); if (var6.itemID == var9.itemID && (var9.getItemDamage() == -1 || var6.getItemDamage() == var9.getItemDamage())) { var7 = true; var3.remove(var9); break; } } if (!var7) { return false; } } } } return var3.isEmpty(); } /** * Returns an Item that is the result of this recipe */ public ItemStack getCraftingResult(InventoryCrafting par1InventoryCrafting) { return this.recipeOutput.copy(); } /** * Returns the size of the recipe area */ public int getRecipeSize() { return this.recipeItems.size(); } }