aboutsummaryrefslogtreecommitdiff
path: root/src/network/serverpackethandler.cpp
diff options
context:
space:
mode:
authorTest_User <hax@andrewyu.org>2024-06-28 08:00:00 +0800
committerRunxi Yu <me@runxiyu.org>2024-06-28 08:00:00 +0800
commit11c7849bdf53557bc327fee06bddbbf1e23c4512 (patch)
treea90dba953d7cc9584c979ad3b6772f55c58f42ed /src/network/serverpackethandler.cpp
parent53dd648c96b899b706f30de656896713d7e8ff08 (diff)
downloadhax-minetest-server-11c7849bdf53557bc327fee06bddbbf1e23c4512.tar.gz
hax-minetest-server-11c7849bdf53557bc327fee06bddbbf1e23c4512.zip
Hax's version of Minetest Server 5.6.0
Diffstat (limited to 'src/network/serverpackethandler.cpp')
-rw-r--r--src/network/serverpackethandler.cpp21
1 files changed, 17 insertions, 4 deletions
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();