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

时间:2016-12-07 21:14:29

标签: java yaml minecraft bukkit

我对Bukkit的配置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!

错误是:

http://pastebin.com/8AdA5Xe1(这么久)

2 个答案:

答案 0 :(得分:1)

您要做的是从 END_OBJ * ln97xEndLoad ... DRV_LOG (DRV_DEBUG_LOAD, "Done loading ln97x...\n", 1, 2, 3, 4, 5, 6); /** add to save END_OBJ* */ if (ln97EndLoaded endObj; ln97EndLoaded++; } /** end add */ return (&pDrvCtrl->endObj); ... 文件中获取字符串,然后您需要将%player%替换为播放器的名称或显示名称。

这样的事情会起作用;

config.yml

你也可以使用这个单行:

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())); 替换为有效的播放器。

关于你的错误:

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

player

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

答案 1 :(得分:1)

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

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