aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLars Müller <34514239+appgurueu@users.noreply.github.com>2021-03-30 21:49:50 +0200
committerGitHub <noreply@github.com>2021-03-30 21:49:50 +0200
commit88d1fcfe237470b6eaed079f95a048e5f39b1861 (patch)
tree88a7441a4961be1ebdc8ebf4e71a772fbcb418dd
parentf4118a4fdebe5c8a4a467afe5b3f49a0bd74c37a (diff)
downloadminetest-88d1fcfe237470b6eaed079f95a048e5f39b1861.tar.gz
minetest-88d1fcfe237470b6eaed079f95a048e5f39b1861.tar.bz2
minetest-88d1fcfe237470b6eaed079f95a048e5f39b1861.zip
Block & report player self-interaction (#11137)
-rw-r--r--doc/lua_api.txt1
-rw-r--r--src/network/serverpackethandler.cpp6
2 files changed, 7 insertions, 0 deletions
diff --git a/doc/lua_api.txt b/doc/lua_api.txt
index 66363be77..d333ca58b 100644
--- a/doc/lua_api.txt
+++ b/doc/lua_api.txt
@@ -4662,6 +4662,7 @@ Call these functions only at load time!
* `cheat`: `{type=<cheat_type>}`, where `<cheat_type>` is one of:
* `moved_too_fast`
* `interacted_too_far`
+ * `interacted_with_self`
* `interacted_while_dead`
* `finished_unknown_dig`
* `dug_unbreakable`
diff --git a/src/network/serverpackethandler.cpp b/src/network/serverpackethandler.cpp
index 5b378a083..708ddbf20 100644
--- a/src/network/serverpackethandler.cpp
+++ b/src/network/serverpackethandler.cpp
@@ -1051,6 +1051,12 @@ void Server::handleCommand_Interact(NetworkPacket *pkt)
if (pointed.type == POINTEDTHING_NODE) {
target_pos = intToFloat(pointed.node_undersurface, BS);
} else if (pointed.type == POINTEDTHING_OBJECT) {
+ if (playersao->getId() == pointed_object->getId()) {
+ actionstream << "Server: " << player->getName()
+ << " attempted to interact with themselves" << std::endl;
+ m_script->on_cheat(playersao, "interacted_with_self");
+ return;
+ }
target_pos = pointed_object->getBasePosition();
}
float d = playersao->getEyePosition().getDistanceFrom(target_pos);