diff options
author | LogicParrot <LogicParrot@users.noreply.github.com> | 2016-02-02 21:14:22 +0100 |
---|---|---|
committer | LogicParrot <LogicParrot@users.noreply.github.com> | 2016-02-02 21:14:22 +0100 |
commit | fd91932a8b066aae5d3a697f2fb6af8792230fa4 (patch) | |
tree | b028c686cd26297b6ed226f3bd63931de64bfea6 /src/Bindings/PluginManager.cpp | |
parent | Merge pull request #2908 from marvinkopf/FixMineCartSpeed (diff) | |
parent | Fix TabAutoComplete (diff) | |
download | cuberite-fd91932a8b066aae5d3a697f2fb6af8792230fa4.tar cuberite-fd91932a8b066aae5d3a697f2fb6af8792230fa4.tar.gz cuberite-fd91932a8b066aae5d3a697f2fb6af8792230fa4.tar.bz2 cuberite-fd91932a8b066aae5d3a697f2fb6af8792230fa4.tar.lz cuberite-fd91932a8b066aae5d3a697f2fb6af8792230fa4.tar.xz cuberite-fd91932a8b066aae5d3a697f2fb6af8792230fa4.tar.zst cuberite-fd91932a8b066aae5d3a697f2fb6af8792230fa4.zip |
Diffstat (limited to '')
-rw-r--r-- | src/Bindings/PluginManager.cpp | 22 |
1 files changed, 21 insertions, 1 deletions
diff --git a/src/Bindings/PluginManager.cpp b/src/Bindings/PluginManager.cpp index 4d291f164..bf907b31d 100644 --- a/src/Bindings/PluginManager.cpp +++ b/src/Bindings/PluginManager.cpp @@ -1894,7 +1894,27 @@ void cPluginManager::TabCompleteCommand(const AString & a_Text, AStringVector & // Player doesn't have permission for the command continue; } - a_Results.push_back(itr->first); + + /* Client expects to only get back the last part of a space separated command. + Find the position of the beginning of the last part: + Position of last space + 1 for space separated commands + string::npos + 1 = 0 for commands that are not separated + + Then skip all commands that have too many subcommands. + When the client asks for suggestions for "/time s" + the server must skip all commands that consist of more than 2 words just as + "/time set day". Or in other words, the position of the last space (separator) + in the strings must be equal or string::npos for both. */ + size_t LastSpaceInText = a_Text.find_last_of(' ') + 1; + size_t LastSpaceInSuggestion = itr->first.find_last_of(' ') + 1; + + if (LastSpaceInText != LastSpaceInSuggestion) + { + // Suggestion has more subcommands than a_Text + continue; + } + + a_Results.push_back(itr->first.substr(LastSpaceInSuggestion)); } } |