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

MrB*_*art 2 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"));
        }
Run Code Online (Sandbox Code Playgroud)

Joj*_*dmo 5

您可以简单地使用translateAltranateColorCodes. 这是一个例子:

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

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

String coloredText = translateAlternateColorCodes('$', nonColoredText);
Run Code Online (Sandbox Code Playgroud)

因此,如果$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
Run Code Online (Sandbox Code Playgroud)

它将把它放入 中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"
Run Code Online (Sandbox Code Playgroud)

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