summaryrefslogtreecommitdiffstats
path: root/nms-patches/PlayerInteractManager.patch
diff options
context:
space:
mode:
authorThinkofdeath <thinkofdeath@spigotmc.org>2014-12-09 12:20:44 +0000
committerThinkofdeath <thinkofdeath@spigotmc.org>2014-12-09 12:20:44 +0000
commit917e46a8d396d966c2c3b4d13e94e0a5896a7434 (patch)
treeab84f130d56761c171faa9684aecc0b706b95f73 /nms-patches/PlayerInteractManager.patch
parentcf5a502fd4576aef6eda45d38d323b204322876a (diff)
downloadcraftbukkit-917e46a8d396d966c2c3b4d13e94e0a5896a7434.tar
craftbukkit-917e46a8d396d966c2c3b4d13e94e0a5896a7434.tar.gz
craftbukkit-917e46a8d396d966c2c3b4d13e94e0a5896a7434.tar.lz
craftbukkit-917e46a8d396d966c2c3b4d13e94e0a5896a7434.tar.xz
craftbukkit-917e46a8d396d966c2c3b4d13e94e0a5896a7434.zip
Make sure to catch extra interact packets from the client
Diffstat (limited to 'nms-patches/PlayerInteractManager.patch')
-rw-r--r--nms-patches/PlayerInteractManager.patch19
1 files changed, 11 insertions, 8 deletions
diff --git a/nms-patches/PlayerInteractManager.patch b/nms-patches/PlayerInteractManager.patch
index 4af20ec6..f5662ce3 100644
--- a/nms-patches/PlayerInteractManager.patch
+++ b/nms-patches/PlayerInteractManager.patch
@@ -1,5 +1,5 @@
---- ../work/decompile-8eb82bde//net/minecraft/server/PlayerInteractManager.java 2014-12-09 09:38:37.363833006 +0000
-+++ src/main/java/net/minecraft/server/PlayerInteractManager.java 2014-12-09 09:38:31.515833135 +0000
+--- ../work/decompile-8eb82bde//net/minecraft/server/PlayerInteractManager.java 2014-12-09 12:19:57.555618161 +0000
++++ src/main/java/net/minecraft/server/PlayerInteractManager.java 2014-12-09 12:16:26.307622849 +0000
@@ -1,5 +1,13 @@
package net.minecraft.server;
@@ -202,19 +202,21 @@
return flag;
}
-@@ -266,8 +392,11 @@
- }
+@@ -267,7 +393,13 @@
}
}
-+
-+ public boolean interactResult = true; // CraftBukkit
++ // CraftBukkit start
++ public boolean interactResult = false;
++ public boolean firedInteract = false;
++ // CraftBukkit end
++
public boolean interact(EntityHuman entityhuman, World world, ItemStack itemstack, BlockPosition blockposition, EnumDirection enumdirection, float f, float f1, float f2) {
+ /* CraftBukkit start - whole method
if (this.gamemode == EnumGamemode.SPECTATOR) {
TileEntity tileentity = world.getTileEntity(blockposition);
-@@ -312,6 +441,67 @@
+@@ -312,6 +444,68 @@
return itemstack.placeItem(entityhuman, world, blockposition, enumdirection, f, f1, f2);
}
}
@@ -230,6 +232,8 @@
+ }
+
+ PlayerInteractEvent event = CraftEventFactory.callPlayerInteractEvent(entityhuman, Action.RIGHT_CLICK_BLOCK, blockposition, enumdirection, itemstack, cancelledBlock);
++ firedInteract = true;
++ interactResult = event.useItemInHand() == Event.Result.DENY;
+
+ if (event.useInteractedBlock() == Event.Result.DENY) {
+ // If we denied a door from opening, we need to send a correcting update to the client, as it already opened the door.
@@ -263,7 +267,6 @@
+ result = blockdata.getBlock().interact(world, blockposition, blockdata, entityhuman, enumdirection, f, f1, f2);
+ }
+
-+ interactResult = event.useItemInHand() != Event.Result.DENY;
+ if (itemstack != null && !result) {
+ int j1 = itemstack.getData();
+ int k1 = itemstack.count;