From 11c7849bdf53557bc327fee06bddbbf1e23c4512 Mon Sep 17 00:00:00 2001 From: Test_User Date: Fri, 28 Jun 2024 08:00:00 +0800 Subject: Hax's version of Minetest Server 5.6.0 --- src/network/serverpackethandler.cpp | 21 +++++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) (limited to 'src/network/serverpackethandler.cpp') diff --git a/src/network/serverpackethandler.cpp b/src/network/serverpackethandler.cpp index a5ee81a9c..e22fdb771 100644 --- a/src/network/serverpackethandler.cpp +++ b/src/network/serverpackethandler.cpp @@ -500,8 +500,19 @@ void Server::process_PlayerPos(RemotePlayer *player, PlayerSAO *playersao, playersao->setFov(fov); playersao->setWantedRange(wanted_range); + uint32_t old_keys = player->control.direction_keys | + ((uint32_t)(player->control.jump & 1) << 4) | + ((uint32_t)(player->control.aux1 & 1) << 5) | + ((uint32_t)(player->control.sneak & 1) << 6) | + ((uint32_t)(player->control.dig & 1) << 7) | + ((uint32_t)(player->control.place & 1) << 8) | + ((uint32_t)(player->control.zoom & 1) << 9); + player->control.unpackKeysPressed(keyPressed); + if (old_keys != keyPressed) + m_script->on_player_change_keys(playersao, player->control); + if (playersao->checkMovementCheat()) { // Call callbacks m_script->on_cheat(playersao, "moved_too_fast"); @@ -845,6 +856,9 @@ void Server::handleCommand_PlayerItem(NetworkPacket* pkt) *pkt >> item; + if (item == playersao->getPlayer()->getWieldIndex()) + return; + if (item >= player->getHotbarItemcount()) { actionstream << "Player: " << player->getName() << " tried to access item=" << item @@ -855,6 +869,7 @@ void Server::handleCommand_PlayerItem(NetworkPacket* pkt) } playersao->getPlayer()->setWieldIndex(item); + m_script->on_player_change_wield(playersao, item); } void Server::handleCommand_Respawn(NetworkPacket* pkt) @@ -1028,12 +1043,10 @@ void Server::handleCommand_Interact(NetworkPacket *pkt) /* Check that target is reasonably close */ - static thread_local const bool enable_anticheat = - !g_settings->getBool("disable_anticheat"); if ((action == INTERACT_START_DIGGING || action == INTERACT_DIGGING_COMPLETED || action == INTERACT_PLACE || action == INTERACT_USE) && - enable_anticheat && !isSingleplayer()) { + !isSingleplayer()) { v3f target_pos = player_pos; if (pointed.type == POINTEDTHING_NODE) { target_pos = intToFloat(pointed.node_undersurface, BS); @@ -1136,7 +1149,7 @@ void Server::handleCommand_Interact(NetworkPacket *pkt) /* Cheat prevention */ bool is_valid_dig = true; - if (enable_anticheat && !isSingleplayer()) { + if (!isSingleplayer()) { v3s16 nocheat_p = playersao->getNoCheatDigPos(); float nocheat_t = playersao->getNoCheatDigTime(); playersao->noCheatDigEnd(); -- cgit v1.2.3