diff --git a/src/network/serverpackethandler.cpp b/src/network/serverpackethandler.cpp index 86c18725f6e39..4e2998101fb20 100644 --- a/src/network/serverpackethandler.cpp +++ b/src/network/serverpackethandler.cpp @@ -30,6 +30,8 @@ #include "util/srp.h" #include "clientdynamicinfo.h" +#include + void Server::handleCommand_Deprecated(NetworkPacket* pkt) { infostream << "Server: " << toServerCommandTable[pkt->getCommand()].name @@ -468,7 +470,11 @@ void Server::process_PlayerPos(RemotePlayer *player, PlayerSAO *playersao, *pkt >> bits; if (pkt->getRemainingBytes() >= 8) { - *pkt >> player->control.movement_speed; + f32 movement_speed; + *pkt >> movement_speed; + if (movement_speed != movement_speed) // NaN + movement_speed = 0.0f; + player->control.movement_speed = std::clamp(movement_speed, 0.0f, 1.0f); *pkt >> player->control.movement_direction; } else { player->control.movement_speed = 0.0f;