SPIGOT-4238: Sometimes buckets are leaky client side when empty event is cancelled

This commit is contained in:
md_5 2018-08-07 21:17:49 +10:00
parent 200b239819
commit 53d3ac0a97

View File

@ -88,7 +88,7 @@
if (!(this.a instanceof FluidTypeFlowing)) {
return false;
} else {
@@ -103,8 +127,17 @@
@@ -103,8 +127,18 @@
boolean flag1 = material.isReplaceable();
if (!world.isEmpty(blockposition) && !flag && !flag1 && (!(iblockdata.getBlock() instanceof IFluidContainer) || !((IFluidContainer) iblockdata.getBlock()).a((IBlockAccess) world, blockposition, iblockdata, this.a))) {
@ -99,6 +99,7 @@
+ if (entityhuman != null) {
+ PlayerBucketEmptyEvent event = CraftEventFactory.callPlayerBucketEmptyEvent(entityhuman, clicked.getX(), clicked.getY(), clicked.getZ(), enumdirection, itemstack);
+ if (event.isCancelled()) {
+ ((EntityPlayer) entityhuman).playerConnection.sendPacket(new PacketPlayOutBlockChange(world, blockposition)); // SPIGOT-4238: needed when looking through entity
+ // TODO: inventory not updated
+ return false;
+ }