From e1f18fe1a917eae7e7b1419f15d2fadaae115ac8 Mon Sep 17 00:00:00 2001 From: Reason <28310208+Reasonlesss@users.noreply.github.com> Date: Fri, 9 May 2025 18:43:10 +0100 Subject: [PATCH 1/7] Add getPickItem to Entity --- .../src/main/java/org/bukkit/entity/Entity.java | 12 ++++++++++++ .../org/bukkit/craftbukkit/entity/CraftEntity.java | 9 +++++++++ 2 files changed, 21 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 e99cacc078f6..8ad386aadd36 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.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,17 @@ final class Holder { */ public boolean eject(); + // Paper start - pick item result + /** + * Gets the {@link ItemStack} that would be returned when a + * player uses the pick block action on this entity. + * + * @return item stack result or null + */ + @Nullable + ItemStack getPickItem(); + // Paper end - pick item result + /** * 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 cfc926c97c7d..3afa6e44b9dc 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 @@ -43,6 +43,7 @@ import org.bukkit.craftbukkit.CraftSound; import org.bukkit.craftbukkit.CraftWorld; import org.bukkit.craftbukkit.block.CraftBlock; +import org.bukkit.craftbukkit.inventory.CraftItemStack; import org.bukkit.craftbukkit.persistence.CraftPersistentDataContainer; import org.bukkit.craftbukkit.persistence.CraftPersistentDataTypeRegistry; import org.bukkit.craftbukkit.util.CraftChatMessage; @@ -58,6 +59,7 @@ 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 +534,13 @@ public boolean eject() { return true; } + // Paper start - pick item result + @Override + public ItemStack getPickItem() { + return CraftItemStack.asCraftMirror(this.getHandle().getPickResult()); + } + // Paper end - pick item result + @Override public float getFallDistance() { return (float) this.getHandle().fallDistance; From 6001b22dc61affa0ab290b69c8ceddb1944b5c81 Mon Sep 17 00:00:00 2001 From: Reason <28310208+Reasonlesss@users.noreply.github.com> Date: Fri, 16 May 2025 01:45:48 +0100 Subject: [PATCH 2/7] Use a copy instead of a mirror --- paper-api/src/main/java/org/bukkit/entity/Entity.java | 1 - .../main/java/org/bukkit/craftbukkit/entity/CraftEntity.java | 3 ++- 2 files changed, 2 insertions(+), 2 deletions(-) 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 8ad386aadd36..9ff378e027d8 100644 --- a/paper-api/src/main/java/org/bukkit/entity/Entity.java +++ b/paper-api/src/main/java/org/bukkit/entity/Entity.java @@ -546,7 +546,6 @@ final class Holder { * * @return item stack result or null */ - @Nullable ItemStack getPickItem(); // Paper end - pick item result 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 3afa6e44b9dc..2000ca009964 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 @@ -537,7 +537,8 @@ public boolean eject() { // Paper start - pick item result @Override public ItemStack getPickItem() { - return CraftItemStack.asCraftMirror(this.getHandle().getPickResult()); + net.minecraft.world.item.ItemStack stack = this.getHandle().getPickResult(); + return stack == null ? ItemStack.empty() : stack.asBukkitCopy(); } // Paper end - pick item result From 59bf7bba7ccac70814005a8f83deb9caaf37fa88 Mon Sep 17 00:00:00 2001 From: Reason <28310208+Reasonlesss@users.noreply.github.com> Date: Fri, 16 May 2025 01:50:15 +0100 Subject: [PATCH 3/7] NotNull annotation --- paper-api/src/main/java/org/bukkit/entity/Entity.java | 1 + 1 file changed, 1 insertion(+) 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 9ff378e027d8..c998ad1db7a5 100644 --- a/paper-api/src/main/java/org/bukkit/entity/Entity.java +++ b/paper-api/src/main/java/org/bukkit/entity/Entity.java @@ -546,6 +546,7 @@ final class Holder { * * @return item stack result or null */ + @NotNull ItemStack getPickItem(); // Paper end - pick item result From bbfb91834007999c68e794d265b75245f8656839 Mon Sep 17 00:00:00 2001 From: Reason <28310208+Reasonlesss@users.noreply.github.com> Date: Fri, 16 May 2025 01:54:29 +0100 Subject: [PATCH 4/7] remove unused import --- .../src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java | 1 - 1 file changed, 1 deletion(-) 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 2000ca009964..878a58e9ecc8 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 @@ -43,7 +43,6 @@ import org.bukkit.craftbukkit.CraftSound; import org.bukkit.craftbukkit.CraftWorld; import org.bukkit.craftbukkit.block.CraftBlock; -import org.bukkit.craftbukkit.inventory.CraftItemStack; import org.bukkit.craftbukkit.persistence.CraftPersistentDataContainer; import org.bukkit.craftbukkit.persistence.CraftPersistentDataTypeRegistry; import org.bukkit.craftbukkit.util.CraftChatMessage; From 9119cbdadccdcba83014a6c24f215cda7b0b7c49 Mon Sep 17 00:00:00 2001 From: Reason <28310208+Reasonlesss@users.noreply.github.com> Date: Fri, 16 May 2025 03:58:30 +0100 Subject: [PATCH 5/7] remove paper comments --- paper-api/src/main/java/org/bukkit/entity/Entity.java | 2 -- .../main/java/org/bukkit/craftbukkit/entity/CraftEntity.java | 2 -- 2 files changed, 4 deletions(-) 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 c998ad1db7a5..c2aaa7bdfda5 100644 --- a/paper-api/src/main/java/org/bukkit/entity/Entity.java +++ b/paper-api/src/main/java/org/bukkit/entity/Entity.java @@ -539,7 +539,6 @@ final class Holder { */ public boolean eject(); - // Paper start - pick item result /** * Gets the {@link ItemStack} that would be returned when a * player uses the pick block action on this entity. @@ -548,7 +547,6 @@ final class Holder { */ @NotNull ItemStack getPickItem(); - // Paper end - pick item result /** * 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 878a58e9ecc8..c9b7d80ce1d5 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 @@ -533,13 +533,11 @@ public boolean eject() { return true; } - // Paper start - pick item result @Override public ItemStack getPickItem() { net.minecraft.world.item.ItemStack stack = this.getHandle().getPickResult(); return stack == null ? ItemStack.empty() : stack.asBukkitCopy(); } - // Paper end - pick item result @Override public float getFallDistance() { From 7a2bb34ba78f3e1b2b4bca78d0028741dea00c0b Mon Sep 17 00:00:00 2001 From: Reason <28310208+Reasonlesss@users.noreply.github.com> Date: Fri, 16 May 2025 20:15:57 +0100 Subject: [PATCH 6/7] correct javadoc --- paper-api/src/main/java/org/bukkit/entity/Entity.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 c2aaa7bdfda5..61d852c5252f 100644 --- a/paper-api/src/main/java/org/bukkit/entity/Entity.java +++ b/paper-api/src/main/java/org/bukkit/entity/Entity.java @@ -543,7 +543,7 @@ final class Holder { * Gets the {@link ItemStack} that would be returned when a * player uses the pick block action on this entity. * - * @return item stack result or null + * @return item stack result or an empty item stack */ @NotNull ItemStack getPickItem(); From 5f236080f0793999ca3f6144ebf5734fdbcd2387 Mon Sep 17 00:00:00 2001 From: Bjarne Koll Date: Sun, 18 May 2025 20:06:10 +0200 Subject: [PATCH 7/7] Rename to itemstack --- paper-api/src/main/java/org/bukkit/entity/Entity.java | 6 +++--- .../java/org/bukkit/craftbukkit/entity/CraftEntity.java | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) 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 61d852c5252f..66a31c5d83b7 100644 --- a/paper-api/src/main/java/org/bukkit/entity/Entity.java +++ b/paper-api/src/main/java/org/bukkit/entity/Entity.java @@ -540,13 +540,13 @@ final class Holder { public boolean eject(); /** - * Gets the {@link ItemStack} that would be returned when a - * player uses the pick block action on this entity. + * 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 getPickItem(); + 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 c9b7d80ce1d5..3b41a37f852c 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 @@ -534,7 +534,7 @@ public boolean eject() { } @Override - public ItemStack getPickItem() { + public ItemStack getPickItemStack() { net.minecraft.world.item.ItemStack stack = this.getHandle().getPickResult(); return stack == null ? ItemStack.empty() : stack.asBukkitCopy(); }