diff --git a/bukkit/src/main/java/co/aikar/commands/BukkitCommandManager.java b/bukkit/src/main/java/co/aikar/commands/BukkitCommandManager.java index 5f633d0c..9891b625 100644 --- a/bukkit/src/main/java/co/aikar/commands/BukkitCommandManager.java +++ b/bukkit/src/main/java/co/aikar/commands/BukkitCommandManager.java @@ -91,7 +91,7 @@ public class BukkitCommandManager extends CommandManager { ACFUtil.sneaky(e); } this.commandMap = commandMap; - this.formatters.put(MessageType.ERROR, new BukkitMessageFormatter(ChatColor.RED, ChatColor.YELLOW, ChatColor.RED)); + this.formatters.put(MessageType.ERROR, defaultFormatter = new BukkitMessageFormatter(ChatColor.RED, ChatColor.YELLOW, ChatColor.RED)); this.formatters.put(MessageType.SYNTAX, new BukkitMessageFormatter(ChatColor.YELLOW, ChatColor.GREEN, ChatColor.WHITE)); this.formatters.put(MessageType.INFO, new BukkitMessageFormatter(ChatColor.BLUE, ChatColor.DARK_GREEN, ChatColor.GREEN)); Bukkit.getPluginManager().registerEvents(new ACFBukkitListener(plugin), plugin); diff --git a/bungee/src/main/java/co/aikar/commands/BungeeCommandManager.java b/bungee/src/main/java/co/aikar/commands/BungeeCommandManager.java index 2d942db5..997b75a2 100644 --- a/bungee/src/main/java/co/aikar/commands/BungeeCommandManager.java +++ b/bungee/src/main/java/co/aikar/commands/BungeeCommandManager.java @@ -48,7 +48,7 @@ public class BungeeCommandManager extends CommandManager { public BungeeCommandManager(Plugin plugin) { this.plugin = plugin; - this.formatters.put(MessageType.ERROR, new BungeeMessageFormatter(ChatColor.RED, ChatColor.YELLOW, ChatColor.RED)); + this.formatters.put(MessageType.ERROR, defaultFormatter = new BungeeMessageFormatter(ChatColor.RED, ChatColor.YELLOW, ChatColor.RED)); this.formatters.put(MessageType.SYNTAX, new BungeeMessageFormatter(ChatColor.YELLOW, ChatColor.GREEN, ChatColor.WHITE)); this.formatters.put(MessageType.INFO, new BungeeMessageFormatter(ChatColor.BLUE, ChatColor.DARK_GREEN, ChatColor.GREEN)); } diff --git a/core/src/main/java/co/aikar/commands/CommandManager.java b/core/src/main/java/co/aikar/commands/CommandManager.java index 379cdc2c..eb78b056 100644 --- a/core/src/main/java/co/aikar/commands/CommandManager.java +++ b/core/src/main/java/co/aikar/commands/CommandManager.java @@ -43,6 +43,7 @@ public abstract class CommandManager { protected ExceptionHandler defaultExceptionHandler = null; protected Set supportedLanguages = Sets.newHashSet(Locale.ENGLISH); protected Map formatters = new IdentityHashMap<>(); + protected MessageFormatter defaultFormatter; { MessageFormatter plain = new MessageFormatter() { @Override @@ -50,6 +51,7 @@ public abstract class CommandManager { return message; } }; + defaultFormatter = plain; getLocales().addMessageBundles("acf-core"); formatters.put(MessageType.INFO, plain); formatters.put(MessageType.SYNTAX, plain); @@ -165,6 +167,14 @@ public abstract class CommandManager { return result; } + public MessageFormatter getDefaultFormatter() { + return defaultFormatter; + } + + public void setDefaultFormatter(MessageFormatter defaultFormatter) { + this.defaultFormatter = defaultFormatter; + } + public void sendMessage(Object issuerArg, MessageType type, MessageKeyProvider key, String... replacements) { sendMessage(issuerArg, type, key.getMessageKey(), replacements); } @@ -175,10 +185,11 @@ public abstract class CommandManager { if (replacements.length > 0) { message = ACFUtil.replaceStrings(message, replacements); } - MessageFormatter formatter = formatters.get(type); + MessageFormatter formatter = formatters.getOrDefault(type, defaultFormatter); if (formatter != null) { message = formatter.format(message); } + for (String msg : ACFPatterns.NEWLINE.split(message)) { issuer.sendMessageInternal(msg); } diff --git a/sponge/src/main/java/co/aikar/commands/SpongeCommandManager.java b/sponge/src/main/java/co/aikar/commands/SpongeCommandManager.java index 647f7911..429ff945 100644 --- a/sponge/src/main/java/co/aikar/commands/SpongeCommandManager.java +++ b/sponge/src/main/java/co/aikar/commands/SpongeCommandManager.java @@ -54,7 +54,7 @@ public class SpongeCommandManager extends CommandManager { getLocales().addMessageBundles("acf-minecraft", pluginName, pluginName.toLowerCase()); this.commandTiming = Timings.of(plugin, "Commands"); - this.formatters.put(MessageType.ERROR, new SpongeMessageFormatter(TextColors.RED, TextColors.YELLOW, TextColors.RED)); + this.formatters.put(MessageType.ERROR, defaultFormatter = new SpongeMessageFormatter(TextColors.RED, TextColors.YELLOW, TextColors.RED)); this.formatters.put(MessageType.SYNTAX, new SpongeMessageFormatter(TextColors.YELLOW, TextColors.GREEN, TextColors.WHITE)); this.formatters.put(MessageType.INFO, new SpongeMessageFormatter(TextColors.BLUE, TextColors.DARK_GREEN, TextColors.GREEN)); }