Fixed null pointer exception in ConnectionService if player logged out before zoning in

This commit is contained in:
Obique
2015-05-16 21:31:25 -05:00
committed by Obique
parent 68dfa9403f
commit 77032db1fe
+15 -9
View File
@@ -162,17 +162,11 @@ public class ConnectionService extends Service {
}
private void logOut(Player p) {
PlayerObject playerObject = p.getPlayerObject();
int currentTime = playerObject.getPlayTime();
int startTime = playerObject.getStartPlayTime();
int deltaTime = (int) ((System.currentTimeMillis()) - startTime);
int newTotalTime = currentTime + (int) TimeUnit.MILLISECONDS.toSeconds(deltaTime);
playerObject.setPlayTime(newTotalTime);
updatePlayTime(p);
if (p.getPlayerState() != PlayerState.LOGGED_OUT)
System.out.println("[" + p.getUsername() +"] Logged out " + p.getCharacterName());
p.getPlayerObject().setFlagBitmask(PlayerFlags.LD);
if (p.getPlayerObject() != null)
p.getPlayerObject().setFlagBitmask(PlayerFlags.LD);
p.setPlayerState(PlayerState.LOGGED_OUT);
disappearPlayers.add(p);
updateService.schedule(disappearRunnable, (long) DISAPPEAR_THRESHOLD, TimeUnit.MILLISECONDS);
@@ -188,4 +182,16 @@ public class ConnectionService extends Service {
new CloseConnectionIntent(player.getConnectionId(), player.getNetworkId(), reason).broadcast();
}
private void updatePlayTime(Player p) {
PlayerObject playerObject = p.getPlayerObject();
if (playerObject == null)
return;
int currentTime = playerObject.getPlayTime();
int startTime = playerObject.getStartPlayTime();
int deltaTime = (int) ((System.currentTimeMillis()) - startTime);
int newTotalTime = currentTime + (int) TimeUnit.MILLISECONDS.toSeconds(deltaTime);
playerObject.setPlayTime(newTotalTime);
}
}