Java 在Bukkit config.yml中为字符串添加颜色代码翻译
我正在尝试为我的插件添加颜色支持,当我这样做时,它工作了,但我在它的左侧得到了一个奇怪的符号。(). 这是我的密码:Java 在Bukkit config.yml中为字符串添加颜色代码翻译,java,plugins,colors,bukkit,Java,Plugins,Colors,Bukkit,我正在尝试为我的插件添加颜色支持,当我这样做时,它工作了,但我在它的左侧得到了一个奇怪的符号。(). 这是我的密码: public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) { if(sender instanceof Player) { Player player = (Player)sender;
public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args)
{
if(sender instanceof Player)
{
Player player = (Player)sender;
if(player.hasPermission("di.use"))
{
if(label.equalsIgnoreCase("di"))
{
if(args.length == 0)
{
///////////////////////////////////////////////////////
player.sendMessage(ChatColor.DARK_GRAY+""+ChatColor.BOLD + "+" + ChatColor.AQUA+""+ChatColor.BOLD + "---------------" + ChatColor.GREEN+""+ChatColor.BOLD + "[" + ChatColor.YELLOW+""+ChatColor.BOLD + "DonationInfo" + ChatColor.GREEN+""+ChatColor.BOLD + "]" + ChatColor.AQUA+""+ChatColor.BOLD + "--------------" + ChatColor.DARK_GRAY+""+ChatColor.BOLD + "+");
player.sendMessage(ChatColor.AQUA+""+ChatColor.BOLD + "/di" + ChatColor.DARK_AQUA+""+ChatColor.BOLD+ " Spinel " + ChatColor.BLUE+""+ChatColor.BOLD + " - " + ChatColor.AQUA+""+ChatColor.BOLD + "Spinel Donation Info");
player.sendMessage(ChatColor.AQUA+""+ChatColor.BOLD + "/di" + ChatColor.DARK_BLUE+""+ChatColor.BOLD+ " Sapphire " + ChatColor.BLUE+""+ChatColor.BOLD + " - " + ChatColor.AQUA+""+ChatColor.BOLD + "Sapphire Donation Info");
player.sendMessage(ChatColor.AQUA+""+ChatColor.BOLD + "/di" + ChatColor.RED+""+ChatColor.BOLD+ " Ruby " + ChatColor.BLUE+""+ChatColor.BOLD + " - " + ChatColor.AQUA+""+ChatColor.BOLD + "Ruby Donation Info");
player.sendMessage(ChatColor.AQUA+""+ChatColor.BOLD + "/di" + ChatColor.LIGHT_PURPLE+""+ChatColor.BOLD+ " Amethyst " + ChatColor.BLUE+""+ChatColor.BOLD + " - " + ChatColor.AQUA+""+ChatColor.BOLD + "Amethyst Donation Info");
player.sendMessage(ChatColor.DARK_GRAY+""+ChatColor.BOLD + "+" + ChatColor.AQUA+""+ChatColor.BOLD + "-----------------------------------------" + ChatColor.DARK_GRAY+""+ChatColor.BOLD + "+");
return true;
//////////////////////////////////////////////////////
}
}
}else{
player.sendMessage(ChatColor.RED + "Your do not have permissions to use this command!");
}
if(args[0].equalsIgnoreCase("Spinel"))
{String a = getConfig().getString("Spinel");
String coloredText = ChatColor.translateAlternateColorCodes('§', a);
///////////////////////////////////////////////////////////
player.sendMessage(coloredText);
return true;
///////////////////////////////////////////////////////////
}
if(args[0].equalsIgnoreCase("Sapphire"))
{String b = getConfig().getString("Sapphire");
String coloredText = ChatColor.translateAlternateColorCodes('§', b);
///////////////////////////////////////////////////////////
player.sendMessage(coloredText);
return true;
///////////////////////////////////////////////////////////
}
if(args[0].equalsIgnoreCase("Ruby"))
{String c = getConfig().getString("Ruby");
String coloredText = ChatColor.translateAlternateColorCodes('§', c);
///////////////////////////////////////////////////////////
player.sendMessage(coloredText);
return true;
///////////////////////////////////////////////////////////
}
if(args[0].equalsIgnoreCase("Amethyst"))
{String d = getConfig().getString("Amethyst");
String coloredText = ChatColor.translateAlternateColorCodes('§', d);
///////////////////////////////////////////////////////////
player.sendMessage(coloredText);
return true;
///////////////////////////////////////////////////////////
}
if(player.hasPermission("di.admin"))
{
if(args[0].equalsIgnoreCase("reload"))
{
this.reloadConfig();
//////////////////////////////////////////////////////////
player.sendMessage(ChatColor.AQUA+""+ChatColor.BOLD+"[Donation_Info]" + ChatColor.DARK_AQUA+""+ChatColor.BOLD + " || " + ChatColor.AQUA+""+ChatColor.BOLD + "Plugin reloaded!");
//////////////////////////////////////////////////////////
}
}
}
请帮帮我。谢谢。首先,我想指出这是
Java
。Bukkit插件是用Java
编码的。Java之于JavaScript就像汽车之于胡萝卜。。。您的代码不是JavaScript
无论如何,您的代码不能正常工作的原因是您不能为Minecraft使用§
符号,因为Minecraft不允许使用所有特殊字符,因此当您尝试使用它翻译颜色代码时,它确实工作,但§
不会被删除,而是被Å
替换
如果要翻译备用颜色代码,可以使用ChatColor.translateAlternetColorCodes(Char,String)
。比如说,你想让一条信息变成绿色,让信息显示为Hi。您可以使用:
String toTranslate = "&4Donation 1";
String translated = ChatColor.translateAlternetColorCodes('&', toTranslate);
翻译后的字符串将变成ChatColor.DARK\u RED+“捐赠1”
您可以将第一行代码的参数中的&
更改为任何其他字符,例如,您可以使用$
。如果您使用了$
,则$4Donation 1
还会显示一条暗红色消息,表示“嗨”。但是,不能使用§
符号和其他一些特殊字符来翻译颜色代码
以下是颜色代码的完整列表:
如果出于某种原因确实需要使用§§
符号,您可以通过执行以下操作侥幸逃脱:
String toTranslate = "§4Donation 1";
String translated = ChatColor.translateAlternetColorCodes('§', toTranslate)
String final = translated.replaceAll("Å", "") //replace the special characters with nothing, but keep the color
上面的方法可能有效,但我不推荐,因为它有点凌乱,你必须UTF-8
(这并不坏),而且创建§
符号比创建&
符号要困难得多;我相信minecraft自己会使用特殊字符解析颜色代码
如果不是符号§
,则只需使用translateAlternateColorCodes(…)
否则,Jodmo解释得很好。?您是否阅读了ChatColor.translateAlternateColorCodes的说明?