ModTweaker/src/api/java/naruto1310/extendedWorkbench/crafting/ExtendedShapelessRecipes.java
2015-01-11 21:59:45 +02:00

93 lines
2.5 KiB
Java

package naruto1310.extendedWorkbench.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 ExtendedShapelessRecipes implements IExtendedRecipe
{
private int maxRecipeSize = 6;
/** Is the ItemStack that you get when craft the recipe. */
private final ItemStack recipeOutput;
/** Is a List of ItemStack that composes the recipe. */
private final List<ItemStack> recipeItems;
public ExtendedShapelessRecipes(ItemStack par1ItemStack, List<ItemStack> par2List)
{
this.recipeOutput = par1ItemStack;
this.recipeItems = par2List;
}
@Override
public ItemStack getRecipeOutput()
{
return this.recipeOutput;
}
/**
* Used to check if a recipe matches current crafting inventory
*/
@Override
public boolean matches(InventoryCrafting par1InventoryCrafting, World world)
{
ArrayList<ItemStack> var2 = new ArrayList<ItemStack>(this.recipeItems);
for (int var3 = 0; var3 < this.maxRecipeSize; ++var3)
{
for (int var4 = 0; var4 < this.maxRecipeSize; ++var4)
{
ItemStack var5 = par1InventoryCrafting.getStackInRowAndColumn(var4, var3);
if (var5 != null)
{
boolean var6 = false;
Iterator<ItemStack> var7 = var2.iterator();
while (var7.hasNext())
{
ItemStack var8 = var7.next();
if (var5 == var8 && (var8.getItemDamage() == 32767 || var5.getItemDamage() == var8.getItemDamage()))
{
var6 = true;
var2.remove(var8);
break;
}
}
if (!var6)
{
return false;
}
}
}
}
return var2.isEmpty();
}
/**
* Returns an Item that is the result of this recipe
*/
@Override
public ItemStack getCraftingResult(InventoryCrafting par1InventoryCrafting)
{
return this.recipeOutput.copy();
}
/**
* Returns the size of the recipe area
*/
@Override
public int getRecipeSize()
{
return this.recipeItems.size();
}
}