将玩家的UUID替换为玩家的名字

时间:2017-01-26 20:45:45

标签: minecraft

我正在尝试用他已保存的朋友向玩家发送消息。这些朋友保存在.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();
        }
      }

1 个答案:

答案 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();

但要小心!它可能不是播放器的最新名称。