mirror of
https://github.com/PaperMC/Paper.git
synced 2025-08-08 08:02:13 -07:00
Make sure to catch extra interact packets from the client
This commit is contained in:
@@ -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;
|
||||
|
Reference in New Issue
Block a user