diff options
author | Loic Blot <loic.blot@unix-experience.fr> | 2017-01-01 16:13:01 +0100 |
---|---|---|
committer | Loic Blot <loic.blot@unix-experience.fr> | 2017-01-01 23:11:26 +0100 |
commit | 52ba1f867e5edb579a59a44fbb8286d4f1e54931 (patch) | |
tree | d95e2032d3fcf18bd972cc018e6b44470664d75c /src/client.cpp | |
parent | a1346c916e1d0f0cde2ccecc680857896c717a3d (diff) | |
download | minetest-52ba1f867e5edb579a59a44fbb8286d4f1e54931.tar.gz minetest-52ba1f867e5edb579a59a44fbb8286d4f1e54931.tar.bz2 minetest-52ba1f867e5edb579a59a44fbb8286d4f1e54931.zip |
Breath cheat fix: server side
Breath is now handled server side. Changing this behaviour required some modifications to core:
* Ignore TOSERVER_BREATH package, marking it as obsolete
* Clients doesn't send the breath to server anymore
* Use PlayerSAO pointer instead of peer_id in Server::SendPlayerBreath to prevent a useless lookup (little perf gain)
* drop a useless static_cast in emergePlayer
Diffstat (limited to 'src/client.cpp')
-rw-r--r-- | src/client.cpp | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/src/client.cpp b/src/client.cpp index 5476aad0e..1446ebad8 100644 --- a/src/client.cpp +++ b/src/client.cpp @@ -499,9 +499,10 @@ void Client::step(float dtime) m_client_event_queue.push(event); } } - else if(event.type == CEE_PLAYER_BREATH) { - u16 breath = event.player_breath.amount; - sendBreath(breath); + // Protocol v29 or greater obsoleted this event + else if (event.type == CEE_PLAYER_BREATH && m_proto_ver < 29) { + u16 breath = event.player_breath.amount; + sendBreath(breath); } } @@ -1270,6 +1271,10 @@ void Client::sendBreath(u16 breath) { DSTACK(FUNCTION_NAME); + // Protocol v29 make this obsolete + if (m_proto_ver >= 29) + return; + NetworkPacket pkt(TOSERVER_BREATH, sizeof(u16)); pkt << breath; Send(&pkt); |