Class Damage

java.lang.Object
net.minestom.server.entity.damage.Damage
All Implemented Interfaces:
Taggable, TagReadable, TagWritable
Direct Known Subclasses:
EntityDamage, EntityProjectileDamage, PositionalDamage

public class Damage extends Object implements Taggable
Represents a type of damage, required when calling LivingEntity.damage(Damage) and retrieved in EntityDamageEvent.

This class can be extended if you need to include custom fields and/or methods.

  • Constructor Details

    • Damage

      public Damage(@NotNull DynamicRegistry.Key<DamageType> type, @Nullable @Nullable Entity source, @Nullable @Nullable Entity attacker, @Nullable @Nullable Point sourcePosition, float amount)
      Creates a new damage type.
      Parameters:
      type - the type of this damage
      source - The source of the damage. For direct hits (melee), this will be the same as the attacker. For indirect hits (projectiles), this will be the projectile
      attacker - The attacker that initiated this damage
      sourcePosition - The position of the source of damage
      amount - amount of damage
  • Method Details

    • getType

      @NotNull public DynamicRegistry.Key<DamageType> getType()
      Gets the type of this damage.

      It does not have to be unique to this object.

      Returns:
      the damage type
    • getTypeId

      public int getTypeId()
      Gets the integer id of the damage type that has been set
      Returns:
      The integer id of the damage type
    • getAttacker

      @Nullable public @Nullable Entity getAttacker()
      Gets the "attacker" of the damage. This is the indirect cause of the damage, like the shooter of a projectile, or null if there was none.
      Returns:
      the attacker
    • getSource

      @Nullable public @Nullable Entity getSource()
      Gets the direct source of the damage. This is the entity that directly causes the damage, like a projectile, or null if there was none.
      Returns:
      the source
    • getSourcePosition

      @Nullable public @Nullable Point getSourcePosition()
      Gets the position of the source of the damage, or null if there is none. This may differ from the source entity's position.
      Returns:
      The source position
    • buildDeathMessage

      @Nullable public @Nullable Component buildDeathMessage(@NotNull @NotNull Player killed)
      Builds the death message linked to this damage type.

      Used in Player.kill() to broadcast the proper message.

      Parameters:
      killed - the player who has been killed
      Returns:
      the death message, null to do not send anything
    • fromProjectile

      @NotNull public static @NotNull Damage fromProjectile(@Nullable @Nullable Entity shooter, @NotNull @NotNull Entity projectile, float amount)
      Convenient method to create an EntityProjectileDamage.
      Parameters:
      shooter - the shooter
      projectile - the actual projectile
      amount - amount of damage
      Returns:
      a new EntityProjectileDamage
    • fromPlayer

      @NotNull public static @NotNull EntityDamage fromPlayer(@NotNull @NotNull Player player, float amount)
      Convenient method to create an EntityDamage.
      Parameters:
      player - the player damager
      amount - amount of damage
      Returns:
      a new EntityDamage
    • fromEntity

      @NotNull public static @NotNull EntityDamage fromEntity(@NotNull @NotNull Entity entity, float amount)
      Convenient method to create an EntityDamage.
      Parameters:
      entity - the entity damager
      amount - amount of damage
      Returns:
      a new EntityDamage
    • fromPosition

      @NotNull public static @NotNull PositionalDamage fromPosition(@NotNull DynamicRegistry.Key<DamageType> type, @NotNull @NotNull Point sourcePosition, float amount)
    • buildDeathScreenText

      @Nullable public @Nullable Component buildDeathScreenText(@NotNull @NotNull Player killed)
      Builds the text sent to a player in his death screen.
      Parameters:
      killed - the player who has been killed
      Returns:
      the death screen text, null to do not send anything
    • getSound

      @Nullable public @Nullable SoundEvent getSound(@NotNull @NotNull LivingEntity entity)
      Sound event to play when the given entity is hit by this damage. Possible to return null if no sound should be played
      Parameters:
      entity - the entity hit by this damage
      Returns:
      the sound to play when the given entity is hurt by this damage type. Can be null if no sound should play
    • getGenericSound

      protected SoundEvent getGenericSound(@NotNull @NotNull LivingEntity entity)
    • getPlayerSound

      protected SoundEvent getPlayerSound(@NotNull @NotNull Player player)
    • tagHandler

      @NotNull public @NotNull TagHandler tagHandler()
      Specified by:
      tagHandler in interface Taggable
    • getAmount

      public float getAmount()
    • setAmount

      public void setAmount(float amount)