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;