aliases = {} -- http://lua-users.org/wiki/CopyTable function deepcopy(orig) local orig_type = type(orig) local copy if orig_type == 'table' then copy = {} for orig_key, orig_value in next, orig, nil do copy[deepcopy(orig_key)] = deepcopy(orig_value) end setmetatable(copy, deepcopy(getmetatable(orig))) else -- number, string, boolean, etc copy = orig end return copy end -- https://github.com/Uberi/Minetest-WorldEdit/blob/master/worldedit_shortcommands/init.lua -- function alias(short, orig, params) -- -- params = params or "" -- local def = minetest.chatcommands[orig] -- -- minetest.log(params or (orig .. ": no params")) -- minetest.log("verbose", orig) -- -- minetest.debug(orig) -- if params then -- def = deepcopy(def) -- def.params = params -- end -- if not minetest.chatcommands[orig] then -- minetest.log("error", "custom_aliases: original command " .. orig .. " does not exist") -- return true -- end -- if minetest.chatcommands[short] then -- minetest.log("error", "custom_aliases: alias " .. short .. " already exists") -- return true -- end -- -- minetest.register_chatcommand(short, minetest.chatcommands[orig]) -- minetest.register_chatcommand(short, def) -- return false -- end function alias(short, orig, param) aliases[short] = { orig = orig, param = param or "" } end alias("gim", "giveme") alias("grm", "grantme") -- needs to be in minetest game? -- alias("h", "home") alias("sd", "shutdown") alias("t", "teleport") alias("t0", "teleport", "0 0 0") minetest.register_on_chat_message(function(name, message) -- minetest.chat_send_player(name, "Alias") minetest.chat_send_player(name, "Alias") if message:sub(1,1) ~= "/" then return end local cmd, param = string.match(message, "^/([^ ]+) *(.*)") if not cmd then -- minetest.chat_send_player(name, "-!- Empty command") return true end param = param or "" local cmd_def = minetest.registered_chatcommands[cmd] local alias_def = aliases[cmd] if not cmd_def and alias_def then minetest.chat_send_player(name, "Alias " .. cmd .. "= " .. alias_def.orig) cmd_def = minetest.registered_chatcommands[alias_def.orig] if not cmd_def then minetest.chat_send_player(name, "-!- Invalid alias: " .. cmd) return true end local has_privs, missing_privs = minetest.check_player_privs(name, cmd_def.privs) if has_privs then minetest.set_last_run_mod(cmd_def.mod_origin) local success, message = cmd_def.func(name, param) if message then minetest.chat_send_player(name, message) end else minetest.chat_send_player(name, "You don't have permission" .. " to run this command (missing privileges: " .. table.concat(missing_privs, ", ") .. ")") end return true -- Handled chat message end end)