Implement Chat Formatting per platform

This commit is contained in:
Aikar
2017-06-27 00:24:05 -04:00
parent 2e493fcb49
commit cd109eb266
17 changed files with 250 additions and 45 deletions
@@ -23,21 +23,23 @@
package co.aikar.commands;
import net.md_5.bungee.api.ChatColor;
import net.md_5.bungee.api.CommandSender;
import net.md_5.bungee.api.chat.TextComponent;
import net.md_5.bungee.api.connection.ProxiedPlayer;
public class BungeeCommandIssuer implements CommandIssuer{
private final BungeeCommandManager manager;
private final CommandSender sender;
BungeeCommandIssuer(CommandSender sender) {
BungeeCommandIssuer(BungeeCommandManager manager, CommandSender sender) {
this.manager = manager;
this.sender = sender;
}
@Override
public <T> T getIssuer() {
//noinspection unchecked
return (T) sender;
}
@@ -48,14 +50,8 @@ public class BungeeCommandIssuer implements CommandIssuer{
@Override
public void sendMessage(MessageType type, String message) {
switch (type) {
case ERROR:
case SYNTAX:
sender.sendMessage(new TextComponent(ChatColor.RED + ACFBungeeUtil.color(message)));
break;
default:
sender.sendMessage(new TextComponent(ChatColor.YELLOW + ACFBungeeUtil.color(message)));
}
message = format(manager, type, message);
sender.sendMessage(new TextComponent(ACFBungeeUtil.color(message)));
}
@Override
@@ -24,6 +24,7 @@
package co.aikar.commands;
import co.aikar.commands.apachecommonslang.ApacheCommonsExceptionUtil;
import net.md_5.bungee.api.ChatColor;
import net.md_5.bungee.api.CommandSender;
import net.md_5.bungee.api.plugin.Command;
import net.md_5.bungee.api.plugin.Plugin;
@@ -46,6 +47,9 @@ 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.SYNTAX, new BungeeMessageFormatter(ChatColor.YELLOW, ChatColor.GREEN, ChatColor.WHITE));
this.formatters.put(MessageType.INFO, new BungeeMessageFormatter(ChatColor.BLUE, ChatColor.DARK_GREEN, ChatColor.GREEN));
}
public Plugin getPlugin() {
@@ -97,7 +101,7 @@ public class BungeeCommandManager extends CommandManager {
if (!(issuer instanceof CommandSender)) {
throw new IllegalArgumentException(issuer.getClass().getName() + " is not a Command Issuer.");
}
return new BungeeCommandIssuer((CommandSender) issuer);
return new BungeeCommandIssuer(this, (CommandSender) issuer);
}
@Override
@@ -107,6 +111,7 @@ public class BungeeCommandManager extends CommandManager {
@Override
public <R extends CommandExecutionContext> R createCommandContext(RegisteredCommand command, Parameter parameter, CommandIssuer sender, List<String> args, int i, Map<String, Object> passedArgs) {
//noinspection unchecked
return (R) new BungeeCommandExecutionContext(command, parameter, sender, args, i, passedArgs);
}
@@ -0,0 +1,35 @@
package co.aikar.commands;
import net.md_5.bungee.api.ChatColor;
public class BungeeMessageFormatter implements MessageFormatter {
private final ChatColor color1;
private final ChatColor color2;
private final ChatColor color3;
public BungeeMessageFormatter(ChatColor color1) {
this(color1, color1);
}
public BungeeMessageFormatter(ChatColor color1, ChatColor color2) {
this(color1, color2, color2);
}
public BungeeMessageFormatter(ChatColor color1, ChatColor color2, ChatColor color3) {
this.color1 = color1;
this.color2 = color2;
this.color3 = color3;
}
@Override
public String c1(String message) {
return color1 + message;
}
@Override
public String c2(String message) {
return color2 + message;
}
@Override
public String c3(String message) {
return color3 + message;
}
}
@@ -77,7 +77,7 @@ public class BungeeRootCommand extends Command implements RootCommand, TabExecut
@Override
public void execute(CommandSender sender, String[] args) {
execute(new BungeeCommandIssuer(sender), getName(), args);
execute(new BungeeCommandIssuer(manager, sender), getName(), args);
}
private void execute(CommandIssuer sender, String commandLabel, String[] args) {
@@ -95,7 +95,7 @@ public class BungeeRootCommand extends Command implements RootCommand, TabExecut
@Override
public Iterable<String> onTabComplete(CommandSender commandSender, String[] strings) {
return onTabComplete(new BungeeCommandIssuer(commandSender), getName(), strings);
return onTabComplete(new BungeeCommandIssuer(manager, commandSender), getName(), strings);
}
private List<String> onTabComplete(CommandIssuer sender, String alias, String[] args) throws IllegalArgumentException {