From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Jake Potrebic 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 44f7f6939a27b9a0a796d91eac4b7c97ec90a643..2474628851c35fe8500d4d113aaafda6ce087313 100644 --- a/src/main/java/org/bukkit/event/block/BlockExplodeEvent.java +++ b/src/main/java/org/bukkit/event/block/BlockExplodeEvent.java @@ -8,18 +8,29 @@ import org.jetbrains.annotations.NotNull; /** * Called when a block explodes + *

+ * 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 blocks; private float yield; + private final org.bukkit.block.BlockState explodedBlockState; // Paper public BlockExplodeEvent(@NotNull final Block what, @NotNull final List blocks, final float yield) { + // Paper start + this(what, blocks, yield, null); + } + public BlockExplodeEvent(@NotNull final Block what, @NotNull final List 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 @@ -32,6 +43,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. + *

+ * 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.