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
This commit is contained in:
eueln 2015-01-13 16:32:04 -06:00
parent 1d4ca46ebe
commit c1752477c7
2 changed files with 15 additions and 10 deletions

View File

@ -10,6 +10,7 @@ import com.massivecraft.factions.struct.Permission;
import com.massivecraft.factions.struct.Relation; import com.massivecraft.factions.struct.Relation;
import com.massivecraft.factions.struct.Role; import com.massivecraft.factions.struct.Role;
import com.massivecraft.factions.util.VisualizeUtil; 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.TL;
import com.massivecraft.factions.zcore.util.TextUtil; import com.massivecraft.factions.zcore.util.TextUtil;
import org.bukkit.Bukkit; import org.bukkit.Bukkit;
@ -50,6 +51,7 @@ public class FactionsPlayerListener implements Listener {
private void initPlayer(Player player) { private void initPlayer(Player player) {
// Make sure that all online players do have a fplayer. // Make sure that all online players do have a fplayer.
final FPlayer me = FPlayers.getInstance().getByPlayer(player); final FPlayer me = FPlayers.getInstance().getByPlayer(player);
((MemoryFPlayer)me).setName(player.getName());
// Update the lastLoginTime for this fplayer // Update the lastLoginTime for this fplayer
me.setLastLoginTime(System.currentTimeMillis()); me.setLastLoginTime(System.currentTimeMillis());

View File

@ -65,6 +65,7 @@ public abstract class MemoryFPlayer implements FPlayer {
protected ChatMode chatMode; protected ChatMode chatMode;
protected String id; protected String id;
protected String name;
protected boolean monitorJoins; protected boolean monitorJoins;
@ -333,11 +334,18 @@ public abstract class MemoryFPlayer implements FPlayer {
} }
public String getName() { public String getName() {
if (isOnline()) { if (this.name == null) {
return getPlayer().getName(); // 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 name;
return player.getName() != null ? player.getName() : getId(); }
public void setName(String name) {
this.name = name;
} }
public String getTag() { public String getTag() {
@ -780,12 +788,7 @@ public abstract class MemoryFPlayer implements FPlayer {
} }
public Player getPlayer() { public Player getPlayer() {
for (Player player : Bukkit.getServer().getOnlinePlayers()) { return Bukkit.getPlayer(UUID.fromString(this.getId()));
if (player.getUniqueId().toString().equals(this.getId())) {
return player;
}
}
return null;
} }
public boolean isOnline() { public boolean isOnline() {