aboutsummaryrefslogtreecommitdiffhomepage
path: root/patches/api/0402-Add-exploded-block-state-to-BlockExplodeEvent.patch
blob: bdc2de6d2369b61666a5ee7aa0e8538cf9d23d26 (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
53
54
55
56
57
58
59
60
61
62
63
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: Jake Potrebic <jake.m.potrebic@gmail.com>
Date: Fri, 22 Oct 2021 16:24:17 -0700
Subject: [PATCH] Add exploded block state to BlockExplodeEvent


diff --git a/src/main/java/org/bukkit/event/block/BlockExplodeEvent.java b/src/main/java/org/bukkit/event/block/BlockExplodeEvent.java
index 641c71ab66bd2499b35cf3c1d533fd105d096e10..d8b5362d0cdc3440efe30d619985018509b669e7 100644
--- a/src/main/java/org/bukkit/event/block/BlockExplodeEvent.java
+++ b/src/main/java/org/bukkit/event/block/BlockExplodeEvent.java
@@ -10,18 +10,29 @@ import org.jetbrains.annotations.NotNull;
  * Called when a block explodes interacting with blocks. The
  * event isn't called if the {@link org.bukkit.GameRule#MOB_GRIEFING}
  * is disabled as no block interaction will occur.
+ * <p>
+ * The {@link Block} returned by this event is not necessarily
+ * the block that caused the explosion, just the block at the location where
+ * the explosion originated. See {@link #getExplodedBlockState()}
  */
 public class BlockExplodeEvent extends BlockEvent implements Cancellable {
     private static final HandlerList handlers = new HandlerList();
     private boolean cancel;
     private final List<Block> blocks;
     private float yield;
+    private final org.bukkit.block.BlockState explodedBlockState; // Paper
 
     public BlockExplodeEvent(@NotNull final Block what, @NotNull final List<Block> blocks, final float yield) {
+        // Paper start
+        this(what, blocks, yield, null);
+    }
+    public BlockExplodeEvent(@NotNull final Block what, @NotNull final List<Block> blocks, final float yield, @org.jetbrains.annotations.Nullable org.bukkit.block.BlockState explodedBlockState) {
+        // Paper end
         super(what);
         this.blocks = blocks;
         this.yield = yield;
         this.cancel = false;
+        this.explodedBlockState = explodedBlockState; // Paper
     }
 
     @Override
@@ -34,6 +45,22 @@ public class BlockExplodeEvent extends BlockEvent implements Cancellable {
         this.cancel = cancel;
     }
 
+    // Paper start
+    /**
+     * Get a capture of the block that directly caused
+     * the explosion, like a bed or respawn anchor. This
+     * block state is not placed so {@link org.bukkit.block.BlockState#isPlaced}
+     * will be false.
+     * <p>
+     * Can be null if no block directly caused the explosion.
+     *
+     * @return the exploded block state or null if not applicable
+     */
+    public @org.jetbrains.annotations.Nullable org.bukkit.block.BlockState getExplodedBlockState() {
+        return this.explodedBlockState;
+    }
+    // Paper end
+
     /**
      * Returns the list of blocks that would have been removed or were removed
      * from the explosion event.