我正在尝试用他已保存的朋友向玩家发送消息。这些朋友保存在.yml文件中,但只保存在每个玩家的UUIDS中。
我正在尝试替换UUID或在显示消息时将其转换为玩家名称(如果有意义的话)
CODE:
p.sendMessage("§7▄▄▄▄▄▄▄▄▄▄▄▄§aFriend System - page 1 of 1§7▄▄▄▄▄▄▄▄▄▄▄▄");
int i = 1;
int length = cfg.getList(p.getUniqueId() + ".Friends").size();
if (length != 0)
{
while (i <= length)
{
String uuid = (String)cfg.getList(p.getUniqueId() + ".Friends").get(i - 1);
ProxiedPlayer p2 = ProxyServer.getInstance().getPlayer(UUID.fromString(uuid));
if (p2 != null)
{
TextComponent prefix = new TextComponent(Main.prefix);
TextComponent join = new TextComponent("§a§lONLINE");
prefix.addExtra("§9" + p2.getName());
prefix.addExtra(" ");
prefix.addExtra(join);
p.sendMessage(prefix);
}
else
{
String name = getNamebyUUID(uuid);
if (name != null)
{
p.sendMessage(Main.prefix + "§9" + name + " §c§lOFFLINE");
Main.names.put(uuid, name);
}
else if (Main.names.containsKey(uuid))
{
p.sendMessage(Main.prefix + "§9" + (String)Main.names.get(uuid) + " §8[§c§lOFFLINE§8]");
}
else
{
p.sendMessage(Main.prefix + "§cThis is not a valid player!");
}
}
i++;
}
}
else
{
p.sendMessage(Main.prefix + "§cYou don't have any friends.");
}
}
catch (IOException e)
{
e.printStackTrace();
}
}
答案 0 :(得分:1)
相关问题:Get Offline Player by UUID
如果播放器在线:
String playerUUID;
Bukkit.getPlayer(playerUUID).getDisplayName();
如果播放器离线:
不太可能。玩家可以随时更改名称,Bukkit无法保留该信息,并在更改时随时更新所有玩家的名称。 您可以使用上面的在线播放器方法,也可以将播放器的名称与uuid一起存储。
<强> @UPDATE 强>
正如用户 Pokechu22 所述,Bukkit会保存用户在注销前使用的最后名称。它可以通过这种方式检索:
OfflinePlayer off = Bukkit.getOfflinePlayer(String uuid);
String lastKnownName = off.getName();
但要小心!它可能不是播放器的最新名称。