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..903e742894be 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 + */ + @NotNull + 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..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 @@ -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 @NotNull ItemStack getWeaponItem() { + net.minecraft.world.item.ItemStack stack = this.getHandle().getWeaponItem(); + return stack == null ? ItemStack.empty() : stack.asBukkitCopy(); + } + @Override public UUID getUniqueId() { return this.entity.getUUID();