Class LivingEntity

java.lang.Object
net.minestom.server.entity.Entity
net.minestom.server.entity.LivingEntity
All Implemented Interfaces:
Sound.Emitter, HoverEventSource<HoverEvent.ShowEntity>, Shape, EventHandler<EntityEvent>, EquipmentHandler, Snapshotable, Taggable, TagReadable, TagWritable, AcquirableSource<Entity>, Tickable, Schedulable, Viewable
Direct Known Subclasses:
EntityCreature, Player

public class LivingEntity extends Entity implements EquipmentHandler
  • Field Details

    • PROTECTED_MODIFIERS

      @Internal public static final Set<NamespaceID> PROTECTED_MODIFIERS
      IDs of modifiers that are protected from removal by methods like AttributeInstance.clearModifiers().
    • canPickupItem

      protected boolean canPickupItem
    • itemPickupCooldown

      protected Cooldown itemPickupCooldown
    • isDead

      protected boolean isDead
    • lastDamage

      protected Damage lastDamage
    • expandedBoundingBox

      protected BoundingBox expandedBoundingBox
    • invulnerable

      protected boolean invulnerable
  • Constructor Details

    • LivingEntity

      public LivingEntity(@NotNull @NotNull EntityType entityType, @NotNull @NotNull UUID uuid)
      Constructor which allows to specify an UUID. Only use if you know what you are doing!
    • LivingEntity

      public LivingEntity(@NotNull @NotNull EntityType entityType)
  • Method Details

    • setSprinting

      public void setSprinting(boolean sprinting)
      Description copied from class: Entity
      Makes the entity sprint.

      WARNING: this will not work on the client itself.

      Overrides:
      setSprinting in class Entity
      Parameters:
      sprinting - true to make the entity sprint
    • getEquipment

      @NotNull public @NotNull ItemStack getEquipment(@NotNull @NotNull EquipmentSlot slot)
      Description copied from interface: EquipmentHandler
      Gets the equipment in a specific slot.
      Specified by:
      getEquipment in interface EquipmentHandler
      Parameters:
      slot - the equipment to get the item from
      Returns:
      the equipment ItemStack
    • setEquipment

      public void setEquipment(@NotNull @NotNull EquipmentSlot slot, @NotNull @NotNull ItemStack itemStack)
      Specified by:
      setEquipment in interface EquipmentHandler
    • updateEquipmentAttributes

      @Internal public void updateEquipmentAttributes(@NotNull @NotNull ItemStack oldItemStack, @NotNull @NotNull ItemStack newItemStack, @NotNull @NotNull EquipmentSlot slot)
      Updates the current attributes of the living entity based on
      Parameters:
      oldItemStack - The ItemStack that has been removed, modifiers on this stack will be removed from the entity
      newItemStack - The ItemStack that has been added, modifiers on this stack will be added to the entity
      slot - The slot that changed, this will determine what modifiers are actually changed
    • update

      public void update(long time)
      Description copied from class: Entity
      Called each tick.
      Overrides:
      update in class Entity
      Parameters:
      time - time of the update in milliseconds
    • getArrowCount

      public int getArrowCount()
      Gets the amount of arrows in the entity.
      Returns:
      the arrow count
    • setArrowCount

      public void setArrowCount(int arrowCount)
      Changes the amount of arrow stuck in the entity.
      Parameters:
      arrowCount - the arrow count
    • isInvulnerable

      public boolean isInvulnerable()
      Gets if the entity is invulnerable.
      Returns:
      true if the entity is invulnerable
    • setInvulnerable

      public void setInvulnerable(boolean invulnerable)
      Makes the entity vulnerable or invulnerable.
      Parameters:
      invulnerable - should the entity be invulnerable
    • kill

      public void kill()
      Kills the entity, trigger the EntityDeathEvent event.
    • getFireTicks

      public int getFireTicks()
      Gets the amount of ticks this entity is on fire for.
      Returns:
      the remaining duration of fire in ticks, 0 if not on fire
    • setFireTicks

      public void setFireTicks(int ticks)
      Sets this entity on fire for the given ticks.
      Parameters:
      ticks - duration of fire in ticks
    • damage

      public boolean damage(@NotNull DynamicRegistry.Key<DamageType> type, float amount)
    • damage

      public boolean damage(@NotNull @NotNull Damage damage)
      Damages the entity by a value, the type of the damage also has to be specified.
      Parameters:
      damage - the damage to be applied
      Returns:
      true if damage has been applied, false if it didn't
    • isImmune

      public boolean isImmune(@NotNull DynamicRegistry.Key<DamageType> type)
      Is this entity immune to the given type of damage?
      Parameters:
      type - the type of damage
      Returns:
      true if this entity is immune to the given type of damage
    • getHealth

      public float getHealth()
      Gets the entity health.
      Returns:
      the entity health
    • setHealth

      public void setHealth(float health)
      Changes the entity health, kill it if health is <= 0 and is not dead yet.
      Parameters:
      health - the new entity health
    • getLastDamageSource

      @Nullable public @Nullable Damage getLastDamageSource()
      Gets the last damage source which damaged of this entity.
      Returns:
      the last damage source, null if not any
    • heal

      public void heal()
      Sets the heal of the entity as its max health.

      Retrieved from getAttributeValue(Attribute) with the attribute Attributes.MAX_HEALTH.

    • getAttribute

      @NotNull public @NotNull AttributeInstance getAttribute(@NotNull @NotNull Attribute attribute)
      Retrieves the attribute instance and its modifiers.
      Parameters:
      attribute - the attribute instance to get
      Returns:
      the attribute instance
    • getAttributes

      @NotNull public @NotNull @UnmodifiableView Collection<AttributeInstance> getAttributes()
      Retrieves all AttributeInstances on this entity.
      Returns:
      a collection of all attribute instances on this entity
    • onAttributeChanged

      protected void onAttributeChanged(@NotNull @NotNull AttributeInstance attributeInstance)
      Callback used when an attribute instance has been modified.
      Parameters:
      attributeInstance - the modified attribute instance
    • getAttributeValue

      public double getAttributeValue(@NotNull @NotNull Attribute attribute)
      Retrieves the attribute value.
      Parameters:
      attribute - the attribute value to get
      Returns:
      the attribute value
    • isDead

      public boolean isDead()
      Gets if the entity is dead or not.
      Returns:
      true if the entity is dead
    • canPickupItem

      public boolean canPickupItem()
      Gets if the entity is able to pickup items.
      Returns:
      true if the entity is able to pickup items
    • setCanPickupItem

      public void setCanPickupItem(boolean canPickupItem)
      When set to false, the entity will not be able to pick ItemEntity on the ground.
      Parameters:
      canPickupItem - can the entity pickup item
    • shouldSendAttributes

      protected boolean shouldSendAttributes()
      Check if this entity should send an EntityAttributesPacket. This is true for players and entities whose spawn type is LIVING, but false for others.
      Returns:
      true if this entity needs to send attributes, false otherwise
    • updateNewViewer

      public void updateNewViewer(@NotNull @NotNull Player player)
      Description copied from class: Entity
      Called when a new viewer must be shown. Method can be subject to deadlocking if the target's viewers are also accessed.
      Overrides:
      updateNewViewer in class Entity
      Parameters:
      player - the player to send the packets to
    • setBoundingBox

      public void setBoundingBox(BoundingBox boundingBox)
      Description copied from class: Entity
      Changes the internal entity standing bounding box. When the pose is not standing, a different bounding box may be used for collision.

      WARNING: this does not change the entity hit-box which is client-side.

      Overrides:
      setBoundingBox in class Entity
      Parameters:
      boundingBox - the new bounding box
    • swingMainHand

      public void swingMainHand()
      Sends a EntityAnimationPacket to swing the main hand (can be used for attack animation).
    • swingOffHand

      public void swingOffHand()
      Sends a EntityAnimationPacket to swing the off hand (can be used for attack animation).
    • swingMainHand

      @Internal public void swingMainHand(boolean fromClient)
      Sends a EntityAnimationPacket to swing the main hand (can be used for attack animation).
      Parameters:
      fromClient - if true, broadcast only to viewers
    • swingOffHand

      @Internal public void swingOffHand(boolean fromClient)
      Sends a EntityAnimationPacket to swing the off hand (can be used for attack animation).
      Parameters:
      fromClient - if true, broadcast only to viewers
    • refreshActiveHand

      public void refreshActiveHand(boolean isHandActive, boolean offHand, boolean riptideSpinAttack)
    • isFlyingWithElytra

      public boolean isFlyingWithElytra()
    • setFlyingWithElytra

      public void setFlyingWithElytra(boolean isFlying)
    • refreshIsDead

      protected void refreshIsDead(boolean isDead)
      Used to change the isDead internal field.
      Parameters:
      isDead - the new field value
    • getPropertiesPacket

      @NotNull protected @NotNull EntityAttributesPacket getPropertiesPacket()
      Gets an EntityAttributesPacket for this entity with all of its attributes values.
      Returns:
      an EntityAttributesPacket linked to this entity
    • setTeam

      public void setTeam(@Nullable @Nullable Team team)
      Changes the Team for the entity.
      Parameters:
      team - The new team
    • getTeam

      @Nullable public @Nullable Team getTeam()
      Gets the Team of the entity.
      Returns:
      the Team
    • getTargetBlockPosition

      @Nullable public @Nullable Point getTargetBlockPosition(int maxDistance)
      Gets the target (not-air) block position of the entity.
      Parameters:
      maxDistance - The max distance to scan before returning null
      Returns:
      The block position targeted by this entity, null if non are found
    • getLivingEntityMeta

      @Nullable public @Nullable LivingEntityMeta getLivingEntityMeta()
      Gets EntityMeta of this entity casted to LivingEntityMeta.
      Returns:
      null if meta of this entity does not inherit LivingEntityMeta, casted value otherwise.
    • takeKnockback

      public void takeKnockback(float strength, double x, double z)
      Applies knockback

      Note: The strength is reduced based on knockback resistance

      Overrides:
      takeKnockback in class Entity
      Parameters:
      strength - the strength of the knockback, 0.4 is the vanilla value for a bare hand hit
      x - knockback on x axle, for default knockback use the following formula
      sin(attacker.yaw * (pi/180))
      z - knockback on z axle, for default knockback use the following formula
      -cos(attacker.yaw * (pi/180))
    • acquirable

      @Experimental @NotNull public @NotNull Acquirable<? extends LivingEntity> acquirable()
      Description copied from interface: AcquirableSource
      Obtains an Acquirable. To safely perform operations on this object, the user must call Acquirable.sync(Consumer) or Acquirable.lock() (followed by a subsequent unlock) on the Acquirable instance.
      Specified by:
      acquirable in interface AcquirableSource<Entity>
      Overrides:
      acquirable in class Entity
      Returns:
      an Acquirable which can be used to synchronize access to this object