diff options
Diffstat (limited to 'src/main/java/net/minecraft/server/TileEntityFurnace.java')
-rw-r--r-- | src/main/java/net/minecraft/server/TileEntityFurnace.java | 66 |
1 files changed, 34 insertions, 32 deletions
diff --git a/src/main/java/net/minecraft/server/TileEntityFurnace.java b/src/main/java/net/minecraft/server/TileEntityFurnace.java index 945969a3..8f8771cc 100644 --- a/src/main/java/net/minecraft/server/TileEntityFurnace.java +++ b/src/main/java/net/minecraft/server/TileEntityFurnace.java @@ -21,7 +21,7 @@ public class TileEntityFurnace extends TileEntity implements IWorldInventory { public int cookTime; private String o; - // CraftBukkit start + // CraftBukkit start - add fields and methods private int lastTick = MinecraftServer.currentTick; private int maxStack = MAX_STACK; public List<HumanEntity> transaction = new java.util.ArrayList<HumanEntity>(); @@ -183,49 +183,51 @@ public class TileEntityFurnace extends TileEntity implements IWorldInventory { // CraftBukkit end if (this.burnTime > 0) { - this.burnTime -= elapsedTicks; // CraftBukkit + this.burnTime -= elapsedTicks; // CraftBukkit - use elapsedTicks in place of constant } if (!this.world.isStatic) { - // CraftBukkit start - Handle multiple elapsed ticks - if (this.burnTime <= 0 && this.canBurn() && this.items[1] != null) { // CraftBukkit - == to <= - CraftItemStack fuel = CraftItemStack.asCraftMirror(this.items[1]); + if (this.burnTime != 0 || this.items[1] != null && this.items[0] != null) { + // CraftBukkit start - Handle multiple elapsed ticks + if (this.burnTime <= 0 && this.canBurn()) { // CraftBukkit - == to <= + CraftItemStack fuel = CraftItemStack.asCraftMirror(this.items[1]); - FurnaceBurnEvent furnaceBurnEvent = new FurnaceBurnEvent(this.world.getWorld().getBlockAt(this.x, this.y, this.z), fuel, fuelTime(this.items[1])); - this.world.getServer().getPluginManager().callEvent(furnaceBurnEvent); + FurnaceBurnEvent furnaceBurnEvent = new FurnaceBurnEvent(this.world.getWorld().getBlockAt(this.x, this.y, this.z), fuel, fuelTime(this.items[1])); + this.world.getServer().getPluginManager().callEvent(furnaceBurnEvent); - if (furnaceBurnEvent.isCancelled()) { - return; - } + if (furnaceBurnEvent.isCancelled()) { + return; + } - this.ticksForCurrentFuel = furnaceBurnEvent.getBurnTime(); - this.burnTime += this.ticksForCurrentFuel; - if (this.burnTime > 0 && furnaceBurnEvent.isBurning()) { - // CraftBukkit end - flag1 = true; - if (this.items[1] != null) { - --this.items[1].count; - if (this.items[1].count == 0) { - Item item = this.items[1].getItem().t(); - - this.items[1] = item != null ? new ItemStack(item) : null; + this.ticksForCurrentFuel = furnaceBurnEvent.getBurnTime(); + this.burnTime += this.ticksForCurrentFuel; + if (this.burnTime > 0 && furnaceBurnEvent.isBurning()) { + // CraftBukkit end + flag1 = true; + if (this.items[1] != null) { + --this.items[1].count; + if (this.items[1].count == 0) { + Item item = this.items[1].getItem().t(); + + this.items[1] = item != null ? new ItemStack(item) : null; + } } } } - } - /* CraftBukkit start - Moved up - if (this.isBurning() && this.canBurn()) { - ++this.cookTime; - if (this.cookTime == 200) { + /* CraftBukkit start - Moved up + if (this.isBurning() && this.canBurn()) { + ++this.cookTime; + if (this.cookTime == 200) { + this.cookTime = 0; + this.burn(); + flag1 = true; + } + } else { this.cookTime = 0; - this.burn(); - flag1 = true; } - } else { - this.cookTime = 0; + */ } - // CraftBukkit end */ if (flag != this.burnTime > 0) { flag1 = true; @@ -253,7 +255,7 @@ public class TileEntityFurnace extends TileEntity implements IWorldInventory { if (this.canBurn()) { ItemStack itemstack = RecipesFurnace.getInstance().getResult(this.items[0]); - // CraftBukkit start + // CraftBukkit start - fire FurnaceSmeltEvent CraftItemStack source = CraftItemStack.asCraftMirror(this.items[0]); org.bukkit.inventory.ItemStack result = CraftItemStack.asBukkitCopy(itemstack); |