--- ../src-base/minecraft/net/minecraft/item/crafting/FurnaceRecipes.java
+++ ../src-work/minecraft/net/minecraft/item/crafting/FurnaceRecipes.java
@@ -14,8 +14,9 @@
 public class FurnaceRecipes
 {
     private static final FurnaceRecipes smeltingBase = new FurnaceRecipes();
-    private Map smeltingList = new HashMap();
+    public Map smeltingList = new HashMap(); // CraftBukkit - private -> public
     private Map experienceList = new HashMap();
+    public Map customRecipes = new HashMap(); // CraftBukkit
     private static final String __OBFID = "CL_00000085";
 
     public static FurnaceRecipes smelting()
@@ -23,7 +24,7 @@
         return smeltingBase;
     }
 
-    private FurnaceRecipes()
+    public FurnaceRecipes()   // CraftBukkit - private -> public
     {
         this.func_151393_a(Blocks.iron_ore, new ItemStack(Items.iron_ingot), 0.7F);
         this.func_151393_a(Blocks.gold_ore, new ItemStack(Items.gold_ingot), 1.0F);
@@ -76,16 +77,37 @@
         this.experienceList.put(p_151394_2_, Float.valueOf(p_151394_3_));
     }
 
+    // CraftBukkit start
+    public void registerRecipe(ItemStack itemstack, ItemStack itemstack1)
+    {
+        this.customRecipes.put(itemstack, itemstack1);
+    }
+    // CraftBukkit end
+
     public ItemStack getSmeltingResult(ItemStack p_151395_1_)
     {
-        Iterator iterator = this.smeltingList.entrySet().iterator();
+        // CraftBukkit start
+        boolean vanilla = false;
+        Iterator iterator = this.customRecipes.entrySet().iterator();
+        // CraftBukkit end
         Entry entry;
 
         do
         {
             if (!iterator.hasNext())
             {
-                return null;
+                // CraftBukkit start
+                if (!vanilla)
+                {
+                    iterator = this.smeltingList.entrySet().iterator();
+                    vanilla = true;
+                }
+                else
+                {
+                    return null;
+                }
+
+                // CraftBukkit end
             }
 
             entry = (Entry)iterator.next();