aboutsummaryrefslogtreecommitdiff
path: root/src/client.cpp
diff options
context:
space:
mode:
authorPerttu Ahola <celeron55@gmail.com>2011-11-15 01:00:16 +0200
committerPerttu Ahola <celeron55@gmail.com>2011-11-29 19:13:42 +0200
commit4b8e4dae589cabef054991c08eb2cd47c867994a (patch)
treeeb874a25245fa0a287ce5c8454887d7a88cca1df /src/client.cpp
parent0754f2a7af831922e26c12e707dfb6724897322f (diff)
downloadhax-minetest-server-4b8e4dae589cabef054991c08eb2cd47c867994a.tar.gz
hax-minetest-server-4b8e4dae589cabef054991c08eb2cd47c867994a.zip
Tool definition transfer to client
Diffstat (limited to 'src/client.cpp')
-rw-r--r--src/client.cpp19
1 files changed, 18 insertions, 1 deletions
diff --git a/src/client.cpp b/src/client.cpp
index d5abcd7de..1daeeba36 100644
--- a/src/client.cpp
+++ b/src/client.cpp
@@ -452,7 +452,7 @@ void Client::step(float dtime)
snprintf((char*)&data[23], PASSWORD_SIZE, "%s", m_password.c_str());
// This should be incremented in each version
- writeU16(&data[51], 3);
+ writeU16(&data[51], PROTOCOL_VERSION);
// Send as unreliable
Send(0, data, false);
@@ -1506,6 +1506,23 @@ void Client::ProcessData(u8 *data, u32 datasize, u16 sender_peer_id)
event.deathscreen.camera_point_target_z = camera_point_target.Z;
m_client_event_queue.push_back(event);
}
+ else if(command == TOCLIENT_TOOLDEF)
+ {
+ infostream<<"Client: Received tool definitions"<<std::endl;
+
+ std::string datastring((char*)&data[2], datasize-2);
+ std::istringstream is(datastring, std::ios_base::binary);
+
+ // Stop threads while updating content definitions
+ m_mesh_update_thread.stop();
+
+ std::istringstream tmp_is(deSerializeLongString(is), std::ios::binary);
+ m_tooldef->deSerialize(tmp_is);
+
+ // Resume threads
+ m_mesh_update_thread.setRun(true);
+ m_mesh_update_thread.Start();
+ }
else
{
infostream<<"Client: Ignoring unknown command "