From 1e8cb6d468593ac31b3ede2c7cf918e914721407 Mon Sep 17 00:00:00 2001 From: md_5 Date: Wed, 8 Jan 2014 14:45:45 +1100 Subject: [PATCH] Update Client's Hand when BlockPlaceEvent Cancelled Send a Packet103SetSlot to client when a BlockPlaceEvent is cancelled. Fixes BUKKIT-5284 Currently, whenever a player places a block in a protected area the equipped itemstack size on client is never updated properly since the client thinks the block was placed. The reason this happens is because ItemStack.matches returns true since the server does not decrement stack size if a BlockPlaceEvent is cancelled. This causes PlayerConnection.a(handlePlace) not to send the appropriate packet to client which causes the bug. --- ...-Hand-when-BlockPlaceEvent-Cancelled.patch | 35 +++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 CraftBukkit-Patches/0089-Update-Client-s-Hand-when-BlockPlaceEvent-Cancelled.patch diff --git a/CraftBukkit-Patches/0089-Update-Client-s-Hand-when-BlockPlaceEvent-Cancelled.patch b/CraftBukkit-Patches/0089-Update-Client-s-Hand-when-BlockPlaceEvent-Cancelled.patch new file mode 100644 index 000000000..7b79dff22 --- /dev/null +++ b/CraftBukkit-Patches/0089-Update-Client-s-Hand-when-BlockPlaceEvent-Cancelled.patch @@ -0,0 +1,35 @@ +From f9172bc5ec67e5f0a52b1e635ca2f646980e55b3 Mon Sep 17 00:00:00 2001 +From: bloodshot +Date: Mon, 6 Jan 2014 18:02:01 -0500 +Subject: [PATCH] Update Client's Hand when BlockPlaceEvent Cancelled + +Send a Packet103SetSlot to client when a BlockPlaceEvent is cancelled. + +Fixes BUKKIT-5284 + +Currently, whenever a player places a block in a protected area the +equipped itemstack size on client is never updated properly since the +client thinks the block was placed. The reason this happens is because +ItemStack.matches returns true since the server does not decrement stack +size if a BlockPlaceEvent is cancelled. This causes +PlayerConnection.a(handlePlace) not to send the appropriate packet to +client which causes the bug. + +diff --git a/src/main/java/net/minecraft/server/PlayerConnection.java b/src/main/java/net/minecraft/server/PlayerConnection.java +index f7fdca3..91de23b 100644 +--- a/src/main/java/net/minecraft/server/PlayerConnection.java ++++ b/src/main/java/net/minecraft/server/PlayerConnection.java +@@ -626,7 +626,9 @@ public class PlayerConnection implements PacketPlayInListener { + return; + } + +- this.player.playerInteractManager.interact(this.player, worldserver, itemstack, i, j, k, l, packetplayinblockplace.h(), packetplayinblockplace.i(), packetplayinblockplace.j()); ++ if (!this.player.playerInteractManager.interact(this.player, worldserver, itemstack, i, j, k, l, packetplayinblockplace.h(), packetplayinblockplace.i(), packetplayinblockplace.j())) { ++ always = true; // force Packet103SetSlot to be sent to client to update ItemStack count ++ } + // CraftBukkit end + + flag = true; +-- +1.8.3.2 +