2017-01-26 87 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一起存儲。

@UPDATE

如前所述用戶Pokechu22,Bukkit並保存最後名註銷之前使用的用戶。它可以這樣檢索:

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

但要小心!它可能不是最新的玩家名字。


+1

Bukkit存儲玩家的最後一個已知名稱。如果它更改爲脫機狀態,則無法獲取_current_名稱(除非您從mojang API手動請求它),但是您可以使用「OfflinePlayer.getName」獲取最後一個已知名稱。 (只是,你不能使用'getDisplayName')。 – Pokechu22

+0

這是真的!更新了我的答案。謝謝! – Kerooker