forked from Mirrorlandia_minetest/minetest
Chatcommands: Show the execution time if the command takes a long time (#10472)
This commit is contained in:
parent
051bc9e662
commit
88b052cbea
@ -47,6 +47,8 @@ end
|
|||||||
|
|
||||||
core.chatcommands = core.registered_chatcommands -- BACKWARDS COMPATIBILITY
|
core.chatcommands = core.registered_chatcommands -- BACKWARDS COMPATIBILITY
|
||||||
|
|
||||||
|
local msg_time_threshold =
|
||||||
|
tonumber(core.settings:get("chatcommand_msg_time_threshold")) or 0.1
|
||||||
core.register_on_chat_message(function(name, message)
|
core.register_on_chat_message(function(name, message)
|
||||||
if message:sub(1,1) ~= "/" then
|
if message:sub(1,1) ~= "/" then
|
||||||
return
|
return
|
||||||
@ -73,7 +75,9 @@ core.register_on_chat_message(function(name, message)
|
|||||||
local has_privs, missing_privs = core.check_player_privs(name, cmd_def.privs)
|
local has_privs, missing_privs = core.check_player_privs(name, cmd_def.privs)
|
||||||
if has_privs then
|
if has_privs then
|
||||||
core.set_last_run_mod(cmd_def.mod_origin)
|
core.set_last_run_mod(cmd_def.mod_origin)
|
||||||
|
local t_before = minetest.get_us_time()
|
||||||
local success, result = cmd_def.func(name, param)
|
local success, result = cmd_def.func(name, param)
|
||||||
|
local delay = (minetest.get_us_time() - t_before) / 1000000
|
||||||
if success == false and result == nil then
|
if success == false and result == nil then
|
||||||
core.chat_send_player(name, "-!- "..S("Invalid command usage."))
|
core.chat_send_player(name, "-!- "..S("Invalid command usage."))
|
||||||
local help_def = core.registered_chatcommands["help"]
|
local help_def = core.registered_chatcommands["help"]
|
||||||
@ -83,9 +87,21 @@ core.register_on_chat_message(function(name, message)
|
|||||||
core.chat_send_player(name, helpmsg)
|
core.chat_send_player(name, helpmsg)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
elseif result then
|
else
|
||||||
|
if delay > msg_time_threshold then
|
||||||
|
-- Show how much time it took to execute the command
|
||||||
|
if result then
|
||||||
|
result = result ..
|
||||||
|
minetest.colorize("#f3d2ff", " (%.5g s)"):format(delay)
|
||||||
|
else
|
||||||
|
result = minetest.colorize("#f3d2ff",
|
||||||
|
"Command execution took %.5f s"):format(delay)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
if result then
|
||||||
core.chat_send_player(name, result)
|
core.chat_send_player(name, result)
|
||||||
end
|
end
|
||||||
|
end
|
||||||
else
|
else
|
||||||
core.chat_send_player(name,
|
core.chat_send_player(name,
|
||||||
S("You don't have permission to run this command "
|
S("You don't have permission to run this command "
|
||||||
|
@ -1136,6 +1136,10 @@ enable_rollback_recording (Rollback recording) bool false
|
|||||||
# @name, @message, @timestamp (optional)
|
# @name, @message, @timestamp (optional)
|
||||||
chat_message_format (Chat message format) string <@name> @message
|
chat_message_format (Chat message format) string <@name> @message
|
||||||
|
|
||||||
|
# If the execution of a chat command takes longer than this specified time in
|
||||||
|
# seconds, add the time information to the chat command message
|
||||||
|
chatcommand_msg_time_threshold (Chat command time message threshold) float 0.1
|
||||||
|
|
||||||
# A message to be displayed to all clients when the server shuts down.
|
# A message to be displayed to all clients when the server shuts down.
|
||||||
kick_msg_shutdown (Shutdown message) string Server shutting down.
|
kick_msg_shutdown (Shutdown message) string Server shutting down.
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user