]> git.lizzy.rs Git - dragonfireclient.git/blobdiff - builtin/chatcommands.lua
minetest.register_on_player_receive_fields()
[dragonfireclient.git] / builtin / chatcommands.lua
index eaafe9ee855da374c8523e410a25ecb46c5cc8ce..f9715d92c62751bb11e0cd232be77fe8c8fa00f1 100644 (file)
@@ -41,7 +41,7 @@ end)
 --
 
 -- Register C++ commands without functions
-minetest.register_chatcommand("me", {params = nil, description = "chat action (eg. /me orders a pizza)"})
+minetest.register_chatcommand("me", {params = nil, description = "chat action (eg. /me orders a pizza)", privs = {shout=true}})
 minetest.register_chatcommand("status", {description = "print server status line"})
 minetest.register_chatcommand("shutdown", {params = "", description = "shutdown server", privs = {server=true}})
 minetest.register_chatcommand("clearobjects", {params = "", description = "clear all objects in world", privs = {server=true}})
@@ -193,12 +193,27 @@ minetest.register_chatcommand("setpassword", {
        description = "set given password",
        privs = {password=true},
        func = function(name, param)
-               if param == "" then
-                       minetest.chat_send_player(name, "Password field required")
+               local toname, raw_password = string.match(param, "^([^ ]+) +(.+)$")
+               if not toname then
+                       toname = string.match(param, "^([^ ]+) *$")
+                       raw_password = nil
+               end
+               if not toname then
+                       minetest.chat_send_player(name, "Name field required")
                        return
                end
-               minetest.set_player_password(name, param)
-               minetest.chat_send_player(name, "Password set")
+               local actstr = "?"
+               if not raw_password then
+                       minetest.set_player_password(toname, "")
+                       actstr = "cleared"
+               else
+                       minetest.set_player_password(toname, minetest.get_password_hash(toname, raw_password))
+                       actstr = "set"
+               end
+               minetest.chat_send_player(name, "Password of player \""..toname.."\" "..actstr)
+               if toname ~= name then
+                       minetest.chat_send_player(toname, "Your password was "..actstr.." by "..name)
+               end
        end,
 })
 minetest.register_chatcommand("clearpassword", {
@@ -206,8 +221,13 @@ minetest.register_chatcommand("clearpassword", {
        description = "set empty password",
        privs = {password=true},
        func = function(name, param)
-               minetest.set_player_password(name, '')
-               minetest.chat_send_player(name, "Password cleared")
+               toname = param
+               if not toname then
+                       minetest.chat_send_player(toname, "Name field required")
+                       return
+               end
+               minetest.set_player_password(toname, '')
+               minetest.chat_send_player(name, "Password of player \""..toname.."\" cleared")
        end,
 })
 
@@ -351,3 +371,20 @@ minetest.register_chatcommand("set", {
        end,
 })
 
+minetest.register_chatcommand("mods", {
+       params = "",
+       description = "lists mods installed on the server",
+       privs = {},
+       func = function(name, param)
+               local response = ""
+               local modnames = minetest.get_modnames()
+               for i, mod in ipairs(modnames) do
+                       response = response .. mod
+                       -- Add space if not at the end
+                       if i ~= #modnames then
+                               response = response .. " "
+                       end
+               end
+               minetest.chat_send_player(name, response)
+       end,
+})
\ No newline at end of file