Class AbstractArrow

All Implemented Interfaces:
CommandSource, SyncedDataHolder, TraceableEntity, EntityAccess, Nameable, ScoreHolder, IAttachmentHolder, IEntityExtension, INBTSerializable<CompoundTag>
Direct Known Subclasses:
Arrow, SpectralArrow, ThrownTrident

public abstract class AbstractArrow extends Projectile
  • Field Details

    • ARROW_BASE_DAMAGE

      private static final double ARROW_BASE_DAMAGE
      See Also:
    • ID_FLAGS

      private static final EntityDataAccessor<Byte> ID_FLAGS
    • PIERCE_LEVEL

      private static final EntityDataAccessor<Byte> PIERCE_LEVEL
    • FLAG_CRIT

      private static final int FLAG_CRIT
      See Also:
    • FLAG_NOPHYSICS

      private static final int FLAG_NOPHYSICS
      See Also:
    • lastState

      @Nullable private BlockState lastState
    • inGround

      protected boolean inGround
    • inGroundTime

      protected int inGroundTime
    • pickup

      public AbstractArrow.Pickup pickup
    • shakeTime

      public int shakeTime
    • life

      private int life
    • baseDamage

      private double baseDamage
    • soundEvent

      private SoundEvent soundEvent
    • piercingIgnoreEntityIds

      @Nullable private it.unimi.dsi.fastutil.ints.IntOpenHashSet piercingIgnoreEntityIds
    • piercedAndKilledEntities

      @Nullable private List<Entity> piercedAndKilledEntities
    • pickupItemStack

      private ItemStack pickupItemStack
    • firedFromWeapon

      @Nullable private ItemStack firedFromWeapon
  • Constructor Details

  • Method Details

    • setSoundEvent

      public void setSoundEvent(SoundEvent pSoundEvent)
    • shouldRenderAtSqrDistance

      public boolean shouldRenderAtSqrDistance(double pDistance)
      Checks if the entity is in range to render.
      Overrides:
      shouldRenderAtSqrDistance in class Entity
    • defineSynchedData

      protected void defineSynchedData(SynchedEntityData.Builder pBuilder)
      Specified by:
      defineSynchedData in class Entity
    • shoot

      public void shoot(double pX, double pY, double pZ, float pVelocity, float pInaccuracy)
      Similar to setArrowHeading, it's point the throwable entity to a x, y, z direction.
      Overrides:
      shoot in class Projectile
    • lerpTo

      public void lerpTo(double pX, double pY, double pZ, float pYRot, float pXRot, int pSteps)
      Overrides:
      lerpTo in class Entity
    • lerpMotion

      public void lerpMotion(double pX, double pY, double pZ)
      Updates the entity motion clientside, called by packets from the server
      Overrides:
      lerpMotion in class Projectile
    • tick

      public void tick()
      Overrides:
      tick in class Projectile
    • getDefaultGravity

      protected double getDefaultGravity()
      Overrides:
      getDefaultGravity in class Entity
    • shouldFall

      private boolean shouldFall()
    • startFalling

      private void startFalling()
    • move

      public void move(MoverType pType, Vec3 pPos)
      Overrides:
      move in class Entity
    • tickDespawn

      protected void tickDespawn()
    • resetPiercedEntities

      private void resetPiercedEntities()
    • onHitEntity

      protected void onHitEntity(EntityHitResult pResult)
      Called when the arrow hits an entity
      Overrides:
      onHitEntity in class Projectile
    • doKnockback

      protected void doKnockback(LivingEntity pEntity, DamageSource pDamageSource)
    • onHitBlock

      protected void onHitBlock(BlockHitResult pResult)
      Overrides:
      onHitBlock in class Projectile
    • hitBlockEnchantmentEffects

      protected void hitBlockEnchantmentEffects(ServerLevel pLevel, BlockHitResult pHitResult, ItemStack pStack)
    • getWeaponItem

      public ItemStack getWeaponItem()
      Overrides:
      getWeaponItem in class Entity
    • getDefaultHitGroundSoundEvent

      protected SoundEvent getDefaultHitGroundSoundEvent()
    • getHitGroundSoundEvent

      protected final SoundEvent getHitGroundSoundEvent()
    • doPostHurtEffects

      protected void doPostHurtEffects(LivingEntity pTarget)
    • findHitEntity

      @Nullable protected EntityHitResult findHitEntity(Vec3 pStartVec, Vec3 pEndVec)
      Gets the EntityRayTraceResult representing the entity hit
    • canHitEntity

      protected boolean canHitEntity(Entity p_36743_)
      Overrides:
      canHitEntity in class Projectile
    • addAdditionalSaveData

      public void addAdditionalSaveData(CompoundTag pCompound)
      Overrides:
      addAdditionalSaveData in class Projectile
    • readAdditionalSaveData

      public void readAdditionalSaveData(CompoundTag pCompound)
      (abstract) Protected helper method to read subclass entity data from NBT.
      Overrides:
      readAdditionalSaveData in class Projectile
    • setOwner

      public void setOwner(@Nullable Entity pEntity)
      Overrides:
      setOwner in class Projectile
    • playerTouch

      public void playerTouch(Player pEntity)
      Called by a player entity when they collide with an entity
      Overrides:
      playerTouch in class Entity
    • tryPickup

      protected boolean tryPickup(Player pPlayer)
    • getPickupItem

      protected ItemStack getPickupItem()
    • getDefaultPickupItem

      protected abstract ItemStack getDefaultPickupItem()
    • getMovementEmission

      protected Entity.MovementEmission getMovementEmission()
      Overrides:
      getMovementEmission in class Entity
    • getPickupItemStackOrigin

      public ItemStack getPickupItemStackOrigin()
    • setBaseDamage

      public void setBaseDamage(double pBaseDamage)
    • getBaseDamage

      public double getBaseDamage()
    • isAttackable

      public boolean isAttackable()
      Overrides:
      isAttackable in class Entity
    • setCritArrow

      public void setCritArrow(boolean pCritArrow)
      Whether the arrow has a stream of critical hit particles flying behind it.
    • setPierceLevel

      private void setPierceLevel(byte pPierceLevel)
    • setFlag

      private void setFlag(int pId, boolean pValue)
    • setPickupItemStack

      protected void setPickupItemStack(ItemStack p_331486_)
    • isCritArrow

      public boolean isCritArrow()
    • shotFromCrossbow

      public boolean shotFromCrossbow()
    • getPierceLevel

      public byte getPierceLevel()
    • setBaseDamageFromMob

      public void setBaseDamageFromMob(float pVelocity)
    • getWaterInertia

      protected float getWaterInertia()
    • setNoPhysics

      public void setNoPhysics(boolean pNoPhysics)
      Sets if this arrow can noClip
    • isNoPhysics

      public boolean isNoPhysics()
    • isPickable

      public boolean isPickable()
      Overrides:
      isPickable in class Projectile
    • getSlot

      public SlotAccess getSlot(int pSlot)
      Overrides:
      getSlot in class Entity