Add ability to get a list of all servers

master
HimbeerserverDE 2021-03-17 17:32:04 +01:00
parent 7b8975ebd8
commit 19ea3bf7db
No known key found for this signature in database
GPG Key ID: 1A651504791E6A8B
3 changed files with 17 additions and 1 deletions

View File

@ -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

View File

@ -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

View File

@ -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]