Interface DamageSource


@Experimental public interface DamageSource
Represents a source of damage.
  • Method Details

    • getDamageType

      @NotNull DamageType getDamageType()
      Get the DamageType.
      Returns:
      the damage type
    • getCausingEntity

      @Nullable Entity getCausingEntity()
      Get the Entity that caused the damage to occur.

      Not to be confused with getDirectEntity(), the causing entity is the entity to which the damage is ultimately attributed if the receiver is killed. If, for example, the receiver was damaged by a projectile, the shooter/thrower would be returned.

      Returns:
      an Entity or null
    • getDirectEntity

      @Nullable Entity getDirectEntity()
      Get the Entity that directly caused the damage.

      Not to be confused with getCausingEntity(), the direct entity is the entity that actually inflicted the damage. If, for example, the receiver was damaged by a projectile, the projectile would be returned.

      Returns:
      an Entity or null
    • getDamageLocation

      @Nullable Location getDamageLocation()
      Get the Location from where the damage originated. This will only be present if an entity did not cause the damage.
      Returns:
      the location, or null if none
    • getSourceLocation

      @Nullable Location getSourceLocation()
      Get the Location from where the damage originated.

      This is a convenience method to get the final location of the damage. This method will attempt to return the damage location. If this is null, the causing entity location will be returned. Finally if there is no damage location nor a causing entity, null will be returned.

      Returns:
      the source of the location or null.
    • isIndirect

      boolean isIndirect()
      Get if this damage is indirect.

      Damage is considered indirect if getCausingEntity() is not equal to getDirectEntity(). This will be the case, for example, if a skeleton shot an arrow or a player threw a potion.

      Returns:
      true if is indirect, false otherwise.
    • getFoodExhaustion

      float getFoodExhaustion()
      Get the amount of hunger exhaustion caused by this damage.
      Returns:
      the amount of hunger exhaustion caused.
    • scalesWithDifficulty

      boolean scalesWithDifficulty()
      Gets if this source of damage scales with difficulty.
      Returns:
      True if scales.
    • builder

      @NotNull static DamageSource.Builder builder(@NotNull DamageType damageType)
      Create a new DamageSource.Builder.
      Parameters:
      damageType - the DamageType to use
      Returns:
      a DamageSource.Builder