001 package net.minecraft.src; 002 003 import java.util.ArrayList; 004 import java.util.Iterator; 005 import java.util.List; 006 007 public class ShapelessRecipes implements IRecipe 008 { 009 /** Is the ItemStack that you get when craft the recipe. */ 010 private final ItemStack recipeOutput; 011 012 /** Is a List of ItemStack that composes the recipe. */ 013 public final List recipeItems; 014 015 public ShapelessRecipes(ItemStack par1ItemStack, List par2List) 016 { 017 this.recipeOutput = par1ItemStack; 018 this.recipeItems = par2List; 019 } 020 021 public ItemStack getRecipeOutput() 022 { 023 return this.recipeOutput; 024 } 025 026 /** 027 * Used to check if a recipe matches current crafting inventory 028 */ 029 public boolean matches(InventoryCrafting par1InventoryCrafting, World par2World) 030 { 031 ArrayList var3 = new ArrayList(this.recipeItems); 032 033 for (int var4 = 0; var4 < 3; ++var4) 034 { 035 for (int var5 = 0; var5 < 3; ++var5) 036 { 037 ItemStack var6 = par1InventoryCrafting.getStackInRowAndColumn(var5, var4); 038 039 if (var6 != null) 040 { 041 boolean var7 = false; 042 Iterator var8 = var3.iterator(); 043 044 while (var8.hasNext()) 045 { 046 ItemStack var9 = (ItemStack)var8.next(); 047 048 if (var6.itemID == var9.itemID && (var9.getItemDamage() == -1 || var6.getItemDamage() == var9.getItemDamage())) 049 { 050 var7 = true; 051 var3.remove(var9); 052 break; 053 } 054 } 055 056 if (!var7) 057 { 058 return false; 059 } 060 } 061 } 062 } 063 064 return var3.isEmpty(); 065 } 066 067 /** 068 * Returns an Item that is the result of this recipe 069 */ 070 public ItemStack getCraftingResult(InventoryCrafting par1InventoryCrafting) 071 { 072 return this.recipeOutput.copy(); 073 } 074 075 /** 076 * Returns the size of the recipe area 077 */ 078 public int getRecipeSize() 079 { 080 return this.recipeItems.size(); 081 } 082 }