From 6f73e62ecdee4e0e2bf0bee138a36afc404401b5 Mon Sep 17 00:00:00 2001
From: Reason <28310208+Reasonlesss@users.noreply.github.com>
Date: Sun, 18 May 2025 19:42:14 +0100
Subject: [PATCH] Add getPickItemStack (#12552)

---
 paper-api/src/main/java/org/bukkit/entity/Entity.java  | 10 ++++++++++
 .../org/bukkit/craftbukkit/entity/CraftEntity.java     |  7 +++++++
 2 files changed, 17 insertions(+)

diff --git a/paper-api/src/main/java/org/bukkit/entity/Entity.java b/paper-api/src/main/java/org/bukkit/entity/Entity.java
index e99cacc078..66a31c5d83 100644
--- a/paper-api/src/main/java/org/bukkit/entity/Entity.java
+++ b/paper-api/src/main/java/org/bukkit/entity/Entity.java
@@ -20,6 +20,7 @@ import org.bukkit.command.CommandSender;
 import org.bukkit.event.entity.CreatureSpawnEvent;
 import org.bukkit.event.entity.EntityDamageEvent;
 import org.bukkit.event.player.PlayerTeleportEvent.TeleportCause;
+import org.bukkit.inventory.ItemStack;
 import org.bukkit.material.Directional;
 import org.bukkit.metadata.Metadatable;
 import org.bukkit.persistence.PersistentDataHolder;
@@ -538,6 +539,15 @@ public interface Entity extends Metadatable, CommandSender, Nameable, Persistent
      */
     public boolean eject();
 
+    /**
+     * Gets the {@link ItemStack} that a player would select / create (in creative mode)
+     * when using the pick block action on this entity.
+     *
+     * @return item stack result or an empty item stack
+     */
+    @NotNull
+    ItemStack getPickItemStack();
+
     /**
      * Returns the distance this entity has fallen
      *
diff --git a/paper-server/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java b/paper-server/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java
index cfc926c97c..3b41a37f85 100644
--- a/paper-server/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java
+++ b/paper-server/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java
@@ -58,6 +58,7 @@ import org.bukkit.event.entity.CreatureSpawnEvent;
 import org.bukkit.event.entity.EntityDamageEvent;
 import org.bukkit.event.entity.EntityRemoveEvent;
 import org.bukkit.event.player.PlayerTeleportEvent.TeleportCause;
+import org.bukkit.inventory.ItemStack;
 import org.bukkit.metadata.MetadataValue;
 import org.bukkit.permissions.PermissibleBase;
 import org.bukkit.permissions.Permission;
@@ -532,6 +533,12 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity {
         return true;
     }
 
+    @Override
+    public ItemStack getPickItemStack() {
+        net.minecraft.world.item.ItemStack stack = this.getHandle().getPickResult();
+        return stack == null ? ItemStack.empty() : stack.asBukkitCopy();
+    }
+
     @Override
     public float getFallDistance() {
         return (float) this.getHandle().fallDistance;