Rework furnace result log. Fixes BUKKIT-5115
This changes the logic for furnace smelt event to consider a result of null (read: air / invalid), which will still consume an item. It also properly considers item meta in the result, instead of only checking the item data value.
This commit is contained in:
parent
f5f71a5502
commit
ca4c118994
@ -255,7 +255,7 @@ public class TileEntityFurnace extends TileEntity implements IWorldInventory {
|
|||||||
|
|
||||||
// CraftBukkit start
|
// CraftBukkit start
|
||||||
CraftItemStack source = CraftItemStack.asCraftMirror(this.items[0]);
|
CraftItemStack source = CraftItemStack.asCraftMirror(this.items[0]);
|
||||||
CraftItemStack result = CraftItemStack.asCraftMirror(itemstack.cloneItemStack());
|
org.bukkit.inventory.ItemStack result = CraftItemStack.asBukkitCopy(itemstack);
|
||||||
|
|
||||||
FurnaceSmeltEvent furnaceSmeltEvent = new FurnaceSmeltEvent(this.world.getWorld().getBlockAt(this.x, this.y, this.z), source, result);
|
FurnaceSmeltEvent furnaceSmeltEvent = new FurnaceSmeltEvent(this.world.getWorld().getBlockAt(this.x, this.y, this.z), source, result);
|
||||||
this.world.getServer().getPluginManager().callEvent(furnaceSmeltEvent);
|
this.world.getServer().getPluginManager().callEvent(furnaceSmeltEvent);
|
||||||
@ -264,17 +264,19 @@ public class TileEntityFurnace extends TileEntity implements IWorldInventory {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
itemstack = CraftItemStack.asNMSCopy(furnaceSmeltEvent.getResult());
|
result = furnaceSmeltEvent.getResult();
|
||||||
|
itemstack = CraftItemStack.asNMSCopy(result);
|
||||||
|
|
||||||
|
if (itemstack != null) {
|
||||||
if (this.items[2] == null) {
|
if (this.items[2] == null) {
|
||||||
this.items[2] = itemstack.cloneItemStack();
|
this.items[2] = itemstack;
|
||||||
} else if (this.items[2].getItem() == itemstack.getItem()) {
|
} else if (CraftItemStack.asCraftMirror(this.items[2]).isSimilar(result)) {
|
||||||
// CraftBukkit - compare damage too
|
|
||||||
if (this.items[2].getData() == itemstack.getData()) {
|
|
||||||
this.items[2].count += itemstack.count;
|
this.items[2].count += itemstack.count;
|
||||||
|
} else {
|
||||||
|
return;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
// CraftBukkit end
|
// CraftBukkit end
|
||||||
}
|
|
||||||
|
|
||||||
--this.items[0].count;
|
--this.items[0].count;
|
||||||
if (this.items[0].count <= 0) {
|
if (this.items[0].count <= 0) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user