--- ../src_base/minecraft_server/net/minecraft/src/TileEntityFurnace.java 0000-00-00 00:00:00.000000000 -00 +++ ../src_work/minecraft_server/net/minecraft/src/TileEntityFurnace.java 0000-00-00 00:00:00.000000000 -00 @@ -4,6 +4,7 @@ package net.minecraft.src; +import net.minecraft.src.forge.ISidedInventory; // Referenced classes of package net.minecraft.src: // TileEntity, IInventory, ItemStack, NBTTagCompound, @@ -12,7 +13,7 @@ // EntityPlayer public class TileEntityFurnace extends TileEntity - implements IInventory + implements IInventory, ISidedInventory { public TileEntityFurnace() @@ -28,6 +29,16 @@ 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]; @@ -176,7 +187,7 @@ { return false; } - ItemStack itemstack = FurnaceRecipes.smelting().getSmeltingResult(furnaceItemStacks[0].getItem().shiftedIndex); + ItemStack itemstack = FurnaceRecipes.smelting().getSmeltingResult(furnaceItemStacks[0]); if(itemstack == null) { return false; @@ -189,13 +200,9 @@ { return false; } - if(furnaceItemStacks[2].stackSize < getInventoryStackLimit() && furnaceItemStacks[2].stackSize < furnaceItemStacks[2].getMaxStackSize()) - { - return true; - } else - { - return furnaceItemStacks[2].stackSize < itemstack.getMaxStackSize(); - } + int st=furnaceItemStacks[2].stackSize+itemstack.stackSize; + return (st<=getInventoryStackLimit() && + st<=itemstack.getMaxStackSize()); } public void smeltItem() @@ -204,23 +211,29 @@ { 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) + 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 static int getItemBurnTime(ItemStack itemstack) { if(itemstack == null) {