aboutsummaryrefslogtreecommitdiffhomepage
path: root/patches/api/0421-Expose-clicked-BlockFace-during-BlockDamageEvent.patch
blob: 34d194086683bdd3130c4754992c6d6a90e95a92 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: aerulion <aerulion@gmail.com>
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..392cde07d578d684423e1bf369af28696eb7e484 100644
--- a/src/main/java/org/bukkit/event/block/BlockDamageEvent.java
+++ b/src/main/java/org/bukkit/event/block/BlockDamageEvent.java
@@ -19,9 +19,20 @@ 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
 
+    // Paper start - expose blockface
+    @Deprecated(forRemoval = true)
+    @io.papermc.paper.annotation.DoNotUse
     public BlockDamageEvent(@NotNull final Player player, @NotNull final Block block, @NotNull final ItemStack itemInHand, final boolean instaBreak) {
+        this(player, block, null, itemInHand, instaBreak); // Some plugin do bad things...
+    }
+
+    @org.jetbrains.annotations.ApiStatus.Internal // Paper
+    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 end - expose blockface
         this.instaBreak = instaBreak;
         this.player = player;
         this.itemstack = itemInHand;
@@ -67,6 +78,20 @@ 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() {
+        if (this.blockFace == null) {
+            throw new IllegalStateException("BlockFace is not available for this event, most likely due to a bad constructor call by a plugin");
+        }
+        return this.blockFace;
+    }
+    //Paper end
 
     @Override
     public boolean isCancelled() {