summaryrefslogtreecommitdiff
path: root/src/server.cpp
diff options
context:
space:
mode:
authorsapier <Sapier at GMX dot net>2013-01-02 19:45:04 +0000
committerPerttu Ahola <celeron55@gmail.com>2013-01-02 20:59:37 +0200
commitda9707950e0f69d8a906572fc55f516277e057c4 (patch)
treec8991d2c8f650d0735e69ff93fc9ebe0b32b141c /src/server.cpp
parent36f03a7f4ae81e8735328a38c9415b6e7081c37c (diff)
downloadminetest-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.cpp32
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);