ForgePatch/forge/patches/minecraft_server/net/minecraft/src/TileEntityFurnace.java.patch

95 lines
3 KiB
Diff
Raw Normal View History

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