我想为我的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"));
}
答案 0 :(得分:4)
您只需使用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"
然后可以将该消息发送给玩家,它会相应地显示出来并且色彩鲜艳!
答案 1 :(得分:1)
当谈到Bukkit时,我经常做的就是去essentials文件服务器并查看他们的代码以了解他们是如何做到的。
答案 2 :(得分:1)
您可以使用字符串构建器执行此操作:
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();
}
}
}
答案 3 :(得分:1)
试试这个
player.sendMessage(getConfig().getString(ChatColor.<Your color in caps>"MemberText"));
在您的服务器上,安装Colored Texts并使用&amp;链接颜色