为Bukkit插件添加颜色代码支持



我想为我的config.yml添加颜色代码支持。如何将translateAlternateColorCode正确添加到代码中?

public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
Player  player = (Player) sender;
if(cmd.getName().equalsIgnoreCase("member")) {
player.sendMessage(getConfig().getString("MemberText"));
}

您可以简单地使用translateAltranateColorCodes。这里有一个例子:

String nonColoredText = getConfig().getString("MemberText"); //get the raw string from "MemberText"
String coloredText = translateAlternateColorCodes('&', nonColoredText); //translate alt color codes

以上操作会将任何以&符号开头的文本更改为其正确的颜色代码。例如,如果配置中有&a,它会将其更改为绿色或ChatColor.GREEN,使消息显示为绿色。这也适用于其他角色。就像如果你想用$符号来表示颜色代码一样,你可以这样做:

String coloredText = translateAlternateColorCodes('$', nonColoredText);

因此,如果在上面的代码中输入$a,它将转换为ChatColor.GREEN,使文本变为绿色。

第一个代码所做的是,它从MemberText下的配置文件中获取字符串,并将其放在字符串nonColoredText中,然后,它翻译备用颜色代码,从&开始,并将它放在coloredText中。然后你可以将coloredText发送给玩家,或者用它做其他事情。

一个简短的例子是,如果以下内容在MemberText下:

&a Welcome to My Server, &b I hope you have a great time! &e &l Check out the rules a /warp rules

它会把它放在nonColoredText中,coloredText会把它翻译成:

ChatColor.GREEN + "Welcome to My Server," + ChatColor.AQUA + "I hope you have a great time!" + ChatColor.YELLOW + ChatColor.BOLD + "Check out the rules a /warp rules"

然后,该消息可以发送给玩家,它会相应地显示出来,并且丰富多彩!

您可以使用字符串生成器来完成此操作:

private String buildText(String text) {
sb = new StringBuilder();
String[] textarray = text.split(" ");
for (String chunk : textArray) {
if (chunk.contains("&")) {
if (chunk.equalsIgnoreCase("&black"))
sb.append(ChatColor.BLACK);
else if (chunk.equalsIgnoreCase("&blue"))
sb.append(ChatColor.DARK_BLUE);
else if (chunk.equalsIgnoreCase("&green"))
sb.append(ChatColor.DARK_GREEN);
else if (chunk.equalsIgnoreCase("&white"))
sb.append(ChatColor.WHITE);
.....
return sb.toString();
}
}
}

当谈到Bukkit时,我总是要做的事情是转到基本文件服务器,查看他们的代码,看看他们是如何做到的。

基本文件服务器在这里:http://github.com/essentials/Essentials/tree/2.x

试试这个

player.sendMessage(getConfig().getString(ChatColor.<Your color in caps>"MemberText"));

在您的服务器上,安装彩色文本并使用&链接彩色

最新更新