Block & report player self-interaction (#11137)

master
Lars Müller 2021-03-30 21:49:50 +02:00 committed by GitHub
parent f4118a4fde
commit 88d1fcfe23
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 7 additions and 0 deletions

View File

@ -4662,6 +4662,7 @@ Call these functions only at load time!
* `cheat`: `{type=<cheat_type>}`, where `<cheat_type>` is one of: * `cheat`: `{type=<cheat_type>}`, where `<cheat_type>` is one of:
* `moved_too_fast` * `moved_too_fast`
* `interacted_too_far` * `interacted_too_far`
* `interacted_with_self`
* `interacted_while_dead` * `interacted_while_dead`
* `finished_unknown_dig` * `finished_unknown_dig`
* `dug_unbreakable` * `dug_unbreakable`

View File

@ -1051,6 +1051,12 @@ void Server::handleCommand_Interact(NetworkPacket *pkt)
if (pointed.type == POINTEDTHING_NODE) { if (pointed.type == POINTEDTHING_NODE) {
target_pos = intToFloat(pointed.node_undersurface, BS); target_pos = intToFloat(pointed.node_undersurface, BS);
} else if (pointed.type == POINTEDTHING_OBJECT) { } 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(); target_pos = pointed_object->getBasePosition();
} }
float d = playersao->getEyePosition().getDistanceFrom(target_pos); float d = playersao->getEyePosition().getDistanceFrom(target_pos);