diff --git a/ngengine_public.jar b/ngengine_public.jar index 80997511..e4e1b8b7 100644 Binary files a/ngengine_public.jar and b/ngengine_public.jar differ diff --git a/src/main/NGECore.java b/src/main/NGECore.java index cc87338e..9461f7df 100644 --- a/src/main/NGECore.java +++ b/src/main/NGECore.java @@ -35,6 +35,7 @@ import java.util.concurrent.ThreadPoolExecutor; import java.util.concurrent.TimeUnit; import org.apache.mina.core.service.IoHandler; +import org.apache.mina.core.session.IoSession; import protocol.swg.ChatSystemMessage; import net.engio.mbassy.bus.config.BusConfiguration; @@ -112,7 +113,7 @@ public class NGECore { private volatile boolean isShuttingDown = false; - private ConcurrentHashMap clients = new ConcurrentHashMap(); + private ConcurrentHashMap clients = new ConcurrentHashMap(); // Database @@ -451,7 +452,7 @@ public class NGECore { public int getActiveClients() { int connections = 0; - for (Map.Entry c : clients.entrySet()) { + for (Map.Entry c : clients.entrySet()) { if(c.getValue().getSession() != null) { if (c.getValue().getSession().isConnected()) { connections++; @@ -463,7 +464,7 @@ public class NGECore { public int getActiveZoneClients() { int connections = 0; - for (Map.Entry c : clients.entrySet()) { + for (Map.Entry c : clients.entrySet()) { if(c.getValue().getSession() != null) { if (c.getValue().getSession().isConnected() && c.getValue().getParent() != null) { connections++; @@ -474,23 +475,23 @@ public class NGECore { } - public Client getClient(int connectionID) { - return clients.get(connectionID); + public Client getClient(IoSession session) { + return clients.get(session); } - public ConcurrentHashMap getActiveConnectionsMap() { + public ConcurrentHashMap getActiveConnectionsMap() { return clients; } /* * --------------- Other methods for services --------------- */ - public void addClient(Integer connectionID, Client client) { - clients.put(connectionID, client); + public void addClient(IoSession session, Client client) { + clients.put(session, client); } - public void removeClient(Integer connectionID) { - clients.remove(connectionID); + public void removeClient(IoSession session) { + clients.remove(session); } // for python scripts diff --git a/src/services/CharacterService.java b/src/services/CharacterService.java index fa0c8463..c9fc5897 100644 --- a/src/services/CharacterService.java +++ b/src/services/CharacterService.java @@ -132,7 +132,7 @@ public class CharacterService implements INetworkDispatch { @Override public void handlePacket(IoSession session, IoBuffer data) throws Exception { - Client client = core.getClient((Integer) session.getAttribute("connectionId")); + Client client = core.getClient(session); data = data.order(ByteOrder.LITTLE_ENDIAN); data.position(0); ClientVerifyAndLockNameRequest message = new ClientVerifyAndLockNameRequest(); @@ -209,7 +209,7 @@ public class CharacterService implements INetworkDispatch { } int galaxyId = config.getInt("GALAXY_ID"); - Client client = core.getClient((Integer) session.getAttribute("connectionId")); + Client client = core.getClient(session); try { if (client == null || checkForDuplicateName(getfirstName(clientCreateCharacter.getName(), clientCreateCharacter.getRaceTemplate()), client.getAccountId())) { diff --git a/src/services/ConnectionService.java b/src/services/ConnectionService.java index ef84dbc0..e201ad73 100644 --- a/src/services/ConnectionService.java +++ b/src/services/ConnectionService.java @@ -78,7 +78,7 @@ public class ConnectionService implements INetworkDispatch { synchronized(core.getActiveConnectionsMap()) { for(Client c : core.getActiveConnectionsMap().values()) { if(c.getParent() != null) { - if ((System.currentTimeMillis() - c.getSession().getLastReadTime()) > 300000) { + if ((System.currentTimeMillis() - c.getSession().getLastReadTime()) > 300000 && c.getSession().getAttribute("disconnectTask") == null) { disconnect(c.getSession()); } } @@ -86,73 +86,8 @@ public class ConnectionService implements INetworkDispatch { } } - public void disconnect(IoSession session) { - Client client = core.getClient((Integer) session.getAttribute("connectionId")); - - if(client == null) - return; - - if(client.getParent() == null) - return; - - CreatureObject object = (CreatureObject) client.getParent(); - object.setInviteCounter(0); - object.setInviteSenderId(0); - object.setInviteSenderName(""); - object.setClient(null); - PlayerObject ghost = (PlayerObject) object.getSlottedObject("ghost"); - - if(object.getGroupId() != 0) - core.groupService.handleGroupDisband(object); - - Point3D objectPos = object.getWorldPosition(); - - List collidables = core.simulationService.getCollidables(object.getPlanet(), objectPos.x, objectPos.z, 512); - - for(AbstractCollidable collidable : collidables) { - collidables.remove(object); - } - - - if (ghost != null) { - String objectShortName = object.getCustomName(); - - if (object.getCustomName().contains(" ")) { - String[] splitName = object.getCustomName().toLowerCase().split(" "); - objectShortName = splitName[0]; - } - - core.chatService.playerStatusChange(objectShortName, (byte) 0); - } - - session.suspendWrite(); - - boolean remove = core.simulationService.remove(object, object.getPosition().x, object.getPosition().z); - if(remove) - System.out.println("Successful quadtree remove"); - - //if(object.getContainer() == null) { - HashSet oldObservers = new HashSet(object.getObservers()); - for(Iterator it = oldObservers.iterator(); it.hasNext();) { - Client observerClient = it.next(); - if(observerClient.getParent() != null && !(observerClient.getSession() == session)) { - observerClient.getParent().makeUnaware(object); - } - } - //} else { - // object.getContainer().remove(object); - //} - - - object.createTransaction(core.getCreatureODB().getEnvironment()); - core.getCreatureODB().put(object, Long.class, CreatureObject.class, object.getTransaction()); - object.getTransaction().commitSync(); - core.objectService.destroyObject(object); - - core.getActiveConnectionsMap().remove((Integer) session.getAttribute("connectionId")); - } - }, 15, 15, TimeUnit.MINUTES); + }, 10, 10, TimeUnit.MINUTES); } @@ -169,7 +104,7 @@ public class ConnectionService implements INetworkDispatch { data.position(0); clientIdMsg.deserialize(data); - Client client = core.getClient((Integer) session.getAttribute("connectionId")); + Client client = core.getClient(session); if(client == null) { System.out.println("NULL Client"); return; @@ -239,6 +174,80 @@ public class ConnectionService implements INetworkDispatch { } + + public void disconnect(IoSession session) { + Client client = core.getClient(session); + + if(client == null) + return; + + if(client.getParent() == null) + return; + + CreatureObject object = (CreatureObject) client.getParent(); + object.setInviteCounter(0); + object.setInviteSenderId(0); + object.setInviteSenderName(""); + object.setClient(null); + PlayerObject ghost = (PlayerObject) object.getSlottedObject("ghost"); + + if(ghost == null) + return; + + if(object.getGroupId() != 0) + core.groupService.handleGroupDisband(object); + + Point3D objectPos = object.getWorldPosition(); + + List collidables = core.simulationService.getCollidables(object.getPlanet(), objectPos.x, objectPos.z, 512); + + for(AbstractCollidable collidable : collidables) { + collidables.remove(object); + } + + + if (ghost != null) { + String objectShortName = object.getCustomName(); + + if (object.getCustomName().contains(" ")) { + String[] splitName = object.getCustomName().toLowerCase().split(" "); + objectShortName = splitName[0]; + } + + core.chatService.playerStatusChange(objectShortName, (byte) 0); + } + + session.suspendWrite(); + + long parentId = object.getParentId(); + + if(object.getContainer() == null) { + boolean remove = core.simulationService.remove(object, object.getPosition().x, object.getPosition().z); + if(remove) + System.out.println("Successful quadtree remove"); + } else { + object.getContainer()._remove(object); + object.setParentId(parentId); + } + + + HashSet oldObservers = new HashSet(object.getObservers()); + for(Iterator it = oldObservers.iterator(); it.hasNext();) { + Client observerClient = it.next(); + if(observerClient.getParent() != null && !(observerClient.getSession() == session)) { + observerClient.getParent().makeUnaware(object); + } + } + ghost.toggleFlag(PlayerFlags.LD); + + object.setAttachment("disconnectTask", null); + object.createTransaction(core.getCreatureODB().getEnvironment()); + core.getCreatureODB().put(object, Long.class, CreatureObject.class, object.getTransaction()); + object.getTransaction().commitSync(); + core.objectService.destroyObject(object); + + } + @Override public void shutdown() { diff --git a/src/services/EntertainmentService.java b/src/services/EntertainmentService.java index ee40e874..2ada525d 100644 --- a/src/services/EntertainmentService.java +++ b/src/services/EntertainmentService.java @@ -62,7 +62,7 @@ public class EntertainmentService implements INetworkDispatch { Console.println("BUFF_BUILDER_CHANGE RECIEVED"); data.order(ByteOrder.LITTLE_ENDIAN); - Client client = core.getClient((Integer) session.getAttribute("connectionId")); + Client client = core.getClient(session); if(client == null) return; diff --git a/src/services/LoginService.java b/src/services/LoginService.java index 69feda7f..7f6ad1c7 100644 --- a/src/services/LoginService.java +++ b/src/services/LoginService.java @@ -135,7 +135,7 @@ public class LoginService implements INetworkDispatch{ client.setSession(session); client.setGM(checkForGmPermission(id)); - core.addClient((Integer)session.getAttribute("connectionId"), client); + core.addClient(session, client); /*if(!checkIfAccountExistInGameDB(id)) { createAccountForGameDB(id, user, email, encryptPass); @@ -179,7 +179,7 @@ public class LoginService implements INetworkDispatch{ DeleteCharacterMessage packet = new DeleteCharacterMessage(); packet.deserialize(data); - Client client = core.getClient((Integer) session.getAttribute("connectionId")); + Client client = core.getClient(session); PreparedStatement preparedStatement; diff --git a/src/services/MissionService.java b/src/services/MissionService.java index 4eaca9bb..78fce706 100644 --- a/src/services/MissionService.java +++ b/src/services/MissionService.java @@ -67,7 +67,7 @@ public class MissionService implements INetworkDispatch { MissionListRequest request = new MissionListRequest(); request.deserialize(data); - Client client = core.getClient((Integer) session.getAttribute("connectionId")); + Client client = core.getClient(session); if(client == null || client.getSession() == null) return; diff --git a/src/services/PlayerService.java b/src/services/PlayerService.java index edd4a958..8e47b430 100644 --- a/src/services/PlayerService.java +++ b/src/services/PlayerService.java @@ -158,7 +158,7 @@ public class PlayerService implements INetworkDispatch { @Override public void handlePacket(IoSession session, IoBuffer data) throws Exception { - Client c = core.getClient((Integer) session.getAttribute("connectionId")); + Client c = core.getClient(session); ChangeRoleIconChoice packet = new ChangeRoleIconChoice(); PlayerObject player; SWGObject o; @@ -185,7 +185,7 @@ public class PlayerService implements INetworkDispatch { public void handlePacket(IoSession session, IoBuffer data) throws Exception { data.order(ByteOrder.LITTLE_ENDIAN); - Client client = core.getClient((Integer) session.getAttribute("connectionId")); + Client client = core.getClient(session); if (client == null) return; diff --git a/src/services/SimulationService.java b/src/services/SimulationService.java index 2ffe4e83..938fc41c 100644 --- a/src/services/SimulationService.java +++ b/src/services/SimulationService.java @@ -30,6 +30,10 @@ import java.util.List; import java.util.Map; import java.util.Vector; import java.util.concurrent.ConcurrentHashMap; +import java.util.concurrent.Executors; +import java.util.concurrent.ScheduledExecutorService; +import java.util.concurrent.ScheduledFuture; +import java.util.concurrent.TimeUnit; import main.NGECore; @@ -99,8 +103,7 @@ public class SimulationService implements INetworkDispatch { Map> quadTrees; Map> collidableQuadTrees; - - + private final ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(1); private NGECore core; private Map cellMeshes = new ConcurrentHashMap(); @@ -282,7 +285,7 @@ public class SimulationService implements INetworkDispatch { DataTransform dataTransform = new DataTransform(); dataTransform.deserialize(data); //System.out.println("Movement Counter: " + dataTransform.getMovementCounter()); - Client client = core.getClient((Integer) session.getAttribute("connectionId")); + Client client = core.getClient(session); if(client == null) { System.out.println("NULL Client"); @@ -373,7 +376,7 @@ public class SimulationService implements INetworkDispatch { DataTransformWithParent dataTransform = new DataTransformWithParent(); dataTransform.deserialize(data); - Client client = core.getClient((Integer) session.getAttribute("connectionId")); + Client client = core.getClient(session); if(core.objectService.getObject(dataTransform.getCellId()) == null) return; @@ -433,7 +436,7 @@ public class SimulationService implements INetworkDispatch { data = data.order(ByteOrder.LITTLE_ENDIAN); data.position(0); - Client client = core.getClient((Integer) session.getAttribute("connectionId")); + Client client = core.getClient(session); if(client == null) { System.out.println("NULL Client"); @@ -552,8 +555,8 @@ public class SimulationService implements INetworkDispatch { * to bluff and send a disconnect packet when it's not disconnecting * and continues sending packets. */ - public void handleDisconnect(IoSession session) { - Client client = core.getClient((Integer) session.getAttribute("connectionId")); + public void handleDisconnect(final IoSession session) { + Client client = core.getClient(session); if(client == null) return; @@ -562,19 +565,25 @@ public class SimulationService implements INetworkDispatch { return; CreatureObject object = (CreatureObject) client.getParent(); - object.setInviteCounter(0); - object.setInviteSenderId(0); - object.setInviteSenderName(""); - object.setClient(null); PlayerObject ghost = (PlayerObject) object.getSlottedObject("ghost"); - session.suspendWrite(); + //session.suspendWrite(); ghost.toggleFlag(PlayerFlags.LD); object.createTransaction(core.getCreatureODB().getEnvironment()); core.getCreatureODB().put(object, Long.class, CreatureObject.class, object.getTransaction()); object.getTransaction().commitSync(); + + ScheduledFuture disconnectTask = scheduler.schedule(new Runnable() { + @Override + public void run() { + core.connectionService.disconnect(session); + } + }, 5, TimeUnit.MINUTES); + + object.setAttachment("disconnectTask", disconnectTask); + } public void handleZoneIn(Client client) { @@ -929,7 +938,7 @@ public class SimulationService implements INetworkDispatch { public void notifyPlanet(Planet planet, IoBuffer packet) { - ConcurrentHashMap clients = core.getActiveConnectionsMap(); + ConcurrentHashMap clients = core.getActiveConnectionsMap(); for(Client client : clients.values()) { @@ -947,7 +956,7 @@ public class SimulationService implements INetworkDispatch { public void notifyAllClients(IoBuffer packet) { - ConcurrentHashMap clients = core.getActiveConnectionsMap(); + ConcurrentHashMap clients = core.getActiveConnectionsMap(); for(Client client : clients.values()) { diff --git a/src/services/SkillService.java b/src/services/SkillService.java index fe57259c..cccd6734 100644 --- a/src/services/SkillService.java +++ b/src/services/SkillService.java @@ -255,7 +255,7 @@ public class SkillService implements INetworkDispatch { ExpertiseRequestMessage expertise = new ExpertiseRequestMessage(); expertise.deserialize(buffer); - Client client = core.getClient((Integer) session.getAttribute("connectionId")); + Client client = core.getClient(session); if(client == null) { System.out.println("NULL Client"); return; diff --git a/src/services/chat/ChatService.java b/src/services/chat/ChatService.java index a9540675..fd941cd3 100644 --- a/src/services/chat/ChatService.java +++ b/src/services/chat/ChatService.java @@ -178,7 +178,7 @@ public class ChatService implements INetworkDispatch { chatInstantMsg.deserialize(data); String firstName = chatInstantMsg.getRecipient(); - Client client = core.getClient((Integer) session.getAttribute("connectionId")); + Client client = core.getClient(session); if(client == null) return; @@ -222,7 +222,7 @@ public class ChatService implements INetworkDispatch { ChatPersistentMessageToServer packet = new ChatPersistentMessageToServer(); packet.deserialize(data); - Client client = core.getClient((Integer) session.getAttribute("connectionId")); + Client client = core.getClient(session); if(client == null) return; @@ -278,7 +278,7 @@ public class ChatService implements INetworkDispatch { ChatRequestPersistentMessage packet = new ChatRequestPersistentMessage(); packet.deserialize(data); - Client client = core.getClient((Integer) session.getAttribute("connectionId")); + Client client = core.getClient(session); if(client == null) return; @@ -313,7 +313,7 @@ public class ChatService implements INetworkDispatch { ChatDeletePersistentMessage packet = new ChatDeletePersistentMessage(); packet.deserialize(data); - Client client = core.getClient((Integer) session.getAttribute("connectionId")); + Client client = core.getClient(session); if(client == null) return; @@ -336,7 +336,7 @@ public class ChatService implements INetworkDispatch { public void playerStatusChange(String name, byte status) { String shortName = name.toLowerCase(); - ConcurrentHashMap clients = core.getActiveConnectionsMap(); + ConcurrentHashMap clients = core.getActiveConnectionsMap(); for(Client client : clients.values()) { @@ -559,7 +559,7 @@ public class ChatService implements INetworkDispatch { } public SWGObject getObjectByFirstName(String name) { - ConcurrentHashMap clients = core.getActiveConnectionsMap(); + ConcurrentHashMap clients = core.getActiveConnectionsMap(); for(Client client : clients.values()) { if(client.getParent() == null) diff --git a/src/services/command/CommandService.java b/src/services/command/CommandService.java index 99e6f3f9..5c838cd1 100644 --- a/src/services/command/CommandService.java +++ b/src/services/command/CommandService.java @@ -71,7 +71,7 @@ public class CommandService implements INetworkDispatch { public void handlePacket(IoSession session, IoBuffer data) throws Exception { data.order(ByteOrder.LITTLE_ENDIAN); - Client client = core.getClient((Integer) session.getAttribute("connectionId")); + Client client = core.getClient(session); if(client == null) { System.out.println("NULL Client"); diff --git a/src/services/gcw/FactionService.java b/src/services/gcw/FactionService.java index 8a7094ad..bd9c4414 100644 --- a/src/services/gcw/FactionService.java +++ b/src/services/gcw/FactionService.java @@ -195,7 +195,7 @@ public class FactionService implements INetworkDispatch { @Override public void handlePacket(IoSession session, IoBuffer buffer) throws Exception { - Client client = core.getClient((int) session.getAttribute("connectionId")); + Client client = core.getClient(session); if (client == null) { return; diff --git a/src/services/gcw/GCWService.java b/src/services/gcw/GCWService.java index e3b34efb..15a392cc 100644 --- a/src/services/gcw/GCWService.java +++ b/src/services/gcw/GCWService.java @@ -400,7 +400,7 @@ public class GCWService implements INetworkDispatch { GcwRegionsReq gcwRegionsReq = new GcwRegionsReq(); gcwRegionsReq.deserialize(data); - Client client = core.getClient((Integer) session.getAttribute("connectionId")); + Client client = core.getClient(session); if (client == null || client.getSession() == null) { return; diff --git a/src/services/map/MapService.java b/src/services/map/MapService.java index 29a6d1fe..f586cfde 100644 --- a/src/services/map/MapService.java +++ b/src/services/map/MapService.java @@ -78,7 +78,7 @@ public class MapService implements INetworkDispatch { if(planet == null) return;*/ - Client client = core.getClient((Integer) session.getAttribute("connectionId")); + Client client = core.getClient(session); if(client == null || client.getSession() == null) return; diff --git a/src/services/object/ObjectService.java b/src/services/object/ObjectService.java index dafed099..53f357fe 100644 --- a/src/services/object/ObjectService.java +++ b/src/services/object/ObjectService.java @@ -27,6 +27,7 @@ import java.nio.ByteOrder; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; +import java.sql.Statement; import java.util.ArrayList; import java.util.Collections; import java.util.Iterator; @@ -37,6 +38,7 @@ import java.util.Vector; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.Executors; import java.util.concurrent.ScheduledExecutorService; +import java.util.concurrent.ScheduledFuture; import java.util.concurrent.TimeUnit; import java.util.concurrent.atomic.AtomicInteger; import java.util.concurrent.atomic.AtomicLong; @@ -118,8 +120,10 @@ public class ObjectService implements INetworkDispatch { for(SWGObject obj : objectList.values()) { if(obj.getSlottedObject("ghost") != null) { - ((CreatureObject) obj).createTransaction(core.getCreatureODB().getEnvironment()); - core.getCreatureODB().put((CreatureObject) obj, Long.class, CreatureObject.class, ((CreatureObject) obj).getTransaction()); + CreatureObject creature = (CreatureObject) obj; + creature.setAttachment("disconnectTask", null); + creature.createTransaction(core.getCreatureODB().getEnvironment()); + core.getCreatureODB().put(creature, Long.class, CreatureObject.class, creature.getTransaction()); } } @@ -522,7 +526,7 @@ public class ObjectService implements INetworkDispatch { selectCharacter.deserialize(data); long objectId = selectCharacter.getCharacterId(); - Client client = core.getClient((Integer) session.getAttribute("connectionId")); + Client client = core.getClient(session); if(client == null) { System.out.println("NULL Client"); return; @@ -538,10 +542,14 @@ public class ObjectService implements INetworkDispatch { } else { creature = (CreatureObject) getObject(objectId); - if(creature.getClient() != null) - return; } + + if(creature.getAttachment("disconnectTask") != null) { + creature.getAwareObjects().removeAll(creature.getAwareObjects()); + ((ScheduledFuture) creature.getAttachment("disconnectTask")).cancel(true); + creature.setAttachment("disconnectTask", null); + } creature.setClient(client); Planet planet = core.terrainService.getPlanetByID(creature.getPlanetId()); diff --git a/src/services/sui/SUIService.java b/src/services/sui/SUIService.java index 83064609..95498f9b 100644 --- a/src/services/sui/SUIService.java +++ b/src/services/sui/SUIService.java @@ -103,7 +103,7 @@ public class SUIService implements INetworkDispatch { ObjectMenuSelectMessage objMenuSelect = new ObjectMenuSelectMessage(); objMenuSelect.deserialize(data); - Client client = core.getClient((Integer) session.getAttribute("connectionId")); + Client client = core.getClient(session); if(client == null || client.getSession() == null) return; @@ -135,7 +135,7 @@ public class SUIService implements INetworkDispatch { if(window == null) return; - Client client = core.getClient((Integer) session.getAttribute("connectionId")); + Client client = core.getClient(session); if(client == null || client.getSession() == null) return; diff --git a/src/services/trade/TradeService.java b/src/services/trade/TradeService.java index b8fe8c60..d1bd7b26 100644 --- a/src/services/trade/TradeService.java +++ b/src/services/trade/TradeService.java @@ -114,7 +114,7 @@ public class TradeService implements INetworkDispatch{ data.order(ByteOrder.LITTLE_ENDIAN); data.position(0); - Client client = core.getClient((Integer) session.getAttribute("connectionId")); + Client client = core.getClient(session); if (client == null) return; @@ -185,7 +185,7 @@ public class TradeService implements INetworkDispatch{ AddItemMessage addItem = new AddItemMessage(); addItem.deserialize(data); - Client client = core.getClient((Integer) session.getAttribute("connectionId")); + Client client = core.getClient(session); if (client == null) return; @@ -230,7 +230,7 @@ public class TradeService implements INetworkDispatch{ data.order(ByteOrder.LITTLE_ENDIAN); data.position(0); - Client client = core.getClient((Integer) session.getAttribute("connectionId")); + Client client = core.getClient(session); long tradingWithClient = (long) client.getSession().getAttribute("tradeSession"); CreatureObject tradingPartner = (CreatureObject) core.objectService.getObject(tradingWithClient); @@ -267,7 +267,7 @@ public class TradeService implements INetworkDispatch{ long objectToKeepID = request.getObjectID(); - Client client = core.getClient((Integer) session.getAttribute("connectionId")); + Client client = core.getClient(session); long tradingWithClient = (long) client.getSession().getAttribute("tradeSession"); CreatureObject tradePartner = (CreatureObject) core.objectService.getObject(tradingWithClient); @@ -288,7 +288,7 @@ public class TradeService implements INetworkDispatch{ // client sends this packet to the server and then the server sends it to client. - Client client = core.getClient((Integer) session.getAttribute("connectionId")); + Client client = core.getClient(session); long tradingWithClient = (long) client.getSession().getAttribute("tradeSession"); CreatureObject tradePartner = (CreatureObject) core.objectService.getObject(tradingWithClient); @@ -305,7 +305,7 @@ public class TradeService implements INetworkDispatch{ @Override public void handlePacket(IoSession session, IoBuffer buffer) throws Exception { - Client client = core.getClient((Integer) session.getAttribute("connectionId")); + Client client = core.getClient(session); long tradingWithClient = (long) client.getSession().getAttribute("tradeSession"); CreatureObject tradePartner = (CreatureObject) core.objectService.getObject(tradingWithClient); @@ -322,7 +322,7 @@ public class TradeService implements INetworkDispatch{ @Override public void handlePacket(IoSession session, IoBuffer buffer) throws Exception { System.out.println("Got BeginVerificationMessage"); - Client client = core.getClient((Integer) session.getAttribute("connectionId")); + Client client = core.getClient(session); client.getSession().setAttribute("tradeSessionIsVerified"); System.out.println("Verified client"); @@ -337,7 +337,7 @@ public class TradeService implements INetworkDispatch{ // Sent first! - Client client = core.getClient((Integer) session.getAttribute("connectionId")); + Client client = core.getClient(session); long tradingWithClient = (long) getTradeAttribute(client); CreatureObject tradePartner = (CreatureObject) core.objectService.getObject(tradingWithClient); diff --git a/src/services/travel/TravelService.java b/src/services/travel/TravelService.java index 606becba..5165e79c 100644 --- a/src/services/travel/TravelService.java +++ b/src/services/travel/TravelService.java @@ -78,7 +78,7 @@ public class TravelService implements INetworkDispatch { PlanetTravelPointListRequest request = new PlanetTravelPointListRequest(); request.deserialize(data); - Client client = core.getClient((Integer) session.getAttribute("connectionId")); + Client client = core.getClient(session); if(client == null || client.getSession() == null) return;