Package net.minestom.server.entity
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
-
Field Summary
Modifier and TypeFieldDescriptionprotected boolean
protected BoundingBox
protected boolean
protected boolean
protected Cooldown
protected Damage
static final Set
<NamespaceID> IDs of modifiers that are protected from removal by methods likeAttributeInstance.clearModifiers()
.Fields inherited from class net.minestom.server.entity.Entity
boundingBox, collidesWithEntities, currentChunk, entityMeta, entityType, gravityTickCount, hasPhysics, instance, lastSyncedPosition, lastVelocityWasZero, metadata, onGround, position, preventBlockPlacement, previousPosition, removed, trackingUpdate, vehicle, velocity, viewEngine, viewers
-
Constructor Summary
ConstructorDescriptionLivingEntity
(@NotNull EntityType entityType) LivingEntity
(@NotNull EntityType entityType, @NotNull UUID uuid) Constructor which allows to specify an UUID. -
Method Summary
Modifier and TypeMethodDescription@NotNull Acquirable
<? extends LivingEntity> Obtains anAcquirable
.boolean
Gets if the entity is able to pickup items.boolean
Damages the entity by a value, the type of the damage also has to be specified.boolean
damage
(DynamicRegistry.Key<DamageType> type, float amount) int
Gets the amount of arrows in the entity.@NotNull AttributeInstance
getAttribute
(@NotNull Attribute attribute) Retrieves the attribute instance and its modifiers.@NotNull @UnmodifiableView Collection
<AttributeInstance> Retrieves allAttributeInstance
s on this entity.double
getAttributeValue
(@NotNull Attribute attribute) Retrieves the attribute value.@NotNull ItemStack
getEquipment
(@NotNull EquipmentSlot slot) Gets the equipment in a specific slot.int
Gets the amount of ticks this entity is on fire for.float
Gets the entity health.@Nullable Damage
Gets the last damage source which damaged of this entity.@Nullable LivingEntityMeta
GetsEntityMeta
of this entity casted toLivingEntityMeta
.protected @NotNull EntityAttributesPacket
Gets anEntityAttributesPacket
for this entity with all of its attributes values.@Nullable Point
getTargetBlockPosition
(int maxDistance) Gets the target (not-air) block position of the entity.@Nullable Team
getTeam()
Gets theTeam
of the entity.void
heal()
Sets the heal of the entity as its max health.boolean
isDead()
Gets if the entity is dead or not.boolean
boolean
Is this entity immune to the given type of damage?boolean
Gets if the entity is invulnerable.void
kill()
Kills the entity, trigger theEntityDeathEvent
event.protected void
onAttributeChanged
(@NotNull AttributeInstance attributeInstance) Callback used when an attribute instance has been modified.void
refreshActiveHand
(boolean isHandActive, boolean offHand, boolean riptideSpinAttack) protected void
refreshIsDead
(boolean isDead) Used to change theisDead
internal field.void
setArrowCount
(int arrowCount) Changes the amount of arrow stuck in the entity.void
setBoundingBox
(BoundingBox boundingBox) Changes the internal entity standing bounding box.void
setCanPickupItem
(boolean canPickupItem) When set to false, the entity will not be able to pickItemEntity
on the ground.void
setEquipment
(@NotNull EquipmentSlot slot, @NotNull ItemStack itemStack) void
setFireTicks
(int ticks) Sets this entity on fire for the given ticks.void
setFlyingWithElytra
(boolean isFlying) void
setHealth
(float health) Changes the entity health, kill it ifhealth
is <= 0 and is not dead yet.void
setInvulnerable
(boolean invulnerable) Makes the entity vulnerable or invulnerable.void
setSprinting
(boolean sprinting) Makes the entity sprint.void
Changes theTeam
for the entity.protected boolean
Check if this entity should send anEntityAttributesPacket
.void
Sends aEntityAnimationPacket
to swing the main hand (can be used for attack animation).void
swingMainHand
(boolean fromClient) Sends aEntityAnimationPacket
to swing the main hand (can be used for attack animation).void
Sends aEntityAnimationPacket
to swing the off hand (can be used for attack animation).void
swingOffHand
(boolean fromClient) Sends aEntityAnimationPacket
to swing the off hand (can be used for attack animation).void
takeKnockback
(float strength, double x, double z) Applies knockbackvoid
update
(long time) Called each tick.void
updateEquipmentAttributes
(@NotNull ItemStack oldItemStack, @NotNull ItemStack newItemStack, @NotNull EquipmentSlot slot) Updates the current attributes of the living entity based onvoid
updateNewViewer
(@NotNull Player player) Called when a new viewer must be shown.Methods inherited from class net.minestom.server.entity.Entity
addEffect, addPassenger, addViewer, asHoverEvent, autoViewEntities, clearEffects, despawn, editEntityMeta, eventNode, generateId, getAcquirable, getActiveEffects, getAerodynamics, getAliveTicks, getAttachEntityPacket, getBoundingBox, getChunk, getCustomName, getDistance, getDistance, getDistanceSquared, getDistanceSquared, getEffect, getEffectLevel, getEntityId, getEntityMeta, getEntityType, getEyeHeight, getGravityTickCount, getInstance, getLeashedEntities, getLeashHolder, getLineOfSight, getLineOfSightEntity, getMetadataPacket, getPassengers, getPassengersPacket, getPose, getPosition, getPreviousPosition, getSynchronizationTicks, getUuid, getVehicle, getVelocity, getVelocityForPacket, getVelocityPacket, getViewers, hasEffect, hasEntityCollision, hasLineOfSight, hasLineOfSight, hasNoGravity, hasPassenger, hasPredictableViewers, hasVelocity, intersectBox, intersectBoxSwept, isActive, isAutoViewable, isCustomNameVisible, isGlowing, isInvisible, isOccluded, isOnFire, isOnGround, isRemoved, isSilent, isSneaking, isSprinting, lookAt, lookAt, movementTick, preventBlockPlacement, refreshCoordinate, refreshCurrentChunk, refreshPosition, refreshPosition, refreshPosition, relativeEnd, relativeStart, remove, remove, removeEffect, removePassenger, removeViewer, scheduleNextTick, scheduler, scheduleRemove, scheduleRemove, setAerodynamics, setAutoViewable, setAutoViewEntities, setBoundingBox, setCustomName, setCustomNameVisible, setGlowing, setInstance, setInstance, setInstance, setInvisible, setLeashHolder, setNoGravity, setPose, setSilent, setSneaking, setSynchronizationTicks, setVelocity, setView, spawn, switchEntityType, synchronizeNextTick, synchronizePosition, tagHandler, teleport, teleport, teleport, teleport, teleport, teleport, tick, triggerStatus, updateCollisions, updateOldViewer, updatePose, updateSnapshot, updateViewableRule, updateViewableRule, updateViewerRule, updateViewerRule
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Methods inherited from interface net.minestom.server.inventory.EquipmentHandler
getBodyEquipment, getBoots, getChestplate, getEquipmentsPacket, getHelmet, getItemInHand, getItemInMainHand, getItemInOffHand, getLeggings, hasEquipment, setBodyEquipment, setBoots, setChestplate, setHelmet, setItemInHand, setItemInMainHand, setItemInOffHand, setLeggings, syncEquipment, syncEquipment
Methods inherited from interface net.kyori.adventure.text.event.HoverEventSource
asHoverEvent
Methods inherited from interface net.minestom.server.collision.Shape
intersectEntity, isFaceFull
Methods inherited from interface net.minestom.server.tag.Taggable
getAndSetTag, getAndUpdateTag, getTag, hasTag, removeTag, setTag, updateAndGetTag, updateTag
Methods inherited from interface net.minestom.server.Viewable
getViewersAsAudience, getViewersAsAudiences, isViewer, sendPacketsToViewers, sendPacketsToViewers, sendPacketToViewers, sendPacketToViewersAndSelf
-
Field Details
-
PROTECTED_MODIFIERS
IDs of modifiers that are protected from removal by methods likeAttributeInstance.clearModifiers()
. -
canPickupItem
protected boolean canPickupItem -
itemPickupCooldown
-
isDead
protected boolean isDead -
lastDamage
-
expandedBoundingBox
-
invulnerable
protected boolean invulnerable
-
-
Constructor Details
-
LivingEntity
Constructor which allows to specify an UUID. Only use if you know what you are doing! -
LivingEntity
-
-
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 classEntity
- Parameters:
sprinting
- true to make the entity sprint
-
getEquipment
Description copied from interface:EquipmentHandler
Gets the equipment in a specific slot.- Specified by:
getEquipment
in interfaceEquipmentHandler
- 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 interfaceEquipmentHandler
-
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 entitynewItemStack
- The ItemStack that has been added, modifiers on this stack will be added to the entityslot
- 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. -
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 theEntityDeathEvent
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
-
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
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 ifhealth
is <= 0 and is not dead yet.- Parameters:
health
- the new entity health
-
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 attributeAttributes.MAX_HEALTH
. -
getAttribute
Retrieves the attribute instance and its modifiers.- Parameters:
attribute
- the attribute instance to get- Returns:
- the attribute instance
-
getAttributes
Retrieves allAttributeInstance
s on this entity.- Returns:
- a collection of all attribute instances on this entity
-
onAttributeChanged
Callback used when an attribute instance has been modified.- Parameters:
attributeInstance
- the modified attribute instance
-
getAttributeValue
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 pickItemEntity
on the ground.- Parameters:
canPickupItem
- can the entity pickup item
-
shouldSendAttributes
protected boolean shouldSendAttributes()Check if this entity should send anEntityAttributesPacket
. This is true for players and entities whose spawn type isLIVING
, but false for others.- Returns:
- true if this entity needs to send attributes, false otherwise
-
updateNewViewer
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 classEntity
- Parameters:
player
- the player to send the packets to
-
setBoundingBox
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 classEntity
- Parameters:
boundingBox
- the new bounding box
-
swingMainHand
public void swingMainHand()Sends aEntityAnimationPacket
to swing the main hand (can be used for attack animation). -
swingOffHand
public void swingOffHand()Sends aEntityAnimationPacket
to swing the off hand (can be used for attack animation). -
swingMainHand
@Internal public void swingMainHand(boolean fromClient) Sends aEntityAnimationPacket
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 aEntityAnimationPacket
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 theisDead
internal field.- Parameters:
isDead
- the new field value
-
getPropertiesPacket
Gets anEntityAttributesPacket
for this entity with all of its attributes values.- Returns:
- an
EntityAttributesPacket
linked to this entity
-
setTeam
Changes theTeam
for the entity.- Parameters:
team
- The new team
-
getTeam
Gets theTeam
of the entity.- Returns:
- the
Team
-
getTargetBlockPosition
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
GetsEntityMeta
of this entity casted toLivingEntityMeta
.- 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 knockbackNote: The strength is reduced based on knockback resistance
- Overrides:
takeKnockback
in classEntity
- Parameters:
strength
- the strength of the knockback, 0.4 is the vanilla value for a bare hand hitx
- knockback on x axle, for default knockback use the following formulasin(attacker.yaw * (pi/180))
z
- knockback on z axle, for default knockback use the following formula-cos(attacker.yaw * (pi/180))
-
acquirable
Description copied from interface:AcquirableSource
Obtains anAcquirable
. To safely perform operations on this object, the user must callAcquirable.sync(Consumer)
orAcquirable.lock()
(followed by a subsequent unlock) on the Acquirable instance.- Specified by:
acquirable
in interfaceAcquirableSource<Entity>
- Overrides:
acquirable
in classEntity
- Returns:
- an Acquirable which can be used to synchronize access to this object
-