summaryrefslogtreecommitdiff
path: root/src/server.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/server.cpp
parent0754f2a7af831922e26c12e707dfb6724897322f (diff)
downloadminetest-4b8e4dae589cabef054991c08eb2cd47c867994a.tar.gz
minetest-4b8e4dae589cabef054991c08eb2cd47c867994a.tar.bz2
minetest-4b8e4dae589cabef054991c08eb2cd47c867994a.zip
Tool definition transfer to client
Diffstat (limited to 'src/server.cpp')
-rw-r--r--src/server.cpp26
1 files changed, 26 insertions, 0 deletions
diff --git a/src/server.cpp b/src/server.cpp
index 75fb7cd72..ca00ed29d 100644
--- a/src/server.cpp
+++ b/src/server.cpp
@@ -2106,6 +2106,9 @@ void Server::ProcessData(u8 *data, u32 datasize, u16 peer_id)
Send some initialization data
*/
+ // Send tool definitions
+ SendToolDef(m_con, peer_id, m_toolmgr);
+
// Send player info to all players
SendPlayerInfos();
@@ -3594,6 +3597,29 @@ void Server::SendDeathscreen(con::Connection &con, u16 peer_id,
con.Send(peer_id, 0, data, true);
}
+void Server::SendToolDef(con::Connection &con, u16 peer_id,
+ IToolDefManager *tooldef)
+{
+ DSTACK(__FUNCTION_NAME);
+ std::ostringstream os(std::ios_base::binary);
+
+ /*
+ u16 command
+ u32 length of the next item
+ serialized ToolDefManager
+ */
+ writeU16(os, TOCLIENT_TOOLDEF);
+ std::ostringstream tmp_os(std::ios::binary);
+ tooldef->serialize(tmp_os);
+ os<<serializeLongString(tmp_os.str());
+
+ // Make data buffer
+ std::string s = os.str();
+ SharedBuffer<u8> data((u8*)s.c_str(), s.size());
+ // Send as reliable
+ con.Send(peer_id, 0, data, true);
+}
+
/*
Non-static send methods
*/