2017-01-26 4 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(); 

Playerはオフラインの場合:


ないtrully可能。プレーヤーはいつでも名前を変更することができ、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

関連する問題