Expose clicked BlockFace during BlockDamageEvent

This commit is contained in:
aerulion 2023-08-21 04:36:07 +02:00
parent 3273a33a46
commit 3008a27f33

View file

@ -19,9 +19,20 @@ public class BlockDamageEvent extends BlockEvent implements Cancellable {
private boolean instaBreak; private boolean instaBreak;
private boolean cancel; private boolean cancel;
private final ItemStack itemstack; 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) { 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); super(block);
this.blockFace = blockFace;
// Paper end - expose blockface
this.instaBreak = instaBreak; this.instaBreak = instaBreak;
this.player = player; this.player = player;
this.itemstack = itemInHand; this.itemstack = itemInHand;
@ -67,6 +78,20 @@ public class BlockDamageEvent extends BlockEvent implements Cancellable {
public ItemStack getItemInHand() { public ItemStack getItemInHand() {
return itemstack; 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 @Override
public boolean isCancelled() { public boolean isCancelled() {