我对编码很新。 我已经尝试了所有的东西。我可以想到尝试获取存储在我的配置中的标题列表,以便作为消息发送给播放器,而我尝试过的任何工作都没有。
当前配置设置已引用
players:
player1name:
- title1
- title2
- title3
player2name:
- title1
- title3
调用发送消息代码行
if (args.length == 2) {
try {
// insert code here to display titles list available
// to
// player
Player p = Bukkit.getPlayer(args[1]);
if (p == null) {
sender.sendMessage("Could Not Find Player!!");
return true;
}
Bukkit.broadcastMessage("I got to this point pre- list");
List<String> s = this.Ach.getConfig()
.getStringList("players." + p + "titles");
StringBuilder message = new StringBuilder();
Bukkit.broadcastMessage("I got to this point post message");
for (String players : s) {
message.append(players).append(" - ");
Bukkit.broadcastMessage("I got to this point post for");
sender.sendMessage(message.toString()); // (message.toString());
}
// Set<String> keys =
// this.Ach.getConfig().getConfigurationSection("player."
// + p + "titles").getKeys(false);
// sender.sendMessage(keys + " - ");
Bukkit.broadcastMessage("I got to this point pre return");
return true;}
catch (Exception e) {
e.printStackTrace();
}
之前定义的'Ach'是为了引用我的主类,即在。中定义了配置。
我期望以player1name
作为args[1]
值输出
title1 - title2 - title3 -
使用有效的玩家名称而不是返回玩家拥有的标题,我将被发送到聊天中
[] -
任何帮助将不胜感激。
答案 0 :(得分:0)
您需要遍历所有字符串并在发送消息之前将它们添加到变量中 - 类似于(未经测试的)
StringBuilder message = new StringBuilder();
for (String player : s)
message.append(player).append(" - ");
sender.sendMessage(message.toString());
答案 1 :(得分:0)
Bukkit API还为您提供了使用YamlConfiguration类及其getStringList()方法的选项,您可以在其中将字符串路径发送到所需的列表,然后将列表发送给您。 如果你将它用于该文件,你会想要一个像
这样的行List<String> titlesList = this.Ach.getStringList("players." + sender.getName());
对于那个特定的输出类型,我会使用
sender.sendMessage(titlesList.toString().replace("[", "").replace("]", "").replace(", ", " - ");
您输出该输出的原因是因为您有(ASet + " - ")
。当作为字符串读取时,ASet看起来像[title1, title2]
并且您的集合为空。此外,在它旁边使用短划线根本不会纠正格式;因此我的替换方法。摆脱方括号,逗号和空格,以及你真正想要的东西。