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
,PermissionHandler
,Snapshotable
,Taggable
,TagReadable
,TagWritable
,AcquirableSource<Entity>
,Tickable
,Schedulable
,Viewable
- Direct Known Subclasses:
EntityCreature
,Player
-
Nested Class Summary
Nested classes/interfaces inherited from class net.minestom.server.entity.Entity
Entity.Pose
-
Field Summary
FieldsModifier 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, currentChunk, entityMeta, entityType, gravityTickCount, hasCollision, hasPhysics, instance, lastSyncedPosition, lastVelocityWasZero, metadata, onGround, position, previousPosition, removed, trackingUpdate, vehicle, velocity, viewEngine, viewers
-
Constructor Summary
ConstructorsConstructorDescriptionLivingEntity
(@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
getBoots()
Gets the boots.@NotNull ItemStack
Gets the chestplate.int
Gets the amount of ticks this entity is on fire for.float
Gets the entity health.@NotNull ItemStack
Gets the helmet.@NotNull ItemStack
Gets theItemStack
in main hand.@NotNull ItemStack
Gets theItemStack
in off hand.@Nullable Damage
Gets the last damage source which damaged of this entity.@NotNull ItemStack
Gets the leggings.@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
Changes the boots.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
setChestplate
(@NotNull ItemStack itemStack) Changes the chestplate.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
Changes the helmet.void
setInvulnerable
(boolean invulnerable) Makes the entity vulnerable or invulnerable.void
setItemInMainHand
(@NotNull ItemStack itemStack) Changes the main handItemStack
.void
setItemInOffHand
(@NotNull ItemStack itemStack) Changes the off handItemStack
.void
setLeggings
(@NotNull ItemStack itemStack) Changes the leggings.void
setSprinting
(boolean sprinting) Makes the entity sprint.void
Changes theTeam
for the entity.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, getAllPermissions, 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, hasCollision, hasEffect, hasLineOfSight, hasLineOfSight, hasNoGravity, hasPassenger, hasPredictableViewers, hasVelocity, intersectBox, intersectBoxSwept, isActive, isAutoViewable, isCustomNameVisible, isGlowing, isInvisible, isOccluded, isOnFire, isOnGround, isRemoved, isSilent, isSneaking, isSprinting, lookAt, lookAt, movementTick, 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, tick, triggerStatus, 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
getEquipment, getEquipmentsPacket, getItemInHand, hasEquipment, setEquipment, setItemInHand, syncEquipment
Methods inherited from interface net.kyori.adventure.text.event.HoverEventSource
asHoverEvent
Methods inherited from interface net.minestom.server.permission.PermissionHandler
addPermission, getPermission, hasPermission, hasPermission, hasPermission, removePermission, removePermission
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
-
getItemInMainHand
Description copied from interface:EquipmentHandler
Gets theItemStack
in main hand.- Specified by:
getItemInMainHand
in interfaceEquipmentHandler
- Returns:
- the
ItemStack
in main hand
-
setItemInMainHand
Description copied from interface:EquipmentHandler
Changes the main handItemStack
.- Specified by:
setItemInMainHand
in interfaceEquipmentHandler
- Parameters:
itemStack
- the main handItemStack
-
getItemInOffHand
Description copied from interface:EquipmentHandler
Gets theItemStack
in off hand.- Specified by:
getItemInOffHand
in interfaceEquipmentHandler
- Returns:
- the item in off hand
-
setItemInOffHand
Description copied from interface:EquipmentHandler
Changes the off handItemStack
.- Specified by:
setItemInOffHand
in interfaceEquipmentHandler
- Parameters:
itemStack
- the off handItemStack
-
getHelmet
Description copied from interface:EquipmentHandler
Gets the helmet.- Specified by:
getHelmet
in interfaceEquipmentHandler
- Returns:
- the helmet
-
setHelmet
Description copied from interface:EquipmentHandler
Changes the helmet.- Specified by:
setHelmet
in interfaceEquipmentHandler
- Parameters:
itemStack
- the helmet
-
getChestplate
Description copied from interface:EquipmentHandler
Gets the chestplate.- Specified by:
getChestplate
in interfaceEquipmentHandler
- Returns:
- the chestplate
-
setChestplate
Description copied from interface:EquipmentHandler
Changes the chestplate.- Specified by:
setChestplate
in interfaceEquipmentHandler
- Parameters:
itemStack
- the chestplate
-
getLeggings
Description copied from interface:EquipmentHandler
Gets the leggings.- Specified by:
getLeggings
in interfaceEquipmentHandler
- Returns:
- the leggings
-
setLeggings
Description copied from interface:EquipmentHandler
Changes the leggings.- Specified by:
setLeggings
in interfaceEquipmentHandler
- Parameters:
itemStack
- the leggings
-
getBoots
Description copied from interface:EquipmentHandler
Gets the boots.- Specified by:
getBoots
in interfaceEquipmentHandler
- Returns:
- the boots
-
setBoots
Description copied from interface:EquipmentHandler
Changes the boots.- Specified by:
setBoots
in interfaceEquipmentHandler
- Parameters:
itemStack
- the boots
-
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.GENERIC_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
-
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)
,Acquirable.async(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
-