--- ../src-base/minecraft/net/minecraft/tileentity/TileEntityFurnace.java
+++ ../src-work/minecraft/net/minecraft/tileentity/TileEntityFurnace.java
@@ -233,8 +233,7 @@
 
                             if (this.field_145957_n[1].field_77994_a == 0)
                             {
-                                Item item = this.field_145957_n[1].func_77973_b().func_77668_q();
-                                this.field_145957_n[1] = item != null ? new ItemStack(item) : null;
+                                this.field_145957_n[1] = field_145957_n[1].func_77973_b().getContainerItem(field_145957_n[1]);
                             }
                         }
                     }
@@ -285,7 +284,11 @@
         else
         {
             ItemStack itemstack = FurnaceRecipes.func_77602_a().func_151395_a(this.field_145957_n[0]);
-            return itemstack == null ? false : (this.field_145957_n[2] == null ? true : (!this.field_145957_n[2].func_77969_a(itemstack) ? false : (this.field_145957_n[2].field_77994_a < this.func_70297_j_() && this.field_145957_n[2].field_77994_a < this.field_145957_n[2].func_77976_d() ? true : this.field_145957_n[2].field_77994_a < itemstack.func_77976_d())));
+            if (itemstack == null) return false;
+            if (this.field_145957_n[2] == null) return true;
+            if (!this.field_145957_n[2].func_77969_a(itemstack)) return false;
+            int result = field_145957_n[2].field_77994_a + itemstack.field_77994_a;
+            return result <= func_70297_j_() && result <= this.field_145957_n[2].func_77976_d(); //Forge BugFix: Make it respect stack sizes properly.
         }
     }
 
@@ -301,7 +304,7 @@
             }
             else if (this.field_145957_n[2].func_77973_b() == itemstack.func_77973_b())
             {
-                ++this.field_145957_n[2].field_77994_a;
+                this.field_145957_n[2].field_77994_a += itemstack.field_77994_a; // Forge BugFix: Results may have multiple items
             }
 
             if (this.field_145957_n[0].func_77973_b() == Item.func_150898_a(Blocks.field_150360_v) && this.field_145957_n[0].func_77960_j() == 1 && this.field_145957_n[1] != null && this.field_145957_n[1].func_77973_b() == Items.field_151133_ar)
