Interface AbstractArrow

All Superinterfaces:
Audience, CommandSender, Entity, HoverEventSource<HoverEvent.ShowEntity>, Metadatable, Nameable, Permissible, PersistentDataHolder, PersistentDataViewHolder, Pointered, Projectile, ServerOperator, Sound.Emitter
All Known Subinterfaces:
Arrow, SpectralArrow, TippedArrow, Trident

public interface AbstractArrow extends Projectile
Represents an arrow.
  • Method Details

    • getKnockbackStrength

      @Deprecated(since="1.21") int getKnockbackStrength()
      Deprecated.
      a function of the firing weapon
      Gets the knockback strength for an arrow, which is the KnockBack level of the bow that shot it.
      Returns:
      the knockback strength value
      See Also:
    • setKnockbackStrength

      @Deprecated(since="1.21") void setKnockbackStrength(int knockbackStrength)
      Deprecated.
      a function of the firing weapon
      Sets the knockback strength for an arrow.
      Parameters:
      knockbackStrength - the knockback strength value
      See Also:
    • getDamage

      double getDamage()
      Gets the base amount of damage this arrow will do. Defaults to 2.0 for a normal arrow with 0.5 * (1 + power level) added for arrows fired from enchanted bows.
      Returns:
      base damage amount
    • setDamage

      void setDamage(double damage)
      Sets the base amount of damage this arrow will do.
      Parameters:
      damage - new damage amount
    • getPierceLevel

      int getPierceLevel()
      Gets the number of times this arrow can pierce through an entity.
      Returns:
      pierce level
    • setPierceLevel

      void setPierceLevel(int pierceLevel)
      Sets the number of times this arrow can pierce through an entity. Must be between 0 and 127 times.
      Parameters:
      pierceLevel - new pierce level
    • isCritical

      boolean isCritical()
      Gets whether this arrow is critical.

      Critical arrows have increased damage and cause particle effects.

      Critical arrows generally occur when a player fully draws a bow before firing.

      Returns:
      true if it is critical
    • setCritical

      void setCritical(boolean critical)
      Sets whether or not this arrow should be critical.
      Parameters:
      critical - whether or not it should be critical
    • isInBlock

      boolean isInBlock()
      Gets whether this arrow is in a block or not.

      Arrows in a block are motionless and may be picked up by players.

      Returns:
      true if in a block
    • getAttachedBlock

      @Nullable @Nullable Block getAttachedBlock()
      Gets the block to which this arrow is attached.
      Returns:
      the attached block or null if not attached
    • getPickupStatus

      Gets the current pickup status of this arrow.
      Returns:
      the pickup status of this arrow.
    • setPickupStatus

      void setPickupStatus(@NotNull @NotNull AbstractArrow.PickupStatus status)
      Sets the current pickup status of this arrow.
      Parameters:
      status - new pickup status of this arrow.
    • isShotFromCrossbow

      boolean isShotFromCrossbow()
      Gets if this arrow was shot from a crossbow.
      Returns:
      if shot from a crossbow
    • setShotFromCrossbow

      @Deprecated(since="1.21") void setShotFromCrossbow(boolean shotFromCrossbow)
      Deprecated.
      a function of the firing weapon instead
      Sets if this arrow was shot from a crossbow.
      Parameters:
      shotFromCrossbow - if shot from a crossbow
      See Also:
    • getItem

      Deprecated, for removal: This API element is subject to removal in a future version.
      Gets the ItemStack which will be picked up from this arrow.
      Returns:
      The picked up ItemStack
    • setItem

      @Experimental @Deprecated(forRemoval=true, since="1.20.4") void setItem(@NotNull @NotNull ItemStack item)
      Deprecated, for removal: This API element is subject to removal in a future version.
      Sets the ItemStack which will be picked up from this arrow.
      Parameters:
      item - ItemStack set to be picked up
    • getWeapon

      Gets the ItemStack which fired this arrow.
      Returns:
      The firing ItemStack
    • setWeapon

      @Experimental void setWeapon(@NotNull @NotNull ItemStack item)
      Sets the ItemStack which fired this arrow.
      Parameters:
      item - The firing ItemStack
    • getPickupRule

      @Deprecated default AbstractArrow.PickupRule getPickupRule()
      Deprecated.
      Use getPickupStatus() as an upstream compatible replacement for this function
      Gets the AbstractArrow.PickupRule for this arrow.

      This is generally AbstractArrow.PickupRule.ALLOWED only if the arrow was not fired from a bow with the infinity enchantment.

      Returns:
      The pickup rule
    • setPickupRule

      @Deprecated default void setPickupRule(AbstractArrow.PickupRule rule)
      Deprecated.
      Use setPickupStatus(PickupStatus) with AbstractArrow.PickupStatus as an upstream compatible replacement for this function
      Set the rule for which players can pickup this arrow as an item.
      Parameters:
      rule - The pickup rule
    • getItemStack

      @NotNull @NotNull ItemStack getItemStack()
      Gets the ItemStack for this arrow. This stack is used for both visuals on the arrow and the stack that could be picked up.
      Returns:
      The ItemStack, as if a player picked up the arrow
    • setItemStack

      void setItemStack(@NotNull @NotNull ItemStack stack)
      Sets the ItemStack for this arrow. This stack is used for both visuals on the arrow and the stack that could be picked up.
      Parameters:
      stack - the arrow stack
    • setLifetimeTicks

      void setLifetimeTicks(int ticks)
      Sets the amount of ticks this arrow has been alive in the world This is used to determine when the arrow should be automatically despawned.
      Parameters:
      ticks - lifetime ticks
    • getLifetimeTicks

      int getLifetimeTicks()
      Gets how many ticks this arrow has been in the world for.
      Returns:
      ticks this arrow has been in the world
    • getHitSound

      @NotNull Sound getHitSound()
      Gets the sound that is played when this arrow hits an entity.
      Returns:
      sound that plays
    • setHitSound

      void setHitSound(@NotNull Sound sound)
      Sets the sound that is played when this arrow hits an entity.
      Parameters:
      sound - sound that is played
    • setShooter

      void setShooter(@Nullable ProjectileSource source, boolean resetPickupStatus)
      Set the shooter of this projectile.
      Parameters:
      source - the ProjectileSource that shot this projectile
      resetPickupStatus - whether the AbstractArrow.PickupStatus should be reset