diff --git a/README.md b/README.md index 935e43f..657a002 100644 --- a/README.md +++ b/README.md @@ -86,7 +86,13 @@ Description: Bans a player, can only use name if the player is online target: Name or IP address to unban Description: Unbans a player ``` -> `multiserver.send_msg = function(msg)` +> `multiserver.get_servers(callback)` +``` +callback: Callback function (params: srvs) +Description: Returns an indexed table containing all server names +to the callback function +``` +> `multiserver.send_msg(msg)` ``` msg: Message to send Description: Sends a message to all other minetest servers diff --git a/functions.lua b/functions.lua index 7b75f3d..d80475e 100644 --- a/functions.lua +++ b/functions.lua @@ -55,6 +55,10 @@ multiserver.unban = function(target) multiserver.do_rpc("<-UNBAN " .. target, nil) end +multiserver.get_servers = function(cb) + multiserver.do_rpc("<-GETSRVS", cb) +end + multiserver.send_msg = function(msg) multiserver.do_rpc("<-MT2MT " .. msg, nil) end diff --git a/rpc.lua b/rpc.lua index 6fb2851..bec07c1 100644 --- a/rpc.lua +++ b/rpc.lua @@ -31,6 +31,12 @@ minetest.register_on_modchannel_message(function(channel_name, sender, msg) p = msg:split(" ")[3] elseif cmd == "->ISBANNED" then p = multiserver.tobool(msg:split(" ")[3]) + elseif cmd == "->SRVS" then + p = {} + local t = minetest.string_to_privs(msg:split(" ")[3] or "") + for k in pairs(t) do + table.insert(p, k) + end elseif cmd == "->JOIN" then local name = msg:split(" ")[3] local srv = msg:split(" ")[4]