Interface AbstractArrow

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

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

    • getKnockbackStrength

      int getKnockbackStrength()
      Gets the knockback strength for an arrow, which is the KnockBack level of the bow that shot it.
      Returns:
      the knockback strength value
    • setKnockbackStrength

      void setKnockbackStrength(int knockbackStrength)
      Sets the knockback strength for an arrow.
      Parameters:
      knockbackStrength - the knockback strength value
    • 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

      void setShotFromCrossbow(boolean shotFromCrossbow)
      Sets if this arrow was shot from a crossbow.
      Parameters:
      shotFromCrossbow - if shot from a crossbow
    • 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

      Deprecated.
      until 1.20.5 when the behavior is more defined
      Sets the ItemStack which will be picked up from this arrow.
      Parameters:
      item - ItemStack set to be picked up
    • 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 ItemStack getItemStack()
      Gets the ItemStack for this arrow.
      Returns:
      The ItemStack, as if a player picked up the arrow
    • 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