2017-01-26 7 views
1

저장된 친구와 함께 플레이어에게 메시지를 보내려고합니다. 이 친구들은 .yml 파일에 저장되지만 각 플레이어의 UUIDS에만 저장됩니다.플레이어의 UUID를 플레이어 이름으로 바꾸기

메시지가 표시 될 때 나는 다음 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

Bukkit.getPlayer (UUID) .getDisplayName(); – Kerooker

답변

1

관련 질문 : Get Offline Player by UUID


플레이어가 온라인 인 경우 :


플레이어가 오프라인 경우


String playerUUID; 
Bukkit.getPlayer(playerUUID).getDisplayName(); 
:


하지 속에서의 싸움은 정말 수 있습니다. 플레이어는 언제든지 이름을 변경할 수 있으며 Bukkit은 정보를 유지할 수 없으며 변경 될 때마다 모든 플레이어의 이름을 업데이트합니다. 위의 온라인 플레이어 전용 방법을 사용하거나 uuid와 함께 플레이어 이름을 저장할 수 있습니다.

사용자 Pokechu22에서 언급 한 바와 같이 @UPDATE

, Bukkit은 마지막 이름을 로그 아웃하기 전에 사용하는 사용자를 저장 않습니다. 이 방법으로 검색 할 수 있습니다.

OfflinePlayer off = Bukkit.getOfflinePlayer(String uuid); 
String lastKnownName = off.getName(); 

매우주의하십시오! 플레이어의 최신 이름이 아닐 수도 있습니다.


+1

Bukkit은 플레이어의 마지막으로 알려진 이름을 저장합니다. mojang API에서 수동으로 요청하지 않는 한 변경되면 오프라인 일 때 _current_ 이름을 가져올 수 없지만 'OfflinePlayer.getName'을 사용하여 마지막으로 알려진 이름을 가져올 수 있습니다. (그냥, 당신은'getDisplayName'을 사용할 수 없습니다). – Pokechu22

+0

그건 사실이야! 내 대답이 업데이트되었습니다. 감사! – Kerooker