aboutsummaryrefslogtreecommitdiffhomepage
path: root/patches/api/0394-Add-exploded-block-state-to-EntityDamageByBlockEvent.patch
diff options
context:
space:
mode:
Diffstat (limited to 'patches/api/0394-Add-exploded-block-state-to-EntityDamageByBlockEvent.patch')
-rw-r--r--patches/api/0394-Add-exploded-block-state-to-EntityDamageByBlockEvent.patch83
1 files changed, 83 insertions, 0 deletions
diff --git a/patches/api/0394-Add-exploded-block-state-to-EntityDamageByBlockEvent.patch b/patches/api/0394-Add-exploded-block-state-to-EntityDamageByBlockEvent.patch
new file mode 100644
index 0000000000..88530a6a65
--- /dev/null
+++ b/patches/api/0394-Add-exploded-block-state-to-EntityDamageByBlockEvent.patch
@@ -0,0 +1,83 @@
+From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
+From: Jake Potrebic <[email protected]>
+Date: Fri, 22 Oct 2021 16:24:17 -0700
+Subject: [PATCH] Add exploded block state to EntityDamageByBlockEvent
+
+
+diff --git a/src/main/java/org/bukkit/event/block/BlockExplodeEvent.java b/src/main/java/org/bukkit/event/block/BlockExplodeEvent.java
+index 8309b030c2120f1496d244f3ebc1094def41c869..a7c297364805c58ae16895055d8eae0484384b7d 100644
+--- a/src/main/java/org/bukkit/event/block/BlockExplodeEvent.java
++++ b/src/main/java/org/bukkit/event/block/BlockExplodeEvent.java
+@@ -32,6 +32,7 @@ public class BlockExplodeEvent extends BlockEvent implements Cancellable {
+ this.cancel = false;
+ }
+
++ @io.papermc.paper.annotation.DoNotUse // Paper
+ @Deprecated(forRemoval = true)
+ public BlockExplodeEvent(@NotNull final Block what, @NotNull final List<Block> blocks, final float yield) {
+ this(what, what.getState(), blocks, yield);
+diff --git a/src/main/java/org/bukkit/event/entity/EntityDamageByBlockEvent.java b/src/main/java/org/bukkit/event/entity/EntityDamageByBlockEvent.java
+index 467a0d6cabc5e860628be3b1e62de773efde5d2e..1fb15e2ade8ff3c4d662eca87b078b4577f786e1 100644
+--- a/src/main/java/org/bukkit/event/entity/EntityDamageByBlockEvent.java
++++ b/src/main/java/org/bukkit/event/entity/EntityDamageByBlockEvent.java
+@@ -11,28 +11,35 @@ import org.jetbrains.annotations.Nullable;
+
+ /**
+ * Called when an entity is damaged by a block
++ * <p>
++ * For explosions, the Block returned by {@link #getDamager()} has
++ * already been cleared. See {@link #getDamagerBlockState()} for a snapshot
++ * of the block if it has already been changed.
+ */
+ public class EntityDamageByBlockEvent extends EntityDamageEvent {
+ private final Block damager;
++ private final org.bukkit.block.BlockState damagerBlockState; // Paper
+
+ @Deprecated(forRemoval = true)
+ public EntityDamageByBlockEvent(@Nullable final Block damager, @NotNull final Entity damagee, @NotNull final DamageCause cause, final double damage) {
+- this(damager, damagee, cause, (damager != null) ? DamageSource.builder(DamageType.GENERIC).withDamageLocation(damager.getLocation()).build() : DamageSource.builder(DamageType.GENERIC).build(), damage);
++ this(damager, damagee, cause, (damager != null) ? DamageSource.builder(DamageType.GENERIC).withDamageLocation(damager.getLocation()).build() : DamageSource.builder(DamageType.GENERIC).build(), damage, null); // Paper
+ }
+
+- public EntityDamageByBlockEvent(@Nullable final Block damager, @NotNull final Entity damagee, @NotNull final DamageCause cause, @NotNull final DamageSource damageSource, final double damage) {
++ public EntityDamageByBlockEvent(@Nullable final Block damager, @NotNull final Entity damagee, @NotNull final DamageCause cause, @NotNull final DamageSource damageSource, final double damage, final @Nullable org.bukkit.block.BlockState damagerBlockState) { // Paper
+ super(damagee, cause, damageSource, damage);
+ this.damager = damager;
++ this.damagerBlockState = damagerBlockState; // Paper
+ }
+
+ @Deprecated(forRemoval = true)
+ public EntityDamageByBlockEvent(@Nullable final Block damager, @NotNull final Entity damagee, @NotNull final DamageCause cause, @NotNull final Map<DamageModifier, Double> modifiers, @NotNull final Map<DamageModifier, ? extends Function<? super Double, Double>> modifierFunctions) {
+- this(damager, damagee, cause, (damager != null) ? DamageSource.builder(DamageType.GENERIC).withDamageLocation(damager.getLocation()).build() : DamageSource.builder(DamageType.GENERIC).build(), modifiers, modifierFunctions);
++ this(damager, damagee, cause, (damager != null) ? DamageSource.builder(DamageType.GENERIC).withDamageLocation(damager.getLocation()).build() : DamageSource.builder(DamageType.GENERIC).build(), modifiers, modifierFunctions, null); // Paper
+ }
+
+- public EntityDamageByBlockEvent(@Nullable final Block damager, @NotNull final Entity damagee, @NotNull final DamageCause cause, @NotNull final DamageSource damageSource, @NotNull final Map<DamageModifier, Double> modifiers, @NotNull final Map<DamageModifier, ? extends Function<? super Double, Double>> modifierFunctions) {
++ public EntityDamageByBlockEvent(@Nullable final Block damager, @NotNull final Entity damagee, @NotNull final DamageCause cause, @NotNull final DamageSource damageSource, @NotNull final Map<DamageModifier, Double> modifiers, @NotNull final Map<DamageModifier, ? extends Function<? super Double, Double>> modifierFunctions, final @Nullable org.bukkit.block.BlockState damagerBlockState) { // Paper
+ super(damagee, cause, damageSource, modifiers, modifierFunctions);
+ this.damager = damager;
++ this.damagerBlockState = damagerBlockState; // Paper
+ }
+
+ /**
+@@ -44,4 +51,20 @@ public class EntityDamageByBlockEvent extends EntityDamageEvent {
+ public Block getDamager() {
+ return damager;
+ }
++
++ // Paper start
++ /**
++ * Get a capture of the block that directly caused
++ * the damage, 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 the block wasn't changed before the event
++ *
++ * @return the damager block state or null if not applicable
++ */
++ public @Nullable org.bukkit.block.BlockState getDamagerBlockState() {
++ return this.damagerBlockState;
++ }
++ // Paper end
+ }