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 e24744cc523f..4b381747690e 100644 --- a/paper-api/src/main/java/org/bukkit/entity/Entity.java +++ b/paper-api/src/main/java/org/bukkit/entity/Entity.java @@ -646,6 +646,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 e45f9514e4b5..fae4763bdd7e 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 @@ -565,6 +565,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();