summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMattes D <github@xoft.cz>2015-05-10 21:46:25 +0200
committerMattes D <github@xoft.cz>2015-05-10 21:46:25 +0200
commit6c53abed23011423e95a30d2ad50bbe95aca365e (patch)
treef454fbd06ecd6c06e772a9a0e3b7f786cf40e8de
parentStringUtils: Fixed StringSplitWithQuotes(). (diff)
downloadcuberite-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.lua3
-rw-r--r--MCServer/Plugins/APIDump/Hooks/OnExecuteCommand.lua12
-rw-r--r--src/Bindings/PluginManager.cpp2
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;
}