Warn if you register replacements after commands

This commit is contained in:
Aikar
2017-05-20 12:27:59 -04:00
parent e79912299f
commit e2132fef84
3 changed files with 18 additions and 1 deletions
@@ -101,6 +101,11 @@ public class BukkitCommandManager extends CommandManager {
return completions;
}
@Override
public boolean hasRegisteredCommands() {
return !registeredCommands.isEmpty();
}
@Override
public void registerCommand(BaseCommand command) {
final String plugin = this.plugin.getName().toLowerCase();
@@ -32,7 +32,7 @@ import java.util.Map;
public abstract class CommandManager {
protected Map<String, RootCommand> rootCommands = new HashMap<>();
protected CommandReplacements replacements = new CommandReplacements();
protected CommandReplacements replacements = new CommandReplacements(this);
/**
* Gets the command contexts manager
@@ -66,6 +66,7 @@ public abstract class CommandManager {
* @return boolean
*/
public abstract void registerCommand(BaseCommand command);
public abstract boolean hasRegisteredCommands();
public abstract TimingManager getTimings();
@@ -32,6 +32,12 @@ import java.util.regex.Pattern;
* Manages replacement template strings
*/
public class CommandReplacements {
private final CommandManager manager;
CommandReplacements(CommandManager manager) {
this.manager = manager;
}
private final Map<String, Map.Entry<Pattern, String>> replacements = new LinkedHashMap<>();
public void addReplacements(String... replacements) {
@@ -44,6 +50,11 @@ public class CommandReplacements {
}
public String addReplacement(String key, String val) {
if (this.manager.hasRegisteredCommands()) {
ACFLog.severe("You are registering replacements after you have registered your commands!");
ACFLog.severe("This is not allowed, and this replacement (" + key + ") will not work for any previously registered command.");
}
key = ACFPatterns.PERCENTAGE.matcher(key.toLowerCase()).replaceAll("");
Pattern pattern = Pattern.compile("%" + Pattern.quote(key) + "\\b", Pattern.CASE_INSENSITIVE);