geforkt von Mirrors/Paper
e105354330
Also fixes EntityBreakDoorEvent not having the correct 'to' block data Also standardizes how to handle EntityChangeBlockEvent before a removeBlock or destroyBlock call. Always use 'state.getFluidState().createLegacyBlock()' to get the new state instead of just using the 'air' state.
64 Zeilen
2.7 KiB
Diff
64 Zeilen
2.7 KiB
Diff
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.
|