diff options
author | sapier <Sapier at GMX dot net> | 2013-01-02 19:45:04 +0000 |
---|---|---|
committer | Perttu Ahola <celeron55@gmail.com> | 2013-01-02 20:59:37 +0200 |
commit | da9707950e0f69d8a906572fc55f516277e057c4 (patch) | |
tree | c8991d2c8f650d0735e69ff93fc9ebe0b32b141c /src/server.cpp | |
parent | 36f03a7f4ae81e8735328a38c9415b6e7081c37c (diff) | |
download | minetest-da9707950e0f69d8a906572fc55f516277e057c4.tar.gz minetest-da9707950e0f69d8a906572fc55f516277e057c4.tar.bz2 minetest-da9707950e0f69d8a906572fc55f516277e057c4.zip |
Add TOCLIENT_SHOW_FORMSPEC to display formspecs at client from lua
Diffstat (limited to 'src/server.cpp')
-rw-r--r-- | src/server.cpp | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/src/server.cpp b/src/server.cpp index 39407f961..f4b5ee872 100644 --- a/src/server.cpp +++ b/src/server.cpp @@ -3638,6 +3638,24 @@ void Server::SendChatMessage(u16 peer_id, const std::wstring &message) // Send as reliable m_con.Send(peer_id, 0, data, true); } +void Server::SendShowFormspecMessage(u16 peer_id, const std::string formspec) +{ + DSTACK(__FUNCTION_NAME); + + std::ostringstream os(std::ios_base::binary); + u8 buf[12]; + + // Write command + writeU16(buf, TOCLIENT_SHOW_FORMSPEC); + os.write((char*)buf, 2); + os<<serializeLongString(formspec); + + // Make data buffer + std::string s = os.str(); + SharedBuffer<u8> data((u8*)s.c_str(), s.size()); + // Send as reliable + m_con.Send(peer_id, 0, data, true); +} void Server::BroadcastChatMessage(const std::wstring &message) { @@ -4578,6 +4596,20 @@ void Server::notifyPlayer(const char *name, const std::wstring msg) SendChatMessage(player->peer_id, std::wstring(L"Server: -!- ")+msg); } +bool Server::showFormspec(const char *playername, const std::string &formspec) +{ + Player *player = m_env->getPlayer(playername); + + if(!player) + { + infostream<<"showFormspec: couldn't find player:"<<playername<<std::endl; + return false; + } + + SendShowFormspecMessage(player->peer_id,formspec); + return true; +} + void Server::notifyPlayers(const std::wstring msg) { BroadcastChatMessage(msg); |