diff --git a/Minecraft.World/AI/Goals/PanicGoal.cpp b/Minecraft.World/AI/Goals/PanicGoal.cpp index 9c32c1c6e..48febd49e 100644 --- a/Minecraft.World/AI/Goals/PanicGoal.cpp +++ b/Minecraft.World/AI/Goals/PanicGoal.cpp @@ -14,6 +14,14 @@ PanicGoal::PanicGoal(PathfinderMob* mob, double speedModifier) { bool PanicGoal::canUse() { if (mob->getLastHurtByMob() == NULL && !mob->isOnFire()) return false; + + // 4jcraft: stop entities from being eternally scared (referenced from + // smartcmd/MinecraftConsoles #519) + const int hurtTimeout = mob->getLastHurtByMobTimestamp(); + static thread_local Random random; + const int panicDuration = random.nextInt(41) + 60; + if (mob->tickCount - hurtTimeout > panicDuration) return false; + Vec3* pos = RandomPos::getPos( std::dynamic_pointer_cast(mob->shared_from_this()), 5, 4);