// Path: src/main/java/net/einsteinsci/betterbeginnings/inventory/InventoryWorkbenchAdditionalMaterials.java
// public class InventoryWorkbenchAdditionalMaterials implements IInventory
// {
// 	private ItemStack[] stackList;
// 
// 	private Container container;
// 
// 	public InventoryWorkbenchAdditionalMaterials(Container container_, int size)
// 	{
// 		stackList = new ItemStack[size];
// 		container = container_;
// 	}
// 
// 	@Override
// 	public int getSizeInventory()
// 	{
// 		return stackList.length;
// 	}
// 
// 	@Override
// 	public ItemStack getStackInSlot(int slot)
// 	{
// 		if (getSizeInventory() <= slot)
// 		{
// 			return null;
// 		}
// 		else
// 		{
// 			return stackList[slot];
// 		}
// 	}
// 
// 	@Override
// 	public ItemStack decrStackSize(int slot, int amount)
// 	{
// 		if (stackList[slot] != null)
// 		{
// 			ItemStack itemstack;
// 
// 			if (stackList[slot].stackSize <= amount)
// 			{
// 				itemstack = stackList[slot];
// 				stackList[slot] = null;
// 				container.onCraftMatrixChanged(this);
// 				return itemstack;
// 			}
// 			else
// 			{
// 				itemstack = stackList[slot].splitStack(amount);
// 
// 				if (stackList[slot].stackSize == 0)
// 				{
// 					stackList[slot] = null;
// 				}
// 
// 				container.onCraftMatrixChanged(this);
// 				return itemstack;
// 			}
// 		}
// 		else
// 		{
// 			return null;
// 		}
// 	}
// 
// 	@Override
// 	public ItemStack getStackInSlotOnClosing(int slot)
// 	{
// 		if (stackList[slot] != null)
// 		{
// 			ItemStack itemstack = stackList[slot];
// 			stackList[slot] = null;
// 			return itemstack;
// 		}
// 		else
// 		{
// 			return null;
// 		}
// 	}
// 
// 	@Override
// 	public void setInventorySlotContents(int slot, ItemStack stack)
// 	{
// 		stackList[slot] = stack;
// 		container.onCraftMatrixChanged(this);
// 	}
// 
// 	@Override
// 	public String getCommandSenderName()
// 	{
// 		return "container.workbenchmaterials";
// 	}
// 
// 	@Override
// 	public boolean hasCustomName()
// 	{
// 		return false;
// 	}
// 
// 	@Override
// 	public IChatComponent getDisplayName()
// 	{
// 		return new ChatComponentText(getCommandSenderName());
// 	}
// 
// 	@Override
// 	public int getInventoryStackLimit()
// 	{
// 		return 64;
// 	}
// 
// 	@Override
// 	public void markDirty()
// 	{
// 		container.onCraftMatrixChanged(this);
// 	}
// 
// 	@Override
// 	public boolean isUseableByPlayer(EntityPlayer player)
// 	{
// 		return true;
// 	}
// 
// 	@Override
// 	public void openInventory(EntityPlayer player)
// 	{ }
// 
// 	@Override
// 	public void closeInventory(EntityPlayer player)
// 	{ }
// 
// 	@Override
// 	public boolean isItemValidForSlot(int slot, ItemStack stack)
// 	{
// 		return true;
// 	}
// 
// 	@Override
// 	public int getField(int id)
// 	{
// 		return 0;
// 	}
// 
// 	@Override
// 	public void setField(int id, int value)
// 	{ }
// 
// 	@Override
// 	public int getFieldCount()
// 	{
// 		return 0;
// 	}
// 
// 	@Override
// 	public void clear()
// 	{
// 		for (int i = 0; i < stackList.length; i++)
// 		{
// 			stackList[i] = null;
// 		}
// 	}
// }


