Cache disable_anticheat and check it for "interacted_too_far"
authorASL97 <asl97@outlook.com>
Mon, 7 Dec 2015 09:39:48 +0000 (17:39 +0800)
committerShadowNinja <shadowninja@minetest.net>
Sat, 9 Jan 2016 21:24:22 +0000 (16:24 -0500)
src/network/serverpackethandler.cpp

index a5aaf1ecbba6bac24a55bd876bcef3ecedc87614..7e348a94d134f8a961e83f1342e850bece9cc630 100644 (file)
@@ -1358,7 +1358,9 @@ void Server::handleCommand_Interact(NetworkPacket* pkt)
                Check that target is reasonably close
                (only when digging or placing things)
        */
-       if (action == 0 || action == 2 || action == 3) {
+       static const bool enable_anticheat = !g_settings->getBool("disable_anticheat");
+       if ((action == 0 || action == 2 || action == 3) &&
+                       (enable_anticheat && !isSingleplayer())) {
                float d = player_pos.getDistanceFrom(pointed_pos_under);
                float max_d = BS * 14; // Just some large enough value
                if (d > max_d) {
@@ -1495,7 +1497,7 @@ void Server::handleCommand_Interact(NetworkPacket* pkt)
 
                        /* Cheat prevention */
                        bool is_valid_dig = true;
-                       if (!isSingleplayer() && !g_settings->getBool("disable_anticheat")) {
+                       if (enable_anticheat && !isSingleplayer()) {
                                v3s16 nocheat_p = playersao->getNoCheatDigPos();
                                float nocheat_t = playersao->getNoCheatDigTime();
                                playersao->noCheatDigEnd();