Class Projectile

All Implemented Interfaces:
DataComponentGetter, TypedInstance<EntityType<?>>, SyncedDataHolder, DebugValueSource, ItemOwner, SlotProvider, TraceableEntity, EntityAccess, UniquelyIdentifyable, Nameable, ScoreHolder, IAttachmentHolder, IEntityExtension
Direct Known Subclasses:
AbstractArrow, AbstractHurtingProjectile, FireworkRocketEntity, FishingHook, LlamaSpit, ShulkerBullet, ThrowableProjectile

public abstract class Projectile extends Entity implements TraceableEntity
  • Field Details

    • DEFAULT_LEFT_OWNER

      private static final boolean DEFAULT_LEFT_OWNER
      See Also:
    • DEFAULT_HAS_BEEN_SHOT

      private static final boolean DEFAULT_HAS_BEEN_SHOT
      See Also:
    • owner

      protected @Nullable EntityReference<Entity> owner
    • leftOwner

      private boolean leftOwner
    • leftOwnerChecked

      private boolean leftOwnerChecked
    • hasBeenShot

      private boolean hasBeenShot
    • lastDeflectedBy

      private @Nullable Entity lastDeflectedBy
  • Constructor Details

  • Method Details

    • setOwner

      protected void setOwner(@Nullable EntityReference<Entity> owner)
    • setOwner

      public void setOwner(@Nullable Entity owner)
    • getOwner

      public @Nullable Entity getOwner()
      Specified by:
      getOwner in interface TraceableEntity
    • getEffectSource

      public Entity getEffectSource()
    • addAdditionalSaveData

      protected void addAdditionalSaveData(ValueOutput output)
      Specified by:
      addAdditionalSaveData in class Entity
    • ownedBy

      protected boolean ownedBy(Entity entity)
    • readAdditionalSaveData

      protected void readAdditionalSaveData(ValueInput input)
      Specified by:
      readAdditionalSaveData in class Entity
    • restoreFrom

      public void restoreFrom(Entity oldEntity)
      Overrides:
      restoreFrom in class Entity
    • tick

      public void tick()
      Overrides:
      tick in class Entity
    • checkLeftOwner

      protected void checkLeftOwner()
    • isOutsideOwnerCollisionRange

      private boolean isOutsideOwnerCollisionRange()
    • getMovementToShoot

      public Vec3 getMovementToShoot(double xd, double yd, double zd, float pow, float uncertainty)
    • shoot

      public void shoot(double xd, double yd, double zd, float pow, float uncertainty)
    • shootFromRotation

      public void shootFromRotation(Entity source, float xRot, float yRot, float yOffset, float pow, float uncertainty)
    • onAboveBubbleColumn

      public void onAboveBubbleColumn(boolean dragDown, BlockPos pos)
      Overrides:
      onAboveBubbleColumn in class Entity
    • onInsideBubbleColumn

      public void onInsideBubbleColumn(boolean dragDown)
      Overrides:
      onInsideBubbleColumn in class Entity
    • spawnProjectileFromRotation

      public static <T extends Projectile> T spawnProjectileFromRotation(Projectile.ProjectileFactory<T> creator, ServerLevel serverLevel, ItemStack itemStack, LivingEntity source, float yOffset, float pow, float uncertainty)
    • spawnProjectileUsingShoot

      public static <T extends Projectile> T spawnProjectileUsingShoot(Projectile.ProjectileFactory<T> creator, ServerLevel serverLevel, ItemStack itemStack, LivingEntity source, double targetX, double targetY, double targetZ, float pow, float uncertainty)
    • spawnProjectileUsingShoot

      public static <T extends Projectile> T spawnProjectileUsingShoot(T projectile, ServerLevel serverLevel, ItemStack itemStack, double targetX, double targetY, double targetZ, float pow, float uncertainty)
    • spawnProjectile

      public static <T extends Projectile> T spawnProjectile(T projectile, ServerLevel serverLevel, ItemStack itemStack)
    • spawnProjectile

      public static <T extends Projectile> T spawnProjectile(T projectile, ServerLevel serverLevel, ItemStack itemStack, Consumer<T> shootFunction)
    • applyOnProjectileSpawned

      public void applyOnProjectileSpawned(ServerLevel serverLevel, ItemStack pickupItemStack)
    • hitTargetOrDeflectSelf

      protected ProjectileDeflection hitTargetOrDeflectSelf(HitResult hitResult)
    • shouldBounceOnWorldBorder

      protected boolean shouldBounceOnWorldBorder()
    • deflect

      public boolean deflect(ProjectileDeflection deflection, @Nullable Entity deflectingEntity, @Nullable EntityReference<Entity> newOwner, boolean byAttack)
    • onDeflection

      protected void onDeflection(boolean byAttack)
    • onItemBreak

      protected void onItemBreak(Item item)
    • onHit

      protected void onHit(HitResult hitResult)
    • onHitEntity

      protected void onHitEntity(EntityHitResult hitResult)
    • onHitBlock

      protected void onHitBlock(BlockHitResult hitResult)
    • canHitEntity

      protected boolean canHitEntity(Entity entity)
    • updateRotation

      protected void updateRotation()
    • lerpRotation

      protected static float lerpRotation(float rotO, float rot)
    • getAddEntityPacket

      public Packet<ClientGamePacketListener> getAddEntityPacket(ServerEntity serverEntity)
      Overrides:
      getAddEntityPacket in class Entity
    • recreateFromPacket

      public void recreateFromPacket(ClientboundAddEntityPacket packet)
      Overrides:
      recreateFromPacket in class Entity
    • mayInteract

      public boolean mayInteract(ServerLevel level, BlockPos pos)
      Overrides:
      mayInteract in class Entity
    • mayBreak

      public boolean mayBreak(ServerLevel level)
    • isPickable

      public boolean isPickable()
      Overrides:
      isPickable in class Entity
    • getPickRadius

      public float getPickRadius()
      Overrides:
      getPickRadius in class Entity
    • calculateHorizontalHurtKnockbackDirection

      public it.unimi.dsi.fastutil.doubles.DoubleDoubleImmutablePair calculateHorizontalHurtKnockbackDirection(LivingEntity hurtEntity, DamageSource damageSource)
    • getDimensionChangingDelay

      public int getDimensionChangingDelay()
      Overrides:
      getDimensionChangingDelay in class Entity
    • hurtServer

      public boolean hurtServer(ServerLevel level, DamageSource source, float damage)
      Specified by:
      hurtServer in class Entity