import net.einsteinsci.betterbeginnings.inventory.InventoryWorkbenchAdditionalMaterials;
import net.minecraft.block.Block;
import net.minecraft.inventory.IInventory;
import net.minecraft.inventory.InventoryCrafting;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.world.World;
import net.minecraftforge.oredict.OreDictionary;
import java.util.*;
			if (hashmap.containsKey(Character.valueOf(iterChar)))
			{
				neededItems[j] = ((OreRecipeElement)hashmap.get(Character.valueOf(iterChar))).copy();
			}
			else
			{
				neededItems[j] = null;
			}
		}

		AdvancedRecipe advancedrecipes = new AdvancedRecipe(width, height, neededItems, result, addedMats, hide);
		recipes.add(advancedrecipes);
		return advancedrecipes;
	}

	public static AdvancedCraftingHandler crafting()
	{
		return CRAFTING;
	}

	public static AdvancedRecipe advancedRecipeByResultAndContents(ItemStack result,
		IInventory craftMatrix, IInventory additionalMaterials, World world)
	{
		for (Object obj : crafting().recipes)
		{
			if (obj instanceof AdvancedRecipe)
			{
				AdvancedRecipe recipe = (AdvancedRecipe)obj;

				if (recipe.matches((InventoryCrafting)craftMatrix,
// Path: src/main/java/net/einsteinsci/betterbeginnings/inventory/InventoryWorkbenchAdditionalMaterials.java
// public class InventoryWorkbenchAdditionalMaterials implements IInventory
// {
// 	private ItemStack[] stackList;
// 
// 	private Container container;
// 
// 	public InventoryWorkbenchAdditionalMaterials(Container container_, int size)
// 	{
// 		stackList = new ItemStack[size];
// 		container = container_;
// 	}
// 
// 	@Override
// 	public int getSizeInventory()
// 	{
// 		return stackList.length;
// 	}
// 
// 	@Override
// 	public ItemStack getStackInSlot(int slot)
// 	{
// 		if (getSizeInventory() <= slot)
// 		{
// 			return null;
// 		}
// 		else
// 		{
// 			return stackList[slot];
// 		}
// 	}
// 
// 	@Override
// 	public ItemStack decrStackSize(int slot, int amount)
// 	{
// 		if (stackList[slot] != null)
// 		{
// 			ItemStack itemstack;
// 
// 			if (stackList[slot].stackSize <= amount)
// 			{
// 				itemstack = stackList[slot];
// 				stackList[slot] = null;
// 				container.onCraftMatrixChanged(this);
// 				return itemstack;
// 			}
// 			else
// 			{
// 				itemstack = stackList[slot].splitStack(amount);
// 
// 				if (stackList[slot].stackSize == 0)
// 				{
// 					stackList[slot] = null;
// 				}
// 
// 				container.onCraftMatrixChanged(this);
// 				return itemstack;
// 			}
// 		}
// 		else
// 		{
// 			return null;
// 		}
// 	}
// 
// 	@Override
// 	public ItemStack getStackInSlotOnClosing(int slot)
// 	{
// 		if (stackList[slot] != null)
// 		{
// 			ItemStack itemstack = stackList[slot];
// 			stackList[slot] = null;
// 			return itemstack;
// 		}
// 		else
// 		{
// 			return null;
// 		}
// 	}
// 
// 	@Override
// 	public void setInventorySlotContents(int slot, ItemStack stack)
// 	{
// 		stackList[slot] = stack;
// 		container.onCraftMatrixChanged(this);
// 	}
// 
// 	@Override
// 	public String getCommandSenderName()
// 	{
// 		return "container.workbenchmaterials";
// 	}
// 
// 	@Override
// 	public boolean hasCustomName()
// 	{
// 		return false;
// 	}
// 
// 	@Override
// 	public IChatComponent getDisplayName()
// 	{
// 		return new ChatComponentText(getCommandSenderName());
// 	}
// 
// 	@Override
// 	public int getInventoryStackLimit()
// 	{
// 		return 64;
// 	}
// 
// 	@Override
// 	public void markDirty()
// 	{
// 		container.onCraftMatrixChanged(this);
// 	}
// 
// 	@Override
// 	public boolean isUseableByPlayer(EntityPlayer player)
// 	{
// 		return true;
// 	}
// 
// 	@Override
// 	public void openInventory(EntityPlayer player)
// 	{ }
// 
// 	@Override
// 	public void closeInventory(EntityPlayer player)
// 	{ }
// 
// 	@Override
// 	public boolean isItemValidForSlot(int slot, ItemStack stack)
// 	{
// 		return true;
// 	}
// 
// 	@Override
// 	public int getField(int id)
// 	{
// 		return 0;
// 	}
// 
// 	@Override
// 	public void setField(int id, int value)
// 	{ }
// 
// 	@Override
// 	public int getFieldCount()
// 	{
// 		return 0;
// 	}
// 
// 	@Override
// 	public void clear()
// 	{
// 		for (int i = 0; i < stackList.length; i++)
// 		{
// 			stackList[i] = null;
// 		}
// 	}
// }


// Path: src/main/java/net/einsteinsci/betterbeginnings/register/recipe/AdvancedCraftingHandler.java
import net.einsteinsci.betterbeginnings.inventory.InventoryWorkbenchAdditionalMaterials;
import net.minecraft.block.Block;
import net.minecraft.inventory.IInventory;
import net.minecraft.inventory.InventoryCrafting;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.world.World;
import net.minecraftforge.oredict.OreDictionary;
import java.util.*;

			if (hashmap.containsKey(Character.valueOf(iterChar)))
			{
				neededItems[j] = ((OreRecipeElement)hashmap.get(Character.valueOf(iterChar))).copy();
			}
			else
			{
				neededItems[j] = null;
			}
		}

		AdvancedRecipe advancedrecipes = new AdvancedRecipe(width, height, neededItems, result, addedMats, hide);
		recipes.add(advancedrecipes);
		return advancedrecipes;
	}

	public static AdvancedCraftingHandler crafting()
	{
		return CRAFTING;
	}

	public static AdvancedRecipe advancedRecipeByResultAndContents(ItemStack result,
		IInventory craftMatrix, IInventory additionalMaterials, World world)
	{
		for (Object obj : crafting().recipes)
		{
			if (obj instanceof AdvancedRecipe)
			{
				AdvancedRecipe recipe = (AdvancedRecipe)obj;

				if (recipe.matches((InventoryCrafting)craftMatrix,
					(InventoryWorkbenchAdditionalMaterials)additionalMaterials, world))