summaryrefslogtreecommitdiffstats
path: root/src/Bindings/PluginManager.cpp
diff options
context:
space:
mode:
authorLogicParrot <LogicParrot@users.noreply.github.com>2016-02-02 21:14:22 +0100
committerLogicParrot <LogicParrot@users.noreply.github.com>2016-02-02 21:14:22 +0100
commitfd91932a8b066aae5d3a697f2fb6af8792230fa4 (patch)
treeb028c686cd26297b6ed226f3bd63931de64bfea6 /src/Bindings/PluginManager.cpp
parentMerge pull request #2908 from marvinkopf/FixMineCartSpeed (diff)
parentFix TabAutoComplete (diff)
downloadcuberite-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.cpp22
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));
}
}