-
-
Notifications
You must be signed in to change notification settings - Fork 2.4k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Expose Hand during BlockCanBuildEvent (#9636)
- Loading branch information
Showing
2 changed files
with
86 additions
and
0 deletions.
There are no files selected for viewing
54 changes: 54 additions & 0 deletions
54
patches/api/0436-Expose-hand-during-BlockCanBuildEvent.patch
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,54 @@ | ||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 | ||
From: The456gamer <[email protected]> | ||
Date: Mon, 21 Aug 2023 14:13:43 +0100 | ||
Subject: [PATCH] Expose hand during BlockCanBuildEvent | ||
|
||
|
||
diff --git a/src/main/java/org/bukkit/event/block/BlockCanBuildEvent.java b/src/main/java/org/bukkit/event/block/BlockCanBuildEvent.java | ||
index a1350c0f74d445dca09eea6e10abac050bb06990..08d09c2a92d8aa6adf6610cc05905d58a76fce1f 100644 | ||
--- a/src/main/java/org/bukkit/event/block/BlockCanBuildEvent.java | ||
+++ b/src/main/java/org/bukkit/event/block/BlockCanBuildEvent.java | ||
@@ -25,10 +25,11 @@ public class BlockCanBuildEvent extends BlockEvent { | ||
|
||
protected BlockData blockData; | ||
private final Player player; | ||
+ private final org.bukkit.inventory.EquipmentSlot hand; // Paper - expose hand | ||
|
||
@Deprecated | ||
public BlockCanBuildEvent(@NotNull final Block block, @NotNull final BlockData type, final boolean canBuild) { | ||
- this(block, null, type, canBuild); | ||
+ this(block, null, type, canBuild, org.bukkit.inventory.EquipmentSlot.HAND); // Paper - expose hand | ||
} | ||
|
||
/** | ||
@@ -37,12 +38,30 @@ public class BlockCanBuildEvent extends BlockEvent { | ||
* @param type the id of the block to place | ||
* @param canBuild whether we can build | ||
*/ | ||
+ @java.lang.Deprecated // Paper | ||
+ @io.papermc.paper.annotation.DoNotUse // Paper | ||
public BlockCanBuildEvent(@NotNull final Block block, @Nullable final Player player, @NotNull final BlockData type, final boolean canBuild) { | ||
+ this(block, player, type, canBuild, org.bukkit.inventory.EquipmentSlot.HAND); // Paper start - expose hand | ||
+ } | ||
+ @org.jetbrains.annotations.ApiStatus.Internal | ||
+ public BlockCanBuildEvent(@NotNull final Block block, @Nullable final Player player, @NotNull final BlockData type, final boolean canBuild, @NotNull final org.bukkit.inventory.EquipmentSlot hand) { // Paper end - expose hand | ||
super(block); | ||
this.player = player; | ||
this.buildable = canBuild; | ||
this.blockData = type; | ||
+ this.hand = hand; // Paper | ||
+ } | ||
+ // Paper start | ||
+ /** | ||
+ * Gets the hand the player will use to place the block | ||
+ * | ||
+ * @return the EquipmentSlot representing the players hand. | ||
+ */ | ||
+ @NotNull | ||
+ public org.bukkit.inventory.EquipmentSlot getHand() { | ||
+ return hand; | ||
} | ||
+ // Paper end | ||
|
||
/** | ||
* Gets whether or not the block can be built here. |
32 changes: 32 additions & 0 deletions
32
patches/server/1023-Expose-hand-during-BlockCanBuildEvent.patch
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,32 @@ | ||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 | ||
From: The456gamer <[email protected]> | ||
Date: Mon, 21 Aug 2023 14:13:42 +0100 | ||
Subject: [PATCH] Expose hand during BlockCanBuildEvent | ||
|
||
|
||
diff --git a/src/main/java/net/minecraft/world/item/BlockItem.java b/src/main/java/net/minecraft/world/item/BlockItem.java | ||
index ebee8de2ed831755b6fd154f6cc77ac993839bb9..65c69432da4bc042cd975e01fcf62b09843cf202 100644 | ||
--- a/src/main/java/net/minecraft/world/item/BlockItem.java | ||
+++ b/src/main/java/net/minecraft/world/item/BlockItem.java | ||
@@ -215,7 +215,7 @@ public class BlockItem extends Item { | ||
boolean defaultReturn = (!this.mustSurvive() || state.canSurvive(context.getLevel(), context.getClickedPos())) && world.checkEntityCollision(state, entityhuman, voxelshapecollision, context.getClickedPos(), true); // Paper | ||
org.bukkit.entity.Player player = (context.getPlayer() instanceof ServerPlayer) ? (org.bukkit.entity.Player) context.getPlayer().getBukkitEntity() : null; | ||
|
||
- 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 | ||
context.getLevel().getCraftServer().getPluginManager().callEvent(event); | ||
|
||
return event.isBuildable(); | ||
diff --git a/src/main/java/net/minecraft/world/item/StandingAndWallBlockItem.java b/src/main/java/net/minecraft/world/item/StandingAndWallBlockItem.java | ||
index 39b8b3675ac58409e05fac07e07c8016c5280d81..88072259a9de205db428351c5c9f6114e199e402 100644 | ||
--- a/src/main/java/net/minecraft/world/item/StandingAndWallBlockItem.java | ||
+++ b/src/main/java/net/minecraft/world/item/StandingAndWallBlockItem.java | ||
@@ -59,7 +59,7 @@ public class StandingAndWallBlockItem extends BlockItem { | ||
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 | ||
context.getLevel().getCraftServer().getPluginManager().callEvent(event); | ||
|
||
return (event.isBuildable()) ? iblockdata1 : null; |