SPIGOT-3033: Alter behaviour of cancelled hopper transfers

By: md_5 <git@md-5.net>
This commit is contained in:
CraftBukkit/Spigot 2017-01-26 11:13:00 +11:00
parent c98102fd99
commit ca9bfb2d1f

View file

@ -56,7 +56,7 @@
} }
public void F_() { public void F_() {
@@ -163,10 +197,35 @@ @@ -163,10 +197,34 @@
for (int i = 0; i < this.getSize(); ++i) { for (int i = 0; i < this.getSize(); ++i) {
if (!this.getItem(i).isEmpty()) { if (!this.getItem(i).isEmpty()) {
ItemStack itemstack = this.getItem(i).cloneItemStack(); ItemStack itemstack = this.getItem(i).cloneItemStack();
@ -78,8 +78,7 @@
+ this.getWorld().getServer().getPluginManager().callEvent(event); + this.getWorld().getServer().getPluginManager().callEvent(event);
+ if (event.isCancelled()) { + if (event.isCancelled()) {
+ this.setItem(i, itemstack); + this.setItem(i, itemstack);
+ this.setCooldown(8); // Delay hopper checks + continue;
+ return false;
+ } + }
+ ItemStack itemstack1 = addItem(this, iinventory, CraftItemStack.asNMSCopy(event.getItem()), enumdirection); + ItemStack itemstack1 = addItem(this, iinventory, CraftItemStack.asNMSCopy(event.getItem()), enumdirection);
@ -94,7 +93,7 @@
return true; return true;
} }
@@ -288,10 +347,41 @@ @@ -288,10 +346,41 @@
if (!itemstack.isEmpty() && b(iinventory, itemstack, i, enumdirection)) { if (!itemstack.isEmpty() && b(iinventory, itemstack, i, enumdirection)) {
ItemStack itemstack1 = itemstack.cloneItemStack(); ItemStack itemstack1 = itemstack.cloneItemStack();
@ -138,7 +137,7 @@
return true; return true;
} }
@@ -307,6 +397,13 @@ @@ -307,6 +396,13 @@
if (entityitem == null) { if (entityitem == null) {
return false; return false;
} else { } else {