--- ../src_base/minecraft_server/net/minecraft/src/TileEntityFurnace.java 0000-00-00 00:00:00.000000000 -0000 +++ ../src_work/minecraft_server/net/minecraft/src/TileEntityFurnace.java 0000-00-00 00:00:00.000000000 -0000 @@ -1,7 +1,9 @@ package net.minecraft.src; +import net.minecraft.src.forge.ISidedInventory; + public class TileEntityFurnace extends TileEntity - implements IInventory + implements IInventory, ISidedInventory { private ItemStack furnaceItemStacks[]; public int furnaceBurnTime; @@ -21,6 +23,18 @@ return furnaceItemStacks.length; } + public int getStartInventorySide(int side) + { + if (side == 0) return 1; + if (side == 1) return 0; + return 2; + } + + public int getSizeInventorySide(int side) + { + return 1; + } + public ItemStack getStackInSlot(int i) { return furnaceItemStacks[i]; @@ -171,7 +185,7 @@ { return false; } - ItemStack itemstack = FurnaceRecipes.smelting().getSmeltingResult(furnaceItemStacks[0].getItem().shiftedIndex); + ItemStack itemstack = FurnaceRecipes.smelting().getSmeltingResult(furnaceItemStacks[0]); if (itemstack == null) { return false; @@ -184,14 +198,8 @@ { return false; } - if (furnaceItemStacks[2].stackSize < getInventoryStackLimit() && furnaceItemStacks[2].stackSize < furnaceItemStacks[2].getMaxStackSize()) - { - return true; - } - else - { - return furnaceItemStacks[2].stackSize < itemstack.getMaxStackSize(); - } + int result = furnaceItemStacks[2].stackSize + itemstack.stackSize; + return (result <= getInventoryStackLimit() && result <= itemstack.getMaxStackSize()); } public void smeltItem() @@ -200,23 +208,30 @@ { return; } - ItemStack itemstack = FurnaceRecipes.smelting().getSmeltingResult(furnaceItemStacks[0].getItem().shiftedIndex); + ItemStack itemstack = FurnaceRecipes.smelting().getSmeltingResult(furnaceItemStacks[0]); if (furnaceItemStacks[2] == null) { furnaceItemStacks[2] = itemstack.copy(); } - else if (furnaceItemStacks[2].itemID == itemstack.itemID) + else if (furnaceItemStacks[2].isItemEqual(itemstack)) + { + furnaceItemStacks[2].stackSize += itemstack.stackSize; + } + if (furnaceItemStacks[0].getItem().hasContainerItem()) + { + furnaceItemStacks[0] = new ItemStack(furnaceItemStacks[0].getItem().getContainerItem()); + } + else { - furnaceItemStacks[2].stackSize++; + furnaceItemStacks[0].stackSize--; } - furnaceItemStacks[0].stackSize--; if (furnaceItemStacks[0].stackSize <= 0) { furnaceItemStacks[0] = null; } } - private int getItemBurnTime(ItemStack itemstack) + public int getItemBurnTime(ItemStack itemstack) { if (itemstack == null) {