-
-
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 clicked BlockFace during BlockDamageEvent
- Loading branch information
Showing
2 changed files
with
80 additions
and
0 deletions.
There are no files selected for viewing
41 changes: 41 additions & 0 deletions
41
patches/api/0428-Expose-clicked-BlockFace-during-BlockDamageEvent.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,41 @@ | ||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 | ||
From: aerulion <[email protected]> | ||
Date: Mon, 21 Aug 2023 04:36:07 +0200 | ||
Subject: [PATCH] Expose clicked BlockFace during BlockDamageEvent | ||
|
||
|
||
diff --git a/src/main/java/org/bukkit/event/block/BlockDamageEvent.java b/src/main/java/org/bukkit/event/block/BlockDamageEvent.java | ||
index cd04a0bd9d232857408b38605787016a217cb8d2..78b54d86e523e4e82ab265678bbffe5aa326c260 100644 | ||
--- a/src/main/java/org/bukkit/event/block/BlockDamageEvent.java | ||
+++ b/src/main/java/org/bukkit/event/block/BlockDamageEvent.java | ||
@@ -19,9 +19,11 @@ public class BlockDamageEvent extends BlockEvent implements Cancellable { | ||
private boolean instaBreak; | ||
private boolean cancel; | ||
private final ItemStack itemstack; | ||
+ private final org.bukkit.block.BlockFace blockFace; // Paper - Expose BlockFace | ||
|
||
- public BlockDamageEvent(@NotNull final Player player, @NotNull final Block block, @NotNull final ItemStack itemInHand, final boolean instaBreak) { | ||
+ public BlockDamageEvent(@NotNull final Player player, @NotNull final Block block, @NotNull final org.bukkit.block.BlockFace blockFace, @NotNull final ItemStack itemInHand, final boolean instaBreak) { // Paper - Expose BlockFace | ||
super(block); | ||
+ this.blockFace = blockFace; // Paper - Expose BlockFace | ||
this.instaBreak = instaBreak; | ||
this.player = player; | ||
this.itemstack = itemInHand; | ||
@@ -67,6 +69,17 @@ public class BlockDamageEvent extends BlockEvent implements Cancellable { | ||
public ItemStack getItemInHand() { | ||
return itemstack; | ||
} | ||
+ // Paper start - Expose BlockFace | ||
+ /** | ||
+ * Gets the BlockFace the player is interacting with. | ||
+ * | ||
+ * @return The BlockFace clicked to damage the block | ||
+ */ | ||
+ @NotNull | ||
+ public org.bukkit.block.BlockFace getBlockFace() { | ||
+ return this.blockFace; | ||
+ } | ||
+ //Paper end | ||
|
||
@Override | ||
public boolean isCancelled() { |
39 changes: 39 additions & 0 deletions
39
patches/server/1006-Expose-clicked-BlockFace-during-BlockDamageEvent.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,39 @@ | ||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 | ||
From: aerulion <[email protected]> | ||
Date: Mon, 21 Aug 2023 04:36:07 +0200 | ||
Subject: [PATCH] Expose clicked BlockFace during BlockDamageEvent | ||
|
||
|
||
diff --git a/src/main/java/net/minecraft/server/level/ServerPlayerGameMode.java b/src/main/java/net/minecraft/server/level/ServerPlayerGameMode.java | ||
index baf3e79489e310f443788bc917c553ae7ea86c89..58d0534af2e9cd2b356d7bd0e631ea3c5aec99ce 100644 | ||
--- a/src/main/java/net/minecraft/server/level/ServerPlayerGameMode.java | ||
+++ b/src/main/java/net/minecraft/server/level/ServerPlayerGameMode.java | ||
@@ -258,7 +258,7 @@ public class ServerPlayerGameMode { | ||
} | ||
return; | ||
} | ||
- org.bukkit.event.block.BlockDamageEvent blockEvent = CraftEventFactory.callBlockDamageEvent(this.player, pos, this.player.getInventory().getSelected(), f >= 1.0f); | ||
+ org.bukkit.event.block.BlockDamageEvent blockEvent = CraftEventFactory.callBlockDamageEvent(this.player, pos, direction, this.player.getInventory().getSelected(), f >= 1.0f); // Paper - Expose BlockFace | ||
|
||
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 26e1a9002d675245d4cf91e6682605314b078fb2..676c44f688c41df66e304db30a05d6cc967bcf99 100644 | ||
--- a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java | ||
+++ b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java | ||
@@ -648,13 +648,13 @@ public class CraftEventFactory { | ||
/** | ||
* BlockDamageEvent | ||
*/ | ||
- public static BlockDamageEvent callBlockDamageEvent(ServerPlayer who, BlockPos pos, ItemStack itemstack, boolean instaBreak) { | ||
+ public static BlockDamageEvent callBlockDamageEvent(ServerPlayer who, BlockPos pos, Direction direction, ItemStack itemstack, boolean instaBreak) { // Paper - Expose BlockFace | ||
Player player = who.getBukkitEntity(); | ||
CraftItemStack itemInHand = CraftItemStack.asCraftMirror(itemstack); | ||
|
||
Block blockClicked = CraftBlock.at(who.level(), pos); | ||
|
||
- BlockDamageEvent event = new BlockDamageEvent(player, blockClicked, itemInHand, instaBreak); | ||
+ BlockDamageEvent event = new BlockDamageEvent(player, blockClicked, CraftBlock.notchToBlockFace(direction), itemInHand, instaBreak); // Paper - Expose BlockFace | ||
player.getServer().getPluginManager().callEvent(event); | ||
|
||
return event; |