From 41deb15ce99a320d569e53c156cad2bd9aa40832 Mon Sep 17 00:00:00 2001 From: Obique PSWG Date: Wed, 2 Mar 2016 00:36:29 -0600 Subject: [PATCH] Fixed zone in crash --- src/resources/player/PlayerEvent.java | 3 ++- src/services/admin/OnlineInterfaceService.java | 2 +- src/services/chat/ChatRoomService.java | 2 +- src/services/galaxy/ConnectionService.java | 2 +- src/services/galaxy/EnvironmentService.java | 6 +++--- src/services/map/CityService.java | 2 +- src/services/objects/ObjectAwareness.java | 4 +++- src/services/player/ZoneManager.java | 6 +++--- 8 files changed, 15 insertions(+), 12 deletions(-) diff --git a/src/resources/player/PlayerEvent.java b/src/resources/player/PlayerEvent.java index ff1b5546f..544c84f19 100644 --- a/src/resources/player/PlayerEvent.java +++ b/src/resources/player/PlayerEvent.java @@ -32,7 +32,8 @@ public enum PlayerEvent { PE_CONNECTED, PE_CREATE_CHARACTER, PE_FIRST_ZONE, - PE_ZONE_IN, + PE_ZONE_IN_CLIENT, + PE_ZONE_IN_SERVER, PE_LOGGED_OUT, PE_DISAPPEAR, PE_SERVER_KICKED diff --git a/src/services/admin/OnlineInterfaceService.java b/src/services/admin/OnlineInterfaceService.java index d78a347f5..6c5143a41 100644 --- a/src/services/admin/OnlineInterfaceService.java +++ b/src/services/admin/OnlineInterfaceService.java @@ -142,7 +142,7 @@ public class OnlineInterfaceService extends Service implements HttpServerCallbac if (i instanceof PlayerEventIntent) { PlayerEventIntent pei = (PlayerEventIntent) i; switch (pei.getEvent()) { - case PE_ZONE_IN: + case PE_ZONE_IN_CLIENT: data.addOnlinePlayer(pei.getPlayer()); break; case PE_LOGGED_OUT: diff --git a/src/services/chat/ChatRoomService.java b/src/services/chat/ChatRoomService.java index a5afefd2f..8566ff6d5 100644 --- a/src/services/chat/ChatRoomService.java +++ b/src/services/chat/ChatRoomService.java @@ -218,7 +218,7 @@ public class ChatRoomService extends Service { return; switch (intent.getEvent()) { - case PE_ZONE_IN: + case PE_ZONE_IN_CLIENT: enterPlanetaryChatChannels(player); break; case PE_FIRST_ZONE: diff --git a/src/services/galaxy/ConnectionService.java b/src/services/galaxy/ConnectionService.java index df8e68833..64bc7ae47 100644 --- a/src/services/galaxy/ConnectionService.java +++ b/src/services/galaxy/ConnectionService.java @@ -131,7 +131,7 @@ public class ConnectionService extends Service { } break; } - case PE_ZONE_IN: + case PE_ZONE_IN_CLIENT: clearPlayerFlag(pei.getPlayer(), pei.getEvent(), PlayerFlags.LD); break; case PE_LOGGED_OUT: diff --git a/src/services/galaxy/EnvironmentService.java b/src/services/galaxy/EnvironmentService.java index 8f91af6f0..eb782fa26 100644 --- a/src/services/galaxy/EnvironmentService.java +++ b/src/services/galaxy/EnvironmentService.java @@ -74,7 +74,7 @@ public final class EnvironmentService extends Service { weatherForTerrain.put(t, randomWeather()); executor.scheduleAtFixedRate(new WeatherChanger(t), 0, cycleDuration, TimeUnit.SECONDS); } - executor.scheduleAtFixedRate(() -> { updateTime(); }, 0, 30, TimeUnit.SECONDS); + executor.scheduleAtFixedRate(() -> { updateTime(); }, 0, 1, TimeUnit.SECONDS); return super.initialize(); } @@ -101,7 +101,7 @@ public final class EnvironmentService extends Service { if (i instanceof PlayerEventIntent) { PlayerEventIntent pei = (PlayerEventIntent) i; - if(pei.getEvent().equals(PlayerEvent.PE_ZONE_IN)) + if(pei.getEvent().equals(PlayerEvent.PE_ZONE_IN_CLIENT)) handleZoneIn(pei); } } @@ -114,7 +114,7 @@ public final class EnvironmentService extends Service { } private void updateTime() { - ServerTimeMessage stm = new ServerTimeMessage(ProjectSWG.getGalacticTime()); + ServerTimeMessage stm = new ServerTimeMessage((long) (ProjectSWG.getCoreTime()/1E3)); new NotifyPlayersPacketIntent(stm).broadcast(); } diff --git a/src/services/map/CityService.java b/src/services/map/CityService.java index 7c1b0440e..96f5b0458 100644 --- a/src/services/map/CityService.java +++ b/src/services/map/CityService.java @@ -59,7 +59,7 @@ public class CityService extends Service { } else if (i instanceof PlayerEventIntent) { Player player = ((PlayerEventIntent) i).getPlayer(); CreatureObject creature = player.getCreatureObject(); - if (((PlayerEventIntent) i).getEvent() == PlayerEvent.PE_ZONE_IN) { + if (((PlayerEventIntent) i).getEvent() == PlayerEvent.PE_ZONE_IN_CLIENT) { performLocationUpdate(creature, creature.getLocation()); } } diff --git a/src/services/objects/ObjectAwareness.java b/src/services/objects/ObjectAwareness.java index 2a3bf54a8..a4606c184 100644 --- a/src/services/objects/ObjectAwareness.java +++ b/src/services/objects/ObjectAwareness.java @@ -42,6 +42,7 @@ import java.util.Map; import java.util.Set; import network.packets.Packet; +import network.packets.swg.zone.CmdSceneReady; import network.packets.swg.zone.UpdateContainmentMessage; import network.packets.swg.zone.object_controller.DataTransform; import network.packets.swg.zone.object_controller.DataTransformWithParent; @@ -115,9 +116,10 @@ public class ObjectAwareness extends Service { creature.setOwner(null); p.setCreatureObject(null); break; - case PE_ZONE_IN: + case PE_ZONE_IN_SERVER: creature.clearAware(false); update(creature); + p.sendPacket(new CmdSceneReady()); break; default: break; diff --git a/src/services/player/ZoneManager.java b/src/services/player/ZoneManager.java index 26e35f5e6..045e00d08 100644 --- a/src/services/player/ZoneManager.java +++ b/src/services/player/ZoneManager.java @@ -150,7 +150,7 @@ public class ZoneManager extends Manager { sendCommitHistory(player); sendMessageOfTheDay(player); } - new PlayerEventIntent(player, PlayerEvent.PE_ZONE_IN).broadcast(); + new PlayerEventIntent(player, PlayerEvent.PE_ZONE_IN_CLIENT).broadcast(); } private void startScene(CreatureObject object, Location newLocation) { @@ -166,7 +166,7 @@ public class ZoneManager extends Manager { if (parent != null) recursiveCreateObject(parent, p); else - obj.createObject(p); + obj.createObject(p, true); } private void loadCommitHistory() { @@ -251,8 +251,8 @@ public class ZoneManager extends Manager { } private void handleCmdSceneReady(Player player, CmdSceneReady p) { + new PlayerEventIntent(player, PlayerEvent.PE_ZONE_IN_SERVER).broadcast(); player.setPlayerState(PlayerState.ZONED_IN); - player.sendPacket(p); System.out.println("[" + player.getUsername() +"] " + player.getCharacterName() + " zoned in"); Log.i("ZoneService", "%s with character %s zoned in from %s:%d", player.getUsername(), player.getCharacterName(), p.getAddress(), p.getPort()); }