SHARE
TWEET

Untitled

a guest May 19th, 2017 41 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. package org.rscdaemon.ls.packethandler.loginserver;
  2.  
  3. import org.rscdaemon.ls.packethandler.PacketHandler;
  4. import org.rscdaemon.ls.Server;
  5. import org.rscdaemon.ls.packetbuilder.loginserver.WorldRegisteredPacketBuilder;
  6. import org.rscdaemon.ls.model.World;
  7. import org.rscdaemon.ls.net.LSPacket;
  8. import org.rscdaemon.ls.net.Packet;
  9. import org.rscdaemon.ls.util.DataConversions;
  10.  
  11. import org.apache.mina.common.IoSession;
  12.  
  13. public class RegisterWorld implements PacketHandler
  14. {
  15.  
  16.     private WorldRegisteredPacketBuilder builder = new WorldRegisteredPacketBuilder();
  17.    
  18.     public void handlePacket(Packet p, IoSession session) throws Exception
  19.     {
  20.         final long uID = ((LSPacket)p).getUID();
  21.         builder.setUID(uID);
  22.         builder.setSuccess(false);
  23.        
  24.         Server server = Server.getServer();
  25.         if(((LSPacket)p).getID() == 1)
  26.         {
  27.        
  28.             int id = p.readShort();        
  29.             String passrecv = p.readString().trim();
  30.            
  31.             if(server.getWorld(id) == null && passrecv!= null)
  32.             {
  33.                 World world = server.getIdleWorld(id);
  34.                 if(!passrecv.equals(Config.LS_PASSWORD))
  35.                 {
  36.                     System.out.println("Failed to authenticate world "+id);
  37.                     return;
  38.                 }
  39.                 if(world == null)
  40.                 {
  41.                     world = new World(id, session);
  42.                     server.registerWorld(world);
  43.                     System.out.println("Registering world: " + id);
  44.                 }
  45.                 else
  46.                 {
  47.                     world.setSession(session);
  48.                     server.setIdle(world, false);
  49.                     System.out.println("Reattached to world " + id);
  50.                 }
  51.                 int playerCount = p.readShort();
  52.                 for(int i = 0;i < playerCount;i++)
  53.                 {
  54.                     world.registerPlayer(p.readLong(), DataConversions.IPToString(p.readLong()));
  55.                 }
  56.                 session.setAttachment(world);
  57.                 builder.setSuccess(true);
  58.             }
  59.         }
  60.         else
  61.         {
  62.        
  63.             World world = (World)session.getAttachment();  
  64.             server.unregisterWorld(world);
  65.             System.out.println("UnRegistering world: " + world.getID());
  66.             session.setAttachment(null);
  67.             builder.setSuccess(true);
  68.            
  69.         }
  70.        
  71.         LSPacket temp = builder.getPacket();
  72.         if(temp != null)
  73.         {
  74.             session.write(temp);
  75.         }
  76.     }
  77.    
  78. }
RAW Paste Data
Top