From 75ceb9987ca524fa091763b8104e307ba1138349 Mon Sep 17 00:00:00 2001 From: Obique PSWG Date: Fri, 9 Sep 2016 09:41:10 -0500 Subject: [PATCH] Added cleanup intent so that creatureobject is not null during PE_DISAPPEAR --- src/resources/player/PlayerEvent.java | 3 ++- src/services/galaxy/ConnectionService.java | 4 +++- src/services/objects/ObjectAwareness.java | 2 ++ src/services/player/PlayerManager.java | 2 +- 4 files changed, 8 insertions(+), 3 deletions(-) diff --git a/src/resources/player/PlayerEvent.java b/src/resources/player/PlayerEvent.java index 544c84f19..d5c7d838f 100644 --- a/src/resources/player/PlayerEvent.java +++ b/src/resources/player/PlayerEvent.java @@ -36,5 +36,6 @@ public enum PlayerEvent { PE_ZONE_IN_SERVER, PE_LOGGED_OUT, PE_DISAPPEAR, - PE_SERVER_KICKED + PE_SERVER_KICKED, + PE_DESTROYED } diff --git a/src/services/galaxy/ConnectionService.java b/src/services/galaxy/ConnectionService.java index 1fe308634..9403ce35a 100644 --- a/src/services/galaxy/ConnectionService.java +++ b/src/services/galaxy/ConnectionService.java @@ -245,7 +245,9 @@ public class ConnectionService extends Service { else removeFromLists(p); p.setPlayerState(PlayerState.DISCONNECTED); - new PlayerEventIntent(p, PlayerEvent.PE_DISAPPEAR).broadcast(); + Intent i = new PlayerEventIntent(p, PlayerEvent.PE_DISAPPEAR); + new PlayerEventIntent(p, PlayerEvent.PE_DESTROYED).broadcastAfterIntent(i); + i.broadcast(); } private void disconnect(Player player, DisconnectReason reason) { diff --git a/src/services/objects/ObjectAwareness.java b/src/services/objects/ObjectAwareness.java index 79e23eb95..06174744e 100644 --- a/src/services/objects/ObjectAwareness.java +++ b/src/services/objects/ObjectAwareness.java @@ -121,6 +121,8 @@ public class ObjectAwareness extends Service { switch (pei.getEvent()) { case PE_DISAPPEAR: moveToLocation(creature, creature.getParent(), null); + break; + case PE_DESTROYED: creature.setOwner(null); break; case PE_ZONE_IN_SERVER: diff --git a/src/services/player/PlayerManager.java b/src/services/player/PlayerManager.java index e2716f74f..6105d4e94 100644 --- a/src/services/player/PlayerManager.java +++ b/src/services/player/PlayerManager.java @@ -236,7 +236,7 @@ public class PlayerManager extends Manager { private void onPlayerEventIntent(PlayerEventIntent pei) { synchronized (players) { - if (pei.getEvent() == PlayerEvent.PE_DISAPPEAR) { + if (pei.getEvent() == PlayerEvent.PE_DESTROYED) { Player p = pei.getPlayer(); if (p.getPlayerState() == PlayerState.DISCONNECTED) { players.remove(p.getNetworkId());