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

时间:2014-02-18 04:19:16

标签: java 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"));
        }

4 个答案:

答案 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文件服务器并查看他们的代码以了解他们是如何做到的。

要点文件服务器位于:http://github.com/essentials/Essentials/tree/2.x

答案 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;链接颜色