aboutsummaryrefslogtreecommitdiffhomepage
path: root/patches/api/0224-Add-PlayerShearBlockEvent.patch
diff options
context:
space:
mode:
Diffstat (limited to 'patches/api/0224-Add-PlayerShearBlockEvent.patch')
-rw-r--r--patches/api/0224-Add-PlayerShearBlockEvent.patch125
1 files changed, 125 insertions, 0 deletions
diff --git a/patches/api/0224-Add-PlayerShearBlockEvent.patch b/patches/api/0224-Add-PlayerShearBlockEvent.patch
new file mode 100644
index 0000000000..1506924937
--- /dev/null
+++ b/patches/api/0224-Add-PlayerShearBlockEvent.patch
@@ -0,0 +1,125 @@
+From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
+From: JRoy <[email protected]>
+Date: Thu, 27 Aug 2020 12:32:35 -0400
+Subject: [PATCH] Add PlayerShearBlockEvent
+
+
+diff --git a/src/main/java/io/papermc/paper/event/block/PlayerShearBlockEvent.java b/src/main/java/io/papermc/paper/event/block/PlayerShearBlockEvent.java
+new file mode 100644
+index 0000000000000000000000000000000000000000..9bb4a79320eac7d662d9d04765664b6a7e955a4f
+--- /dev/null
++++ b/src/main/java/io/papermc/paper/event/block/PlayerShearBlockEvent.java
+@@ -0,0 +1,113 @@
++package io.papermc.paper.event.block;
++
++import org.bukkit.block.Block;
++import org.bukkit.entity.Player;
++import org.bukkit.event.Cancellable;
++import org.bukkit.event.HandlerList;
++import org.bukkit.event.player.PlayerEvent;
++import org.bukkit.inventory.EquipmentSlot;
++import org.bukkit.inventory.ItemStack;
++import org.jetbrains.annotations.ApiStatus;
++import org.jetbrains.annotations.NotNull;
++
++import java.util.List;
++
++/**
++ * Called when a player uses sheers on a block.
++ * <p>
++ * This event is <b>not</b> called when breaking blocks with shears but instead only when a
++ * player uses the sheer item on a block to garner drops from said block and/or change its state.
++ * <p>
++ * Examples include shearing a pumpkin to turn it into a carved pumpkin or shearing a beehive to get honeycomb.
++ */
++public class PlayerShearBlockEvent extends PlayerEvent implements Cancellable {
++
++ private static final HandlerList HANDLER_LIST = new HandlerList();
++
++ private final Block block;
++ private final ItemStack item;
++ private final EquipmentSlot hand;
++ private final List<ItemStack> drops;
++
++ private boolean cancelled;
++
++ @ApiStatus.Internal
++ public PlayerShearBlockEvent(@NotNull Player player, @NotNull Block block, @NotNull ItemStack item, @NotNull EquipmentSlot hand, @NotNull List<ItemStack> drops) {
++ super(player);
++ this.block = block;
++ this.item = item;
++ this.hand = hand;
++ this.drops = drops;
++ }
++
++ /**
++ * Gets the block being sheared in this event.
++ *
++ * @return The {@link Block} which block is being sheared in this event.
++ */
++ @NotNull
++ public Block getBlock() {
++ return this.block;
++ }
++
++ /**
++ * Gets the item used to shear the block.
++ *
++ * @return The {@link ItemStack} of the shears.
++ */
++ @NotNull
++ public ItemStack getItem() {
++ return this.item;
++ }
++
++ /**
++ * Gets the hand used to shear the block.
++ *
++ * @return Either {@link EquipmentSlot#HAND} OR {@link EquipmentSlot#OFF_HAND}.
++ */
++ @NotNull
++ public EquipmentSlot getHand() {
++ return this.hand;
++ }
++
++ /**
++ * Gets the resulting drops of this event.
++ *
++ * @return A {@link List list} of {@link ItemStack items} that will be dropped as result of this event.
++ */
++ @NotNull
++ public List<ItemStack> getDrops() {
++ return this.drops;
++ }
++
++ /**
++ * Gets whether the shearing of the block should be cancelled or not.
++ *
++ * @return Whether the shearing of the block should be cancelled or not.
++ */
++ @Override
++ public boolean isCancelled() {
++ return this.cancelled;
++ }
++
++ /**
++ * Sets whether the shearing of the block should be cancelled or not.
++ *
++ * @param cancel whether the shearing of the block should be cancelled or not.
++ */
++ @Override
++ public void setCancelled(boolean cancel) {
++ this.cancelled = cancel;
++ }
++
++ @NotNull
++ @Override
++ public HandlerList getHandlers() {
++ return HANDLER_LIST;
++ }
++
++ @NotNull
++ public static HandlerList getHandlerList() {
++ return HANDLER_LIST;
++ }
++}