From d1c27c7e8037e9f438741ee5f7d3b6bda22d22a0 Mon Sep 17 00:00:00 2001
From: ANAND <ClobberXD@gmail.com>
Date: Thu, 8 Aug 2019 21:34:46 +0530
Subject: Allow customizing chat message format (#8529)

---
 src/script/cpp_api/s_server.cpp | 22 ++++++++++++++++++++++
 src/script/cpp_api/s_server.h   | 12 ++++++++----
 2 files changed, 30 insertions(+), 4 deletions(-)

(limited to 'src/script')

diff --git a/src/script/cpp_api/s_server.cpp b/src/script/cpp_api/s_server.cpp
index 3b461a2a3..1ce2f9d45 100644
--- a/src/script/cpp_api/s_server.cpp
+++ b/src/script/cpp_api/s_server.cpp
@@ -168,3 +168,25 @@ void ScriptApiServer::on_shutdown()
 	runCallbacks(0, RUN_CALLBACKS_MODE_FIRST);
 }
 
+std::string ScriptApiServer::formatChatMessage(const std::string &name,
+	const std::string &message)
+{
+	SCRIPTAPI_PRECHECKHEADER
+
+	// Push function onto stack
+	lua_getglobal(L, "core");
+	lua_getfield(L, -1, "format_chat_message");
+
+	// Push arguments onto stack
+	lua_pushstring(L, name.c_str());
+	lua_pushstring(L, message.c_str());
+
+	// Actually call the function
+	lua_call(L, 2, 1);
+
+	// Fetch return value
+	std::string ret = lua_tostring(L, -1);
+	lua_pop(L, 1);
+
+	return ret;
+}
diff --git a/src/script/cpp_api/s_server.h b/src/script/cpp_api/s_server.h
index 769939d3f..a4cede84d 100644
--- a/src/script/cpp_api/s_server.h
+++ b/src/script/cpp_api/s_server.h
@@ -36,14 +36,18 @@ public:
 	// Calls on_shutdown handlers
 	void on_shutdown();
 
+	// Calls core.format_chat_message
+	std::string formatChatMessage(const std::string &name,
+		const std::string &message);
+
 	/* auth */
 	bool getAuth(const std::string &playername,
-			std::string *dst_password,
-			std::set<std::string> *dst_privs);
+		std::string *dst_password,
+		std::set<std::string> *dst_privs);
 	void createAuth(const std::string &playername,
-			const std::string &password);
+		const std::string &password);
 	bool setPassword(const std::string &playername,
-			const std::string &password);
+		const std::string &password);
 private:
 	void getAuthHandler();
 	void readPrivileges(int index, std::set<std::string> &result);
-- 
cgit v1.2.3