diff --git a/nms-patches/net/minecraft/server/level/PlayerInteractManager.patch b/nms-patches/net/minecraft/server/level/PlayerInteractManager.patch index 85b270efb..1dbf78735 100644 --- a/nms-patches/net/minecraft/server/level/PlayerInteractManager.patch +++ b/nms-patches/net/minecraft/server/level/PlayerInteractManager.patch @@ -122,7 +122,7 @@ + } + return; + } -+ org.bukkit.event.block.BlockDamageEvent blockEvent = CraftEventFactory.callBlockDamageEvent(this.player, blockposition.getX(), blockposition.getY(), blockposition.getZ(), this.player.getInventory().getSelected(), f >= 1.0f); ++ org.bukkit.event.block.BlockDamageEvent blockEvent = CraftEventFactory.callBlockDamageEvent(this.player, blockposition, this.player.getInventory().getSelected(), f >= 1.0f); + + if (blockEvent.isCancelled()) { + // Let the client know the block still exists diff --git a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java index f2534491d..9b4c6c130 100644 --- a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java +++ b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java @@ -560,17 +560,14 @@ public class CraftEventFactory { /** * BlockDamageEvent */ - public static BlockDamageEvent callBlockDamageEvent(EntityHuman who, int x, int y, int z, ItemStack itemstack, boolean instaBreak) { - Player player = (who == null) ? null : (Player) who.getBukkitEntity(); + public static BlockDamageEvent callBlockDamageEvent(EntityPlayer who, BlockPosition pos, ItemStack itemstack, boolean instaBreak) { + Player player = who.getBukkitEntity(); CraftItemStack itemInHand = CraftItemStack.asCraftMirror(itemstack); - CraftWorld craftWorld = (CraftWorld) player.getWorld(); - CraftServer craftServer = (CraftServer) player.getServer(); - - Block blockClicked = craftWorld.getBlockAt(x, y, z); + Block blockClicked = CraftBlock.at(who.getLevel(), pos); BlockDamageEvent event = new BlockDamageEvent(player, blockClicked, itemInHand, instaBreak); - craftServer.getPluginManager().callEvent(event); + player.getServer().getPluginManager().callEvent(event); return event; }