Lua API: Add register_on_chatcommand to SSM and CSM (#7862)
Allows catching a chatcommand call just after the command and the parameters are parsed but before its existence is checked and before the corresponding function is run. Returning `true` from a callback function will prevent default handling of the command leaving mods to handle the command manually.master
parent
0750047919
commit
7d3641021b
|
@ -23,6 +23,11 @@ core.register_on_sending_chat_message(function(message)
|
||||||
return true
|
return true
|
||||||
end
|
end
|
||||||
|
|
||||||
|
-- Run core.registered_on_chatcommand callbacks.
|
||||||
|
if core.run_callbacks(core.registered_on_chatcommand, 5, cmd, param) then
|
||||||
|
return true
|
||||||
|
end
|
||||||
|
|
||||||
local cmd_def = core.registered_chatcommands[cmd]
|
local cmd_def = core.registered_chatcommands[cmd]
|
||||||
if cmd_def then
|
if cmd_def then
|
||||||
core.set_last_run_mod(cmd_def.mod_origin)
|
core.set_last_run_mod(cmd_def.mod_origin)
|
||||||
|
|
|
@ -63,6 +63,7 @@ core.registered_on_mods_loaded, core.register_on_mods_loaded = make_registration
|
||||||
core.registered_on_shutdown, core.register_on_shutdown = make_registration()
|
core.registered_on_shutdown, core.register_on_shutdown = make_registration()
|
||||||
core.registered_on_receiving_chat_message, core.register_on_receiving_chat_message = make_registration()
|
core.registered_on_receiving_chat_message, core.register_on_receiving_chat_message = make_registration()
|
||||||
core.registered_on_sending_chat_message, core.register_on_sending_chat_message = make_registration()
|
core.registered_on_sending_chat_message, core.register_on_sending_chat_message = make_registration()
|
||||||
|
core.registered_on_chatcommand, core.register_on_chatcommand = make_registration()
|
||||||
core.registered_on_death, core.register_on_death = make_registration()
|
core.registered_on_death, core.register_on_death = make_registration()
|
||||||
core.registered_on_hp_modification, core.register_on_hp_modification = make_registration()
|
core.registered_on_hp_modification, core.register_on_hp_modification = make_registration()
|
||||||
core.registered_on_damage_taken, core.register_on_damage_taken = make_registration()
|
core.registered_on_damage_taken, core.register_on_damage_taken = make_registration()
|
||||||
|
|
|
@ -58,6 +58,11 @@ core.register_on_chat_message(function(name, message)
|
||||||
|
|
||||||
param = param or ""
|
param = param or ""
|
||||||
|
|
||||||
|
-- Run core.registered_on_chatcommands callbacks.
|
||||||
|
if core.run_callbacks(core.registered_on_chatcommands, 5, name, cmd, param) then
|
||||||
|
return true
|
||||||
|
end
|
||||||
|
|
||||||
local cmd_def = core.registered_chatcommands[cmd]
|
local cmd_def = core.registered_chatcommands[cmd]
|
||||||
if not cmd_def then
|
if not cmd_def then
|
||||||
core.chat_send_player(name, "-!- Invalid command: " .. cmd)
|
core.chat_send_player(name, "-!- Invalid command: " .. cmd)
|
||||||
|
|
|
@ -584,6 +584,7 @@ core.unregister_biome = make_wrap_deregistration(core.register_biome,
|
||||||
core.clear_registered_biomes, core.registered_biomes)
|
core.clear_registered_biomes, core.registered_biomes)
|
||||||
|
|
||||||
core.registered_on_chat_messages, core.register_on_chat_message = make_registration()
|
core.registered_on_chat_messages, core.register_on_chat_message = make_registration()
|
||||||
|
core.registered_on_chatcommands, core.register_on_chatcommand = make_registration()
|
||||||
core.registered_globalsteps, core.register_globalstep = make_registration()
|
core.registered_globalsteps, core.register_globalstep = make_registration()
|
||||||
core.registered_playerevents, core.register_playerevent = make_registration()
|
core.registered_playerevents, core.register_playerevent = make_registration()
|
||||||
core.registered_on_mods_loaded, core.register_on_mods_loaded = make_registration()
|
core.registered_on_mods_loaded, core.register_on_mods_loaded = make_registration()
|
||||||
|
|
|
@ -109,6 +109,10 @@ core.register_on_sending_chat_message(function(message)
|
||||||
return false
|
return false
|
||||||
end)
|
end)
|
||||||
|
|
||||||
|
core.register_on_chatcommand(function(command, params)
|
||||||
|
print("[PREVIEW] caught command '"..command.."'. Parameters: '"..params.."'")
|
||||||
|
end)
|
||||||
|
|
||||||
-- This is an example function to ensure it's working properly, should be removed before merge
|
-- This is an example function to ensure it's working properly, should be removed before merge
|
||||||
core.register_on_hp_modification(function(hp)
|
core.register_on_hp_modification(function(hp)
|
||||||
print("[PREVIEW] HP modified " .. hp)
|
print("[PREVIEW] HP modified " .. hp)
|
||||||
|
|
|
@ -686,6 +686,11 @@ Call these functions only at load time!
|
||||||
* Adds definition to minetest.registered_chatcommands
|
* Adds definition to minetest.registered_chatcommands
|
||||||
* `minetest.unregister_chatcommand(name)`
|
* `minetest.unregister_chatcommand(name)`
|
||||||
* Unregisters a chatcommands registered with register_chatcommand.
|
* Unregisters a chatcommands registered with register_chatcommand.
|
||||||
|
* `minetest.register_on_chatcommand(function(command, params))`
|
||||||
|
* Called always when a chatcommand is triggered, before `minetest.registered_chatcommands`
|
||||||
|
is checked to see if that the command exists, but after the input is parsed.
|
||||||
|
* Return `true` to mark the command as handled, which means that the default
|
||||||
|
handlers will be prevented.
|
||||||
* `minetest.register_on_death(function())`
|
* `minetest.register_on_death(function())`
|
||||||
* Called when the local player dies
|
* Called when the local player dies
|
||||||
* `minetest.register_on_hp_modification(function(hp))`
|
* `minetest.register_on_hp_modification(function(hp))`
|
||||||
|
|
|
@ -4606,6 +4606,11 @@ Call these functions only at load time!
|
||||||
* Called always when a player says something
|
* Called always when a player says something
|
||||||
* Return `true` to mark the message as handled, which means that it will
|
* Return `true` to mark the message as handled, which means that it will
|
||||||
not be sent to other players.
|
not be sent to other players.
|
||||||
|
* `minetest.register_on_chatcommand(function(name, command, params))`
|
||||||
|
* Called always when a chatcommand is triggered, before `minetest.registered_chatcommands`
|
||||||
|
is checked to see if the command exists, but after the input is parsed.
|
||||||
|
* Return `true` to mark the command as handled, which means that the default
|
||||||
|
handlers will be prevented.
|
||||||
* `minetest.register_on_player_receive_fields(function(player, formname, fields))`
|
* `minetest.register_on_player_receive_fields(function(player, formname, fields))`
|
||||||
* Called when the server received input from `player` in a formspec with
|
* Called when the server received input from `player` in a formspec with
|
||||||
the given `formname`. Specifically, this is called on any of the
|
the given `formname`. Specifically, this is called on any of the
|
||||||
|
|
|
@ -214,3 +214,6 @@ minetest.register_chatcommand("test_place_nodes", {
|
||||||
end,
|
end,
|
||||||
})
|
})
|
||||||
|
|
||||||
|
core.register_on_chatcommand(function(name, command, params)
|
||||||
|
minetest.log("caught command '"..command.."', issued by '"..name.."'. Parameters: '"..params.."'")
|
||||||
|
end)
|
||||||
|
|
Loading…
Reference in New Issue