summaryrefslogtreecommitdiff
path: root/builtin/client/chatcommands.lua
diff options
context:
space:
mode:
Diffstat (limited to 'builtin/client/chatcommands.lua')
-rw-r--r--builtin/client/chatcommands.lua65
1 files changed, 65 insertions, 0 deletions
diff --git a/builtin/client/chatcommands.lua b/builtin/client/chatcommands.lua
new file mode 100644
index 000000000..2b8cc4acd
--- /dev/null
+++ b/builtin/client/chatcommands.lua
@@ -0,0 +1,65 @@
+-- Minetest: builtin/client/chatcommands.lua
+
+
+core.register_on_sending_chat_messages(function(message)
+ if message:sub(1,2) == ".." then
+ return false
+ end
+
+ local first_char = message:sub(1,1)
+ if first_char == "/" or first_char == "." then
+ core.display_chat_message(core.gettext("issued command: ") .. message)
+ end
+
+ if first_char ~= "." then
+ return false
+ end
+
+ local cmd, param = string.match(message, "^%.([^ ]+) *(.*)")
+ param = param or ""
+
+ if not cmd then
+ core.display_chat_message(core.gettext("-!- Empty command"))
+ return true
+ end
+
+ local cmd_def = core.registered_chatcommands[cmd]
+ if cmd_def then
+ core.set_last_run_mod(cmd_def.mod_origin)
+ local _, message = cmd_def.func(param)
+ if message then
+ core.display_chat_message(message)
+ end
+ else
+ core.display_chat_message(core.gettext("-!- Invalid command: ") .. cmd)
+ end
+
+ return true
+end)
+
+core.register_chatcommand("list_players", {
+ description = core.gettext("List online players"),
+ func = function(param)
+ local players = table.concat(core.get_player_names(), ", ")
+ core.display_chat_message(core.gettext("Online players: ") .. players)
+ end
+})
+
+core.register_chatcommand("disconnect", {
+ description = core.gettext("Exit to main menu"),
+ func = function(param)
+ core.disconnect()
+ end,
+})
+
+core.register_chatcommand("clear_chat_queue", {
+ description = core.gettext("Clear the out chat queue"),
+ func = function(param)
+ core.clear_out_chat_queue()
+ return true, core.gettext("The out chat queue is now empty")
+ end,
+})
+
+function core.run_server_chatcommand(cmd, param)
+ core.send_chat_message("/" .. cmd .. " " .. param)
+end