diff --git a/paper-api/src/main/java/org/bukkit/event/Event.java b/paper-api/src/main/java/org/bukkit/event/Event.java index 4380734689..0db9179757 100644 --- a/paper-api/src/main/java/org/bukkit/event/Event.java +++ b/paper-api/src/main/java/org/bukkit/event/Event.java @@ -213,6 +213,13 @@ public abstract class Event { */ PLAYER_ITEM_HELD (Category.PLAYER), + /** + * Called when a player drops an item + * + * @see org.bukkit.event.player.PlayerDropItemEvent + */ + PLAYER_DROP_ITEM (Category.PLAYER), + /** * BLOCK EVENTS */ diff --git a/paper-api/src/main/java/org/bukkit/event/player/PlayerDropItemEvent.java b/paper-api/src/main/java/org/bukkit/event/player/PlayerDropItemEvent.java new file mode 100644 index 0000000000..0980c2c383 --- /dev/null +++ b/paper-api/src/main/java/org/bukkit/event/player/PlayerDropItemEvent.java @@ -0,0 +1,48 @@ + +package org.bukkit.event.player; + +import org.bukkit.entity.ItemDrop; +import org.bukkit.entity.Player; +import org.bukkit.event.Cancellable; + +/** + * Thrown when a player drops an item from their inventory + */ +public class PlayerDropItemEvent extends PlayerEvent implements Cancellable { + private final ItemDrop drop; + private boolean cancel = false; + + public PlayerDropItemEvent(final Type type, final Player player, final ItemDrop drop) { + super(type, player); + this.drop = drop; + } + + /** + * Gets the ItemDrop created by the player + * + * @return ItemDrop + */ + public ItemDrop getItemDrop() { + return drop; + } + + /** + * Gets the cancellation state of this event. A cancelled event will not + * be executed in the server, but will still pass to other plugins + * + * @return true if this event is cancelled + */ + public boolean isCancelled() { + return cancel; + } + + /** + * Sets the cancellation state of this event. A cancelled event will not + * be executed in the server, but will still pass to other plugins + * + * @param cancel true if you wish to cancel this event + */ + public void setCancelled(boolean cancel) { + this.cancel = cancel; + } +} diff --git a/paper-api/src/main/java/org/bukkit/event/player/PlayerListener.java b/paper-api/src/main/java/org/bukkit/event/player/PlayerListener.java index 3ab8d0374f..8905d7d11c 100644 --- a/paper-api/src/main/java/org/bukkit/event/player/PlayerListener.java +++ b/paper-api/src/main/java/org/bukkit/event/player/PlayerListener.java @@ -105,4 +105,12 @@ public class PlayerListener implements Listener { */ public void onItemHeldChange(PlayerItemHeldEvent event) { } + + /** + * Called when a player drops an item from their inventory + * + * @param event Relevant event details + */ + public void onPlayerDropItem(PlayerDropItemEvent event) { + } } diff --git a/paper-api/src/main/java/org/bukkit/plugin/java/JavaPluginLoader.java b/paper-api/src/main/java/org/bukkit/plugin/java/JavaPluginLoader.java index 8dc65d3ca3..064739b1e4 100644 --- a/paper-api/src/main/java/org/bukkit/plugin/java/JavaPluginLoader.java +++ b/paper-api/src/main/java/org/bukkit/plugin/java/JavaPluginLoader.java @@ -178,6 +178,11 @@ public final class JavaPluginLoader implements PluginLoader { ((PlayerListener)listener).onItemHeldChange( (PlayerItemHeldEvent)event ); } }; + case PLAYER_DROP_ITEM: + return new EventExecutor() { public void execute( Listener listener, Event event ) { + ((PlayerListener)listener).onPlayerDropItem( (PlayerDropItemEvent)event ); + } + }; // Block Events case BLOCK_PHYSICS: