我正在尝试使用Spigot的Message.yml生成一个YAMLConfiguration文件。这是我的密码:
public static void create() {
if(messagesFile.exists()) return;
try {
messagesFile.createNewFile();
messages.options().copyDefaults(true);
messages.addDefault("MESSAGES.PREFIX", "&c[YourServer] ");
messages.addDefault("MESSAGES.DESIGN", "§8§l- ");
messages.addDefault("MESSAGES.NOPERMS", "§c§lDazu hast du keine Rechte!");
messages.addDefault("MESSAGES.ADDMAP.USAGE", "§c§lBitte nutze /addmap [mapname]!");
messages.save(messagesFile);
} catch(Exception e) {
e.printStackTrace();
}
}但是,运行后收到的config.yml文件如下所示:
MESSAGES:
PREFIX: '&c[YourServer] '
DESIGN: "\xa78\xa7l- "
NOPERMS: "\xa7c\xa7lDazu hast du keine Rechte!"
ADDMAP:
USAGE: "\xa7c\xa7lBitte nutze /addmap [mapname]!"有办法解决吗?
发布于 2022-08-21 09:32:56
发布于 2022-08-28 09:55:46
是的,你用特殊的字符来保存颜色,但这是一个字符串。不要把你的颜色放在这里,只需保存绳子。例如,当您想要从配置中重新发送文本时。
player.sendMessage(ChatColor.RED + config.get("MESSAGES.PREFIX"));这只是一个例子
发布于 2022-08-29 14:08:11
正如@Min克拉夫特在他的回答中说的那样,问题是Java将§识别为字符串的一部分,并将其转换为unicode。
我要做的是将您的自定义配置文件存储在您的插件资源目录中,其中包含您希望它已经定义的所有默认值。
然后,当您想使用自定义消息时,使用getConfig()的返回值的方法从配置文件中获取它。然后,如果您想要支持颜色代码,则应该使用message = ChatColor.translateAlternateColorCodes('&', yourMessage);或其他类似的方法。应该足够了。
另外,确保并为这些颜色代码使用统一的符号(默认值是&),但是您可以在前面提到的方法translateAlternativeColorCodes()中设置它。你似乎在使用&或§,我会坚持-。
资料来源:https://www.spigotmc.org/wiki/config-files/#using-custom-configurations https://hub.spigotmc.org/javadocs/bukkit/org/bukkit/ChatColor.html#translateAlternateColorCodes(char,java.lang.String)
https://stackoverflow.com/questions/73429897
复制相似问题