diff --git a/src/main/java/net/minecraft/server/RecipesFurnace.java b/src/main/java/net/minecraft/server/RecipesFurnace.java
index 44a621dbc5..bf6ddb4d2b 100644
--- a/src/main/java/net/minecraft/server/RecipesFurnace.java
+++ b/src/main/java/net/minecraft/server/RecipesFurnace.java
@@ -80,7 +80,7 @@ public class RecipesFurnace {
         do {
             if (!iterator.hasNext()) {
                 // CraftBukkit start
-                if (!vanilla) {
+                if (!vanilla && recipes.size() != 0) {
                     iterator = this.recipes.entrySet().iterator();
                     vanilla = true;
                 } else {
diff --git a/src/main/java/org/bukkit/craftbukkit/inventory/RecipeIterator.java b/src/main/java/org/bukkit/craftbukkit/inventory/RecipeIterator.java
index 568b2d0885..53b53b799e 100644
--- a/src/main/java/org/bukkit/craftbukkit/inventory/RecipeIterator.java
+++ b/src/main/java/org/bukkit/craftbukkit/inventory/RecipeIterator.java
@@ -10,20 +10,18 @@ import net.minecraft.server.RecipesFurnace;
 
 public class RecipeIterator implements Iterator<Recipe> {
     private final Iterator<IRecipe> recipes;
-    private final Iterator<net.minecraft.server.ItemStack> smelting;
+    private final Iterator<net.minecraft.server.ItemStack> smeltingCustom;
+    private final Iterator<net.minecraft.server.ItemStack> smeltingVanilla;
     private Iterator<?> removeFrom = null;
 
     public RecipeIterator() {
         this.recipes = CraftingManager.getInstance().getRecipes().iterator();
-        this.smelting = RecipesFurnace.getInstance().getRecipes().keySet().iterator();
+        this.smeltingCustom = RecipesFurnace.getInstance().customRecipes.keySet().iterator();
+        this.smeltingVanilla = RecipesFurnace.getInstance().recipes.keySet().iterator();
     }
 
     public boolean hasNext() {
-        if (recipes.hasNext()) {
-            return true;
-        } else {
-            return smelting.hasNext();
-        }
+        return recipes.hasNext() || smeltingCustom.hasNext() || smeltingVanilla.hasNext();
     }
 
     public Recipe next() {
@@ -31,8 +29,15 @@ public class RecipeIterator implements Iterator<Recipe> {
             removeFrom = recipes;
             return recipes.next().toBukkitRecipe();
         } else {
-            removeFrom = smelting;
-            net.minecraft.server.ItemStack item = smelting.next();
+            net.minecraft.server.ItemStack item;
+            if (smeltingCustom.hasNext()) {
+                removeFrom = smeltingCustom;
+                item = smeltingCustom.next();
+            } else {
+                removeFrom = smeltingVanilla;
+                item = smeltingVanilla.next();
+            }
+
             CraftItemStack stack = CraftItemStack.asCraftMirror(RecipesFurnace.getInstance().getResult(item));
 
             return new CraftFurnaceRecipe(stack, CraftItemStack.asCraftMirror(item));