Add offline player methods

This commit is contained in:
Mike Primm 2012-02-12 23:10:18 -06:00
parent d0e477b3e7
commit 7ce55a3fd3

View File

@ -245,40 +245,63 @@ public class DynmapPlugin extends JavaPlugin implements DynmapAPI {
} }
return null; return null;
} }
@Override
public DynmapPlayer getOfflinePlayer(String name) {
OfflinePlayer op = getServer().getOfflinePlayer(name);
if(op != null) {
return new BukkitPlayer(op);
}
return null;
}
} }
/** /**
* Player access abstraction class * Player access abstraction class
*/ */
public class BukkitPlayer extends BukkitCommandSender implements DynmapPlayer { public class BukkitPlayer extends BukkitCommandSender implements DynmapPlayer {
private Player player; private Player player;
private OfflinePlayer offplayer;
public BukkitPlayer(Player p) { public BukkitPlayer(Player p) {
super(p); super(p);
player = p; player = p;
offplayer = p.getPlayer();
}
public BukkitPlayer(OfflinePlayer p) {
super(null);
offplayer = p;
} }
@Override @Override
public boolean isConnected() { public boolean isConnected() {
return player.isOnline(); return offplayer.isOnline();
} }
@Override @Override
public String getName() { public String getName() {
return player.getName(); return offplayer.getName();
} }
@Override @Override
public String getDisplayName() { public String getDisplayName() {
return player.getDisplayName(); if(player != null)
return player.getDisplayName();
else
return offplayer.getName();
} }
@Override @Override
public boolean isOnline() { public boolean isOnline() {
return player.isOnline(); return offplayer.isOnline();
} }
@Override @Override
public DynmapLocation getLocation() { public DynmapLocation getLocation() {
if(player == null) {
return null;
}
Location loc = player.getLocation(); Location loc = player.getLocation();
return toLoc(loc); return toLoc(loc);
} }
@Override @Override
public String getWorld() { public String getWorld() {
if(player == null) {
return null;
}
World w = player.getWorld(); World w = player.getWorld();
if(w != null) if(w != null)
return w.getName(); return w.getName();
@ -286,28 +309,46 @@ public class DynmapPlugin extends JavaPlugin implements DynmapAPI {
} }
@Override @Override
public InetSocketAddress getAddress() { public InetSocketAddress getAddress() {
return player.getAddress(); if(player != null)
return player.getAddress();
return null;
} }
@Override @Override
public boolean isSneaking() { public boolean isSneaking() {
return player.isSneaking(); if(player != null)
return player.isSneaking();
return false;
} }
@Override @Override
public int getHealth() { public int getHealth() {
return player.getHealth(); if(player != null)
return player.getHealth();
else
return 0;
} }
@Override @Override
public int getArmorPoints() { public int getArmorPoints() {
return Armor.getArmorPoints(player); if(player != null)
return Armor.getArmorPoints(player);
else
return 0;
} }
@Override @Override
public DynmapLocation getBedSpawnLocation() { public DynmapLocation getBedSpawnLocation() {
Location loc = player.getBedSpawnLocation(); Location loc = offplayer.getBedSpawnLocation();
if(loc != null) { if(loc != null) {
return toLoc(loc); return toLoc(loc);
} }
return null; return null;
} }
@Override
public long getLastLoginTime() {
return offplayer.getLastPlayed();
}
@Override
public long getFirstLoginTime() {
return offplayer.getFirstPlayed();
}
} }
/* Handler for generic console command sender */ /* Handler for generic console command sender */
public class BukkitCommandSender implements DynmapCommandSender { public class BukkitCommandSender implements DynmapCommandSender {
@ -319,21 +360,29 @@ public class DynmapPlugin extends JavaPlugin implements DynmapAPI {
@Override @Override
public boolean hasPrivilege(String privid) { public boolean hasPrivilege(String privid) {
return permissions.has(sender, privid); if(sender != null)
return permissions.has(sender, privid);
return false;
} }
@Override @Override
public void sendMessage(String msg) { public void sendMessage(String msg) {
sender.sendMessage(msg); if(sender != null)
sender.sendMessage(msg);
} }
@Override @Override
public boolean isConnected() { public boolean isConnected() {
return true; if(sender != null)
return true;
return false;
} }
@Override @Override
public boolean isOp() { public boolean isOp() {
return sender.isOp(); if(sender != null)
return sender.isOp();
else
return false;
} }
} }