Clean up alias handling.

There is no need to print a stacktrace when an alias fails, we do not do
this for normal commands. We also now give error messages when attempting
to register an alias instead of having them just silently not function.
This commit is contained in:
Travis Watkins
2014-02-09 23:16:19 -06:00
parent 18a2a9f5bf
commit fa7b3c26c8
2 changed files with 10 additions and 5 deletions

View File

@@ -257,6 +257,11 @@ public class SimpleCommandMap implements CommandMap {
Map<String, String[]> values = server.getCommandAliases();
for (String alias : values.keySet()) {
if (alias.contains(":") || alias.contains(" ")) {
server.getLogger().warning("Could not register alias " + alias + " because it contains illegal characters");
continue;
}
String[] commandStrings = values.get(alias);
List<String> targets = new ArrayList<String>();
StringBuilder bad = new StringBuilder();
@@ -275,16 +280,17 @@ public class SimpleCommandMap implements CommandMap {
}
}
if (bad.length() > 0) {
server.getLogger().warning("Could not register alias " + alias + " because it contains commands that do not exist: " + bad);
continue;
}
// We register these as commands so they have absolute priority.
if (targets.size() > 0) {
knownCommands.put(alias.toLowerCase(), new FormattedCommandAlias(alias.toLowerCase(), targets.toArray(new String[targets.size()])));
} else {
knownCommands.remove(alias.toLowerCase());
}
if (bad.length() > 0) {
server.getLogger().warning("The following command(s) could not be aliased under '" + alias + "' because they do not exist: " + bad);
}
}
}
}