Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/389.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java bukkit-如何在config.yml上使用变量?_Java_Yaml_Minecraft_Bukkit - Fatal编程技术网

Java bukkit-如何在config.yml上使用变量?

Java bukkit-如何在config.yml上使用变量?,java,yaml,minecraft,bukkit,Java,Yaml,Minecraft,Bukkit,我对Bukkit的config API非常陌生,所以我有一个问题:如何在YAML文件上设置一个字符串,其中包含表示播放机的%player%之类的内容(例如,当有人使用一个包含可以配置的发送方名称的命令时的广播)。如何将sender.getDisplayName()解析为config.yml中的%player% 我现在的代码是: String message = core.getConfig().getString("message"); //Get the message from the co

我对Bukkit的config API非常陌生,所以我有一个问题:如何在YAML文件上设置一个字符串,其中包含表示播放机的%player%之类的内容(例如,当有人使用一个包含可以配置的发送方名称的命令时的广播)。如何将sender.getDisplayName()解析为config.yml中的%player%

我现在的代码是:

String message = core.getConfig().getString("message"); //Get the message from the config file
            message = message.replace("%player%", player.getDisplayName()); //Replace %player% with the player's name.
            ChatColor.translateAlternateColorCodes('&', message);
            Bukkit.broadcastMessage(message);
我的config.yml是:

message: &6%player% just launched the cow party!
错误是:


(很长)

您要做的是从
config.yml
文件中获取字符串,然后需要将%player%替换为播放器的名称或显示名称

像这样的事情会奏效

String message = getConfig().getString("path.to.string"); //Get the message from the config file
message = message.replace("%player%", player.getName()); //Replace %player% with the player's name.
ChatColor.translateAlternateColorCodes('&', message); //Translate colors to color codes
player.sendMessage(message); //Send the message
您也可以使用此一行:

player.sendMessage(ChatColor.translateAlternateColorCodes('&', getConfig().getString("path.to.message").replace("%player%", player.getName()));
当然,您需要将
播放器
替换为有效的播放器

关于你的错误:

您需要在邮件周围加上引号(“),所以请更改

message: &6%player% just launched the cow party!
进入


我认为更好的参数调用解决方案,不仅应该通过替换它来使用特定的参数,因为长期解决方案应该是这样的,并且str表示为yaml中的参数:

ChatColor.translateAlternateColorCodes('&', str.replace(StringUtils.substringBetween(str, "%", "%"), msg_config.getString(StringUtils.substringBetween(str, "%", "%"))).replace("%",""));

使用字符串替换方法,更好地解释您的问题我还应该说什么?我想告诉代码config.yaml字符串中的%player%是sender.getDisplayName()@Kerooker你写问题的方式,我根本不明白你想说什么,将逻辑分步骤进行,这会让其他人更容易阅读和理解,并在将来进行维护。如果你愿意,我可以为你编辑你的帖子。哦,谢谢!我会测试它,然后接受答案,谢谢you@bramhaag我该怎么使用它呢使用该方法替换颜色代码(&C)?
ChatColor.translateAlternateColorCodes('&', str.replace(StringUtils.substringBetween(str, "%", "%"), msg_config.getString(StringUtils.substringBetween(str, "%", "%"))).replace("%",""));