From b11528fbf56710423c4d3e25c2db80cfc0d8e5fa Mon Sep 17 00:00:00 2001 From: JustAHuman-xD Date: Thu, 11 Jun 2026 16:23:35 -0500 Subject: [PATCH 1/2] add Entity#getWeaponItem --- .../src/main/java/org/bukkit/entity/Entity.java | 12 ++++++++++++ .../org/bukkit/craftbukkit/entity/CraftEntity.java | 7 +++++++ 2 files changed, 19 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 2c68aae864a7..7f8c1b0e9303 100644 --- a/paper-api/src/main/java/org/bukkit/entity/Entity.java +++ b/paper-api/src/main/java/org/bukkit/entity/Entity.java @@ -643,6 +643,18 @@ final class Holder { @Nullable public EntityDamageEvent getLastDamageCause(); + /** + * Gets the item being used as a weapon by this entity. + *

+ * Note: In most cases this is the item in the entity's main hand, but + * it may be the offhand if for ex: the entity is using the riptide + * enchantment on a trident. + * + * @return The weapon item + */ + @Nullable + ItemStack getWeaponItem(); + /** * Returns a unique and persistent id for this entity * 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 2f40476da09c..bea76f6b8a32 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 @@ -51,6 +51,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; @@ -567,6 +568,12 @@ public EntityDamageEvent getLastDamageCause() { return this.lastDamageEvent; } + @Override + public @Nullable ItemStack getWeaponItem() { + net.minecraft.world.item.ItemStack stack = this.getHandle().getWeaponItem(); + return stack == null || stack.isEmpty() ? null : stack.asBukkitMirror(); + } + @Override public UUID getUniqueId() { return this.entity.getUUID(); From 0d42cdd9390e9e4947495e38b519534cc95a778f Mon Sep 17 00:00:00 2001 From: JustAHuman-xD Date: Sat, 13 Jun 2026 14:00:01 -0500 Subject: [PATCH 2/2] notnull, copy not mirror --- paper-api/src/main/java/org/bukkit/entity/Entity.java | 2 +- .../main/java/org/bukkit/craftbukkit/entity/CraftEntity.java | 4 ++-- 2 files changed, 3 insertions(+), 3 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 7f8c1b0e9303..903e742894be 100644 --- a/paper-api/src/main/java/org/bukkit/entity/Entity.java +++ b/paper-api/src/main/java/org/bukkit/entity/Entity.java @@ -652,7 +652,7 @@ final class Holder { * * @return The weapon item */ - @Nullable + @NotNull ItemStack getWeaponItem(); /** 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 bea76f6b8a32..174e99943a3c 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 @@ -569,9 +569,9 @@ public EntityDamageEvent getLastDamageCause() { } @Override - public @Nullable ItemStack getWeaponItem() { + public @NotNull ItemStack getWeaponItem() { net.minecraft.world.item.ItemStack stack = this.getHandle().getWeaponItem(); - return stack == null || stack.isEmpty() ? null : stack.asBukkitMirror(); + return stack == null ? ItemStack.empty() : stack.asBukkitCopy(); } @Override