From c1752477c7395c17d8c6db7749e6471fa98693e3 Mon Sep 17 00:00:00 2001 From: eueln Date: Tue, 13 Jan 2015 16:32:04 -0600 Subject: [PATCH] Save last-known FPlayer names Instead of performing a lookup each time FPlayer#getName() is called, save the player's name as s/he logs in --- .../listeners/FactionsPlayerListener.java | 2 ++ .../factions/zcore/persist/MemoryFPlayer.java | 23 +++++++++++-------- 2 files changed, 15 insertions(+), 10 deletions(-) diff --git a/src/main/java/com/massivecraft/factions/listeners/FactionsPlayerListener.java b/src/main/java/com/massivecraft/factions/listeners/FactionsPlayerListener.java index e6389515..6b22d474 100644 --- a/src/main/java/com/massivecraft/factions/listeners/FactionsPlayerListener.java +++ b/src/main/java/com/massivecraft/factions/listeners/FactionsPlayerListener.java @@ -10,6 +10,7 @@ import com.massivecraft.factions.struct.Permission; import com.massivecraft.factions.struct.Relation; import com.massivecraft.factions.struct.Role; import com.massivecraft.factions.util.VisualizeUtil; +import com.massivecraft.factions.zcore.persist.MemoryFPlayer; import com.massivecraft.factions.zcore.util.TL; import com.massivecraft.factions.zcore.util.TextUtil; import org.bukkit.Bukkit; @@ -50,6 +51,7 @@ public class FactionsPlayerListener implements Listener { private void initPlayer(Player player) { // Make sure that all online players do have a fplayer. final FPlayer me = FPlayers.getInstance().getByPlayer(player); + ((MemoryFPlayer)me).setName(player.getName()); // Update the lastLoginTime for this fplayer me.setLastLoginTime(System.currentTimeMillis()); diff --git a/src/main/java/com/massivecraft/factions/zcore/persist/MemoryFPlayer.java b/src/main/java/com/massivecraft/factions/zcore/persist/MemoryFPlayer.java index e57406a9..f4588eb1 100644 --- a/src/main/java/com/massivecraft/factions/zcore/persist/MemoryFPlayer.java +++ b/src/main/java/com/massivecraft/factions/zcore/persist/MemoryFPlayer.java @@ -65,6 +65,7 @@ public abstract class MemoryFPlayer implements FPlayer { protected ChatMode chatMode; protected String id; + protected String name; protected boolean monitorJoins; @@ -333,11 +334,18 @@ public abstract class MemoryFPlayer implements FPlayer { } public String getName() { - if (isOnline()) { - return getPlayer().getName(); + if (this.name == null) { + // Older versions of FactionsUUID don't save the name, + // so `name` will be null the first time it's retrieved + // after updating + OfflinePlayer offline = Bukkit.getOfflinePlayer(UUID.fromString(getId())); + this.name = offline.getName() != null ? offline.getName() : getId(); } - OfflinePlayer player = Bukkit.getOfflinePlayer(UUID.fromString(getId())); - return player.getName() != null ? player.getName() : getId(); + return name; + } + + public void setName(String name) { + this.name = name; } public String getTag() { @@ -780,12 +788,7 @@ public abstract class MemoryFPlayer implements FPlayer { } public Player getPlayer() { - for (Player player : Bukkit.getServer().getOnlinePlayers()) { - if (player.getUniqueId().toString().equals(this.getId())) { - return player; - } - } - return null; + return Bukkit.getPlayer(UUID.fromString(this.getId())); } public boolean isOnline() {