36 lines
1.7 KiB
Diff
36 lines
1.7 KiB
Diff
|
From f9172bc5ec67e5f0a52b1e635ca2f646980e55b3 Mon Sep 17 00:00:00 2001
|
||
|
From: bloodshot <jdroque@gmail.com>
|
||
|
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
|
||
|
|