From 8b97b131421f2cf80c4829c59cc6f4f81a44b374 Mon Sep 17 00:00:00 2001
From: The456gamer <the456gamer@the456gamer.dev>
Date: Mon, 21 Aug 2023 14:13:42 +0100
Subject: [PATCH] Expose hand in BlockCanBuildEvent

---
 .../sources/net/minecraft/world/item/BlockItem.java.patch       | 2 +-
 .../minecraft/world/item/StandingAndWallBlockItem.java.patch    | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/paper-server/patches/sources/net/minecraft/world/item/BlockItem.java.patch b/paper-server/patches/sources/net/minecraft/world/item/BlockItem.java.patch
index 108ce992eb..75987699a4 100644
--- a/paper-server/patches/sources/net/minecraft/world/item/BlockItem.java.patch
+++ b/paper-server/patches/sources/net/minecraft/world/item/BlockItem.java.patch
@@ -90,7 +90,7 @@
 +        org.bukkit.entity.Player player = (context.getPlayer() instanceof ServerPlayer) ? (org.bukkit.entity.Player) context.getPlayer().getBukkitEntity() : null;
  
 -        return (!this.mustSurvive() || state.canSurvive(context.getLevel(), context.getClickedPos())) && context.getLevel().isUnobstructed(state, context.getClickedPos(), voxelshapecollision);
-+        BlockCanBuildEvent event = new BlockCanBuildEvent(CraftBlock.at(context.getLevel(), context.getClickedPos()), player, CraftBlockData.fromData(state), defaultReturn);
++        BlockCanBuildEvent event = new BlockCanBuildEvent(CraftBlock.at(context.getLevel(), context.getClickedPos()), player, CraftBlockData.fromData(state), defaultReturn, org.bukkit.craftbukkit.CraftEquipmentSlot.getHand(context.getHand())); // Paper - Expose hand in BlockCanBuildEvent
 +        context.getLevel().getCraftServer().getPluginManager().callEvent(event);
 +
 +        return event.isBuildable();
diff --git a/paper-server/patches/sources/net/minecraft/world/item/StandingAndWallBlockItem.java.patch b/paper-server/patches/sources/net/minecraft/world/item/StandingAndWallBlockItem.java.patch
index 4f831f8e2b..9e1a576a36 100644
--- a/paper-server/patches/sources/net/minecraft/world/item/StandingAndWallBlockItem.java.patch
+++ b/paper-server/patches/sources/net/minecraft/world/item/StandingAndWallBlockItem.java.patch
@@ -28,7 +28,7 @@
 +            boolean defaultReturn = world.isUnobstructed(iblockdata1, blockposition, CollisionContext.empty());
 +            org.bukkit.entity.Player player = (context.getPlayer() instanceof ServerPlayer) ? (org.bukkit.entity.Player) context.getPlayer().getBukkitEntity() : null;
 +
-+            BlockCanBuildEvent event = new BlockCanBuildEvent(CraftBlock.at(world, blockposition), player, CraftBlockData.fromData(iblockdata1), defaultReturn);
++            BlockCanBuildEvent event = new BlockCanBuildEvent(CraftBlock.at(world, blockposition), player, CraftBlockData.fromData(iblockdata1), defaultReturn, org.bukkit.craftbukkit.CraftEquipmentSlot.getHand(context.getHand())); // Paper - Expose hand in BlockCanBuildEvent
 +            context.getLevel().getCraftServer().getPluginManager().callEvent(event);
 +
 +            return (event.isBuildable()) ? iblockdata1 : null;