Commits

md_5 authored f87cd1a53d8
Invalidate furnace block type after change.
No tags

nms-patches/TileEntityFurnace.patch

Modified
1 ---- ../work/decompile-c2c33c10/net/minecraft/server/TileEntityFurnace.java 2015-05-21 17:23:15.279886524 +1000
2 -+++ src/main/java/net/minecraft/server/TileEntityFurnace.java 2015-05-21 17:23:15.283886599 +1000
1 +--- ../work/decompile-c2c33c10/net/minecraft/server/TileEntityFurnace.java 2015-05-21 19:02:24.117651149 +1000
2 ++++ src/main/java/net/minecraft/server/TileEntityFurnace.java 2015-05-21 19:02:24.117651149 +1000
3 3 @@ -1,17 +1,53 @@
4 4 package net.minecraft.server;
5 5
6 6 +// CraftBukkit start
7 7 +import java.util.List;
8 8 +
9 9 +import org.bukkit.craftbukkit.inventory.CraftItemStack;
10 10 +import org.bukkit.entity.HumanEntity;
11 11 +import org.bukkit.event.inventory.FurnaceBurnEvent;
12 12 +import org.bukkit.event.inventory.FurnaceSmeltEvent;
63 63 - return 64;
64 64 + return maxStack; // CraftBukkit
65 65 }
66 66
67 67 public boolean isBurning() {
68 68 @@ -140,11 +176,29 @@
69 69 }
70 70
71 71 public void c() {
72 72 - boolean flag = this.isBurning();
73 -+ boolean flag = (this.w() == Blocks.LIT_FURNACE); // CraftBukkit - SPIGOT-844 - Check if furnace block is lit using the block instead of burn time
73 ++ boolean flag = (this.w() == Blocks.LIT_FURNACE); // CraftBukkit - SPIGOT-844 - Check if furnace block is lit using the block instead of burn time // PAIL: Rename
74 74 boolean flag1 = false;
75 75
76 76 + // CraftBukkit start - Use wall time instead of ticks for cooking
77 77 + int elapsedTicks = MinecraftServer.currentTick - this.lastTick;
78 78 + this.lastTick = MinecraftServer.currentTick;
79 79 +
80 80 + // CraftBukkit - moved from below
81 81 + if (this.isBurning() && this.canBurn()) {
82 82 + this.cookTime += elapsedTicks;
83 83 + if (this.cookTime >= this.cookTimeTotal) {
123 123 if (this.items[1] != null) {
124 124 --this.items[1].count;
125 125 @@ -168,6 +234,7 @@
126 126 }
127 127 }
128 128
129 129 + /* CraftBukkit start - Moved up
130 130 if (this.isBurning() && this.canBurn()) {
131 131 ++this.cookTime;
132 132 if (this.cookTime == this.cookTimeTotal) {
133 -@@ -179,6 +246,7 @@
133 +@@ -179,11 +246,13 @@
134 134 } else {
135 135 this.cookTime = 0;
136 136 }
137 137 + */
138 138 }
139 139
140 140 if (flag != this.isBurning()) {
141 -@@ -203,7 +271,8 @@
141 + flag1 = true;
142 + BlockFurnace.a(this.isBurning(), this.world, this.position);
143 ++ this.E(); // CraftBukkit - Invalidate tile entity's cached block type // PAIL: Rename
144 + }
145 + }
146 +
147 +@@ -203,7 +272,8 @@
142 148 } else {
143 149 ItemStack itemstack = RecipesFurnace.getInstance().getResult(this.items[0]);
144 150
145 151 - return itemstack == null ? false : (this.items[2] == null ? true : (!this.items[2].doMaterialsMatch(itemstack) ? false : (this.items[2].count < this.getMaxStackSize() && this.items[2].count < this.items[2].getMaxStackSize() ? true : this.items[2].count < itemstack.getMaxStackSize())));
146 152 + // CraftBukkit - consider resultant count instead of current count
147 153 + return itemstack == null ? false : (this.items[2] == null ? true : (!this.items[2].doMaterialsMatch(itemstack) ? false : (this.items[2].count + itemstack.count <= this.getMaxStackSize() && this.items[2].count < this.items[2].getMaxStackSize() ? true : this.items[2].count + itemstack.count <= itemstack.getMaxStackSize())));
148 154 }
149 155 }
150 156
151 -@@ -211,11 +280,38 @@
157 +@@ -211,11 +281,38 @@
152 158 if (this.canBurn()) {
153 159 ItemStack itemstack = RecipesFurnace.getInstance().getResult(this.items[0]);
154 160
155 161 + // CraftBukkit start - fire FurnaceSmeltEvent
156 162 + CraftItemStack source = CraftItemStack.asCraftMirror(this.items[0]);
157 163 + org.bukkit.inventory.ItemStack result = CraftItemStack.asBukkitCopy(itemstack);
158 164 +
159 165 + FurnaceSmeltEvent furnaceSmeltEvent = new FurnaceSmeltEvent(this.world.getWorld().getBlockAt(position.getX(), position.getY(), position.getZ()), source, result);
160 166 + this.world.getServer().getPluginManager().callEvent(furnaceSmeltEvent);
161 167 +

Everything looks good. We'll let you know here if there's anything you should know about.

Add shortcut