From fa0c5050e43159febf4e0f1ee4681742f2bd8a2c Mon Sep 17 00:00:00 2001 From: themode Date: Thu, 28 Jan 2021 15:37:55 +0100 Subject: [PATCH] Prevent entities from moving during death animation --- .../java/net/minestom/server/entity/EntityCreature.java | 2 +- .../net/minestom/server/entity/pathfinding/Navigator.java | 7 ++++++- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/src/main/java/net/minestom/server/entity/EntityCreature.java b/src/main/java/net/minestom/server/entity/EntityCreature.java index 1e8cc86fa..761270405 100644 --- a/src/main/java/net/minestom/server/entity/EntityCreature.java +++ b/src/main/java/net/minestom/server/entity/EntityCreature.java @@ -78,7 +78,7 @@ public abstract class EntityCreature extends LivingEntity implements NavigableEn aiTick(time); // Path finding - this.navigator.pathFindingTick(getAttributeValue(Attributes.MOVEMENT_SPEED)); + this.navigator.tick(getAttributeValue(Attributes.MOVEMENT_SPEED)); // Fire, item pickup, ... super.update(time); diff --git a/src/main/java/net/minestom/server/entity/pathfinding/Navigator.java b/src/main/java/net/minestom/server/entity/pathfinding/Navigator.java index ee73e1c21..edab97cd0 100644 --- a/src/main/java/net/minestom/server/entity/pathfinding/Navigator.java +++ b/src/main/java/net/minestom/server/entity/pathfinding/Navigator.java @@ -4,6 +4,7 @@ import com.extollit.gaming.ai.path.HydrazinePathFinder; import com.extollit.gaming.ai.path.model.IPath; import net.minestom.server.collision.CollisionUtils; import net.minestom.server.entity.Entity; +import net.minestom.server.entity.LivingEntity; import net.minestom.server.instance.Chunk; import net.minestom.server.instance.Instance; import net.minestom.server.instance.WorldBorder; @@ -159,7 +160,11 @@ public class Navigator { return setPathTo(position, true); } - public synchronized void pathFindingTick(float speed) { + public synchronized void tick(float speed) { + // No pathfinding tick for dead entities + if (entity instanceof LivingEntity && ((LivingEntity) entity).isDead()) + return; + if (pathPosition != null) { IPath path = pathFinder.updatePathFor(pathingEntity);