diff options
author | Mattes D <github@xoft.cz> | 2015-05-10 21:46:25 +0200 |
---|---|---|
committer | Mattes D <github@xoft.cz> | 2015-05-10 21:46:25 +0200 |
commit | 6c53abed23011423e95a30d2ad50bbe95aca365e (patch) | |
tree | f454fbd06ecd6c06e772a9a0e3b7f786cf40e8de | |
parent | StringUtils: Fixed StringSplitWithQuotes(). (diff) | |
download | cuberite-6c53abed23011423e95a30d2ad50bbe95aca365e.tar cuberite-6c53abed23011423e95a30d2ad50bbe95aca365e.tar.gz cuberite-6c53abed23011423e95a30d2ad50bbe95aca365e.tar.bz2 cuberite-6c53abed23011423e95a30d2ad50bbe95aca365e.tar.lz cuberite-6c53abed23011423e95a30d2ad50bbe95aca365e.tar.xz cuberite-6c53abed23011423e95a30d2ad50bbe95aca365e.tar.zst cuberite-6c53abed23011423e95a30d2ad50bbe95aca365e.zip |
-rw-r--r-- | MCServer/Plugins/APIDump/Hooks/OnChat.lua | 3 | ||||
-rw-r--r-- | MCServer/Plugins/APIDump/Hooks/OnExecuteCommand.lua | 12 | ||||
-rw-r--r-- | src/Bindings/PluginManager.cpp | 2 |
3 files changed, 14 insertions, 3 deletions
diff --git a/MCServer/Plugins/APIDump/Hooks/OnChat.lua b/MCServer/Plugins/APIDump/Hooks/OnChat.lua index d98df008a..a15d09cc7 100644 --- a/MCServer/Plugins/APIDump/Hooks/OnChat.lua +++ b/MCServer/Plugins/APIDump/Hooks/OnChat.lua @@ -7,7 +7,8 @@ return Desc = [[ A plugin may implement an OnChat() function and register it as a Hook to process chat messages from the players. The function is then called for every in-game message sent from any player. Note that - commands are handled separately using a command framework API. + registered in-game commands are not sent through this hook. Use the + {{OnExecuteCommand|HOOK_EXECUTE_COMMAND}} to intercept registered in-game commands. ]], Params = { { Name = "Player", Type = "{{cPlayer}}", Notes = "The player who sent the message" }, diff --git a/MCServer/Plugins/APIDump/Hooks/OnExecuteCommand.lua b/MCServer/Plugins/APIDump/Hooks/OnExecuteCommand.lua index d7a5d383d..d920a83ba 100644 --- a/MCServer/Plugins/APIDump/Hooks/OnExecuteCommand.lua +++ b/MCServer/Plugins/APIDump/Hooks/OnExecuteCommand.lua @@ -2,7 +2,10 @@ return { HOOK_EXECUTE_COMMAND = { - CalledWhen = "A player executes an in-game command, or the admin issues a console command. Note that built-in console commands are exempt to this hook - they are always performed and the hook is not called.", + CalledWhen = [[ + A player executes an in-game command, or the admin issues a console command. Note that built-in + console commands are exempt to this hook - they are always performed and the hook is not called. + ]], DefaultFnName = "OnExecuteCommand", -- also used as pagename Desc = [[ A plugin may implement a callback for this hook to intercept both in-game commands executed by the @@ -11,7 +14,12 @@ return server.</p> <p> If the command is in-game, the first parameter to the hook function is the {{cPlayer|player}} who's - executing the command. If the command comes from the server console, the first parameter is nil. + executing the command. If the command comes from the server console, the first parameter is nil.</p> + <p> + The server calls this hook even for unregistered (unknown) console commands. However, it doesn't call + the hook for unregistered in-game commands, simply because there's no way to distinguish between a + command and a chat message. If a plugin needs to intercept unknown in-game commands, it should use the + {{OnChat|HOOK_CHAT}} hook. ]], Params = { diff --git a/src/Bindings/PluginManager.cpp b/src/Bindings/PluginManager.cpp index ecb0bec45..7384f43bd 100644 --- a/src/Bindings/PluginManager.cpp +++ b/src/Bindings/PluginManager.cpp @@ -1750,6 +1750,8 @@ bool cPluginManager::ExecuteConsoleCommand(const AStringVector & a_Split, cComma if (cmd == m_ConsoleCommands.end()) { // Command not found + // Still notify the plugins (so that plugins such as Aliases can intercept unknown commands): + CallHookExecuteCommand(nullptr, a_Split, a_Command); return false; } |