diff --git a/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/loginserver/network/serverpackets/ServerList.java b/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/loginserver/network/serverpackets/ServerList.java index 2ff46a5410..ef526098aa 100644 --- a/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/loginserver/network/serverpackets/ServerList.java +++ b/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/loginserver/network/serverpackets/ServerList.java @@ -66,8 +66,8 @@ public class ServerList implements IOutgoingPacket private final List _servers; private final int _lastServer; - private final Map _charsOnServers; - private final Map _charsToDelete; + private Map _charsOnServers; + private Map _charsToDelete; class ServerData { @@ -120,8 +120,21 @@ public class ServerList implements IOutgoingPacket { _servers.add(new ServerData(client, gsi)); } - _charsOnServers = client.getCharsOnServ(); - _charsToDelete = client.getCharsWaitingDelOnServ(); + + // Wait 300ms to reply with character list. + int i = 0; + while (((_charsOnServers == null) || (_charsToDelete == null)) && (i++ < 3)) + { + try + { + Thread.sleep(100); + } + catch (InterruptedException ignored) + { + } + _charsOnServers = client.getCharsOnServ(); + _charsToDelete = client.getCharsWaitingDelOnServ(); + } } @Override diff --git a/L2J_Mobius_02.5_Underground/java/org/l2jmobius/loginserver/network/serverpackets/ServerList.java b/L2J_Mobius_02.5_Underground/java/org/l2jmobius/loginserver/network/serverpackets/ServerList.java index 77723c3957..e8d92e3883 100644 --- a/L2J_Mobius_02.5_Underground/java/org/l2jmobius/loginserver/network/serverpackets/ServerList.java +++ b/L2J_Mobius_02.5_Underground/java/org/l2jmobius/loginserver/network/serverpackets/ServerList.java @@ -65,7 +65,7 @@ public class ServerList implements IOutgoingPacket private final List _servers; private final int _lastServer; - private final Map _charsOnServers; + private Map _charsOnServers; class ServerData { @@ -118,7 +118,20 @@ public class ServerList implements IOutgoingPacket { _servers.add(new ServerData(client, gsi)); } - _charsOnServers = client.getCharsOnServ(); + + // Wait 300ms to reply with character list. + int i = 0; + while ((_charsOnServers == null) && (i++ < 3)) + { + try + { + Thread.sleep(100); + } + catch (InterruptedException ignored) + { + } + _charsOnServers = client.getCharsOnServ(); + } } @Override diff --git a/L2J_Mobius_03.0_Helios/java/org/l2jmobius/loginserver/network/serverpackets/ServerList.java b/L2J_Mobius_03.0_Helios/java/org/l2jmobius/loginserver/network/serverpackets/ServerList.java index 77723c3957..e8d92e3883 100644 --- a/L2J_Mobius_03.0_Helios/java/org/l2jmobius/loginserver/network/serverpackets/ServerList.java +++ b/L2J_Mobius_03.0_Helios/java/org/l2jmobius/loginserver/network/serverpackets/ServerList.java @@ -65,7 +65,7 @@ public class ServerList implements IOutgoingPacket private final List _servers; private final int _lastServer; - private final Map _charsOnServers; + private Map _charsOnServers; class ServerData { @@ -118,7 +118,20 @@ public class ServerList implements IOutgoingPacket { _servers.add(new ServerData(client, gsi)); } - _charsOnServers = client.getCharsOnServ(); + + // Wait 300ms to reply with character list. + int i = 0; + while ((_charsOnServers == null) && (i++ < 3)) + { + try + { + Thread.sleep(100); + } + catch (InterruptedException ignored) + { + } + _charsOnServers = client.getCharsOnServ(); + } } @Override diff --git a/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/loginserver/network/serverpackets/ServerList.java b/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/loginserver/network/serverpackets/ServerList.java index 77723c3957..e8d92e3883 100644 --- a/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/loginserver/network/serverpackets/ServerList.java +++ b/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/loginserver/network/serverpackets/ServerList.java @@ -65,7 +65,7 @@ public class ServerList implements IOutgoingPacket private final List _servers; private final int _lastServer; - private final Map _charsOnServers; + private Map _charsOnServers; class ServerData { @@ -118,7 +118,20 @@ public class ServerList implements IOutgoingPacket { _servers.add(new ServerData(client, gsi)); } - _charsOnServers = client.getCharsOnServ(); + + // Wait 300ms to reply with character list. + int i = 0; + while ((_charsOnServers == null) && (i++ < 3)) + { + try + { + Thread.sleep(100); + } + catch (InterruptedException ignored) + { + } + _charsOnServers = client.getCharsOnServ(); + } } @Override diff --git a/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/loginserver/network/serverpackets/ServerList.java b/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/loginserver/network/serverpackets/ServerList.java index 77723c3957..e8d92e3883 100644 --- a/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/loginserver/network/serverpackets/ServerList.java +++ b/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/loginserver/network/serverpackets/ServerList.java @@ -65,7 +65,7 @@ public class ServerList implements IOutgoingPacket private final List _servers; private final int _lastServer; - private final Map _charsOnServers; + private Map _charsOnServers; class ServerData { @@ -118,7 +118,20 @@ public class ServerList implements IOutgoingPacket { _servers.add(new ServerData(client, gsi)); } - _charsOnServers = client.getCharsOnServ(); + + // Wait 300ms to reply with character list. + int i = 0; + while ((_charsOnServers == null) && (i++ < 3)) + { + try + { + Thread.sleep(100); + } + catch (InterruptedException ignored) + { + } + _charsOnServers = client.getCharsOnServ(); + } } @Override diff --git a/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/loginserver/network/serverpackets/ServerList.java b/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/loginserver/network/serverpackets/ServerList.java index 77723c3957..e8d92e3883 100644 --- a/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/loginserver/network/serverpackets/ServerList.java +++ b/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/loginserver/network/serverpackets/ServerList.java @@ -65,7 +65,7 @@ public class ServerList implements IOutgoingPacket private final List _servers; private final int _lastServer; - private final Map _charsOnServers; + private Map _charsOnServers; class ServerData { @@ -118,7 +118,20 @@ public class ServerList implements IOutgoingPacket { _servers.add(new ServerData(client, gsi)); } - _charsOnServers = client.getCharsOnServ(); + + // Wait 300ms to reply with character list. + int i = 0; + while ((_charsOnServers == null) && (i++ < 3)) + { + try + { + Thread.sleep(100); + } + catch (InterruptedException ignored) + { + } + _charsOnServers = client.getCharsOnServ(); + } } @Override diff --git a/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/loginserver/network/serverpackets/ServerList.java b/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/loginserver/network/serverpackets/ServerList.java index 77723c3957..e8d92e3883 100644 --- a/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/loginserver/network/serverpackets/ServerList.java +++ b/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/loginserver/network/serverpackets/ServerList.java @@ -65,7 +65,7 @@ public class ServerList implements IOutgoingPacket private final List _servers; private final int _lastServer; - private final Map _charsOnServers; + private Map _charsOnServers; class ServerData { @@ -118,7 +118,20 @@ public class ServerList implements IOutgoingPacket { _servers.add(new ServerData(client, gsi)); } - _charsOnServers = client.getCharsOnServ(); + + // Wait 300ms to reply with character list. + int i = 0; + while ((_charsOnServers == null) && (i++ < 3)) + { + try + { + Thread.sleep(100); + } + catch (InterruptedException ignored) + { + } + _charsOnServers = client.getCharsOnServ(); + } } @Override diff --git a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/loginserver/network/serverpackets/ServerList.java b/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/loginserver/network/serverpackets/ServerList.java index 77723c3957..e8d92e3883 100644 --- a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/loginserver/network/serverpackets/ServerList.java +++ b/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/loginserver/network/serverpackets/ServerList.java @@ -65,7 +65,7 @@ public class ServerList implements IOutgoingPacket private final List _servers; private final int _lastServer; - private final Map _charsOnServers; + private Map _charsOnServers; class ServerData { @@ -118,7 +118,20 @@ public class ServerList implements IOutgoingPacket { _servers.add(new ServerData(client, gsi)); } - _charsOnServers = client.getCharsOnServ(); + + // Wait 300ms to reply with character list. + int i = 0; + while ((_charsOnServers == null) && (i++ < 3)) + { + try + { + Thread.sleep(100); + } + catch (InterruptedException ignored) + { + } + _charsOnServers = client.getCharsOnServ(); + } } @Override diff --git a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/loginserver/network/serverpackets/ServerList.java b/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/loginserver/network/serverpackets/ServerList.java index 77723c3957..e8d92e3883 100644 --- a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/loginserver/network/serverpackets/ServerList.java +++ b/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/loginserver/network/serverpackets/ServerList.java @@ -65,7 +65,7 @@ public class ServerList implements IOutgoingPacket private final List _servers; private final int _lastServer; - private final Map _charsOnServers; + private Map _charsOnServers; class ServerData { @@ -118,7 +118,20 @@ public class ServerList implements IOutgoingPacket { _servers.add(new ServerData(client, gsi)); } - _charsOnServers = client.getCharsOnServ(); + + // Wait 300ms to reply with character list. + int i = 0; + while ((_charsOnServers == null) && (i++ < 3)) + { + try + { + Thread.sleep(100); + } + catch (InterruptedException ignored) + { + } + _charsOnServers = client.getCharsOnServ(); + } } @Override diff --git a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/loginserver/network/serverpackets/ServerList.java b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/loginserver/network/serverpackets/ServerList.java index 77723c3957..e8d92e3883 100644 --- a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/loginserver/network/serverpackets/ServerList.java +++ b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/loginserver/network/serverpackets/ServerList.java @@ -65,7 +65,7 @@ public class ServerList implements IOutgoingPacket private final List _servers; private final int _lastServer; - private final Map _charsOnServers; + private Map _charsOnServers; class ServerData { @@ -118,7 +118,20 @@ public class ServerList implements IOutgoingPacket { _servers.add(new ServerData(client, gsi)); } - _charsOnServers = client.getCharsOnServ(); + + // Wait 300ms to reply with character list. + int i = 0; + while ((_charsOnServers == null) && (i++ < 3)) + { + try + { + Thread.sleep(100); + } + catch (InterruptedException ignored) + { + } + _charsOnServers = client.getCharsOnServ(); + } } @Override diff --git a/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/loginserver/network/serverpackets/ServerList.java b/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/loginserver/network/serverpackets/ServerList.java index 77723c3957..e8d92e3883 100644 --- a/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/loginserver/network/serverpackets/ServerList.java +++ b/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/loginserver/network/serverpackets/ServerList.java @@ -65,7 +65,7 @@ public class ServerList implements IOutgoingPacket private final List _servers; private final int _lastServer; - private final Map _charsOnServers; + private Map _charsOnServers; class ServerData { @@ -118,7 +118,20 @@ public class ServerList implements IOutgoingPacket { _servers.add(new ServerData(client, gsi)); } - _charsOnServers = client.getCharsOnServ(); + + // Wait 300ms to reply with character list. + int i = 0; + while ((_charsOnServers == null) && (i++ < 3)) + { + try + { + Thread.sleep(100); + } + catch (InterruptedException ignored) + { + } + _charsOnServers = client.getCharsOnServ(); + } } @Override diff --git a/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/loginserver/network/serverpackets/ServerList.java b/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/loginserver/network/serverpackets/ServerList.java index 77723c3957..e8d92e3883 100644 --- a/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/loginserver/network/serverpackets/ServerList.java +++ b/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/loginserver/network/serverpackets/ServerList.java @@ -65,7 +65,7 @@ public class ServerList implements IOutgoingPacket private final List _servers; private final int _lastServer; - private final Map _charsOnServers; + private Map _charsOnServers; class ServerData { @@ -118,7 +118,20 @@ public class ServerList implements IOutgoingPacket { _servers.add(new ServerData(client, gsi)); } - _charsOnServers = client.getCharsOnServ(); + + // Wait 300ms to reply with character list. + int i = 0; + while ((_charsOnServers == null) && (i++ < 3)) + { + try + { + Thread.sleep(100); + } + catch (InterruptedException ignored) + { + } + _charsOnServers = client.getCharsOnServ(); + } } @Override diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/loginserver/network/clientpackets/RequestAuthLogin.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/loginserver/network/clientpackets/RequestAuthLogin.java index 0ff2302111..bfec2d7b75 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/loginserver/network/clientpackets/RequestAuthLogin.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/loginserver/network/clientpackets/RequestAuthLogin.java @@ -38,10 +38,7 @@ import org.l2jmobius.loginserver.network.serverpackets.LoginOk; import org.l2jmobius.loginserver.network.serverpackets.ServerList; /** - *
  * Format: x 0 (a leading null) x: the rsa encrypted block with the login an password.
- * 
- * 
  */
 public class RequestAuthLogin implements IIncomingPacket
 {
diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/loginserver/network/serverpackets/ServerList.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/loginserver/network/serverpackets/ServerList.java
index 2ff46a5410..7df2bcb4a1 100644
--- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/loginserver/network/serverpackets/ServerList.java
+++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/loginserver/network/serverpackets/ServerList.java
@@ -66,8 +66,8 @@ public class ServerList implements IOutgoingPacket
 	
 	private final List _servers;
 	private final int _lastServer;
-	private final Map _charsOnServers;
-	private final Map _charsToDelete;
+	private Map _charsOnServers;
+	private Map _charsToDelete;
 	
 	class ServerData
 	{
@@ -120,8 +120,21 @@ public class ServerList implements IOutgoingPacket
 		{
 			_servers.add(new ServerData(client, gsi));
 		}
-		_charsOnServers = client.getCharsOnServ();
-		_charsToDelete = client.getCharsWaitingDelOnServ();
+		
+		// Wait 300ms to reply with character list.
+		int i = 0;
+		while ((_charsOnServers == null) && (_charsToDelete == null) && (i++ < 3))
+		{
+			try
+			{
+				Thread.sleep(100);
+			}
+			catch (InterruptedException ignored)
+			{
+			}
+			_charsOnServers = client.getCharsOnServ();
+			_charsToDelete = client.getCharsWaitingDelOnServ();
+		}
 	}
 	
 	@Override
diff --git a/L2J_Mobius_CT_0_Interlude/java/org/l2jmobius/loginserver/network/clientpackets/RequestAuthLogin.java b/L2J_Mobius_CT_0_Interlude/java/org/l2jmobius/loginserver/network/clientpackets/RequestAuthLogin.java
index 06e429aba2..b2d766820e 100644
--- a/L2J_Mobius_CT_0_Interlude/java/org/l2jmobius/loginserver/network/clientpackets/RequestAuthLogin.java
+++ b/L2J_Mobius_CT_0_Interlude/java/org/l2jmobius/loginserver/network/clientpackets/RequestAuthLogin.java
@@ -38,10 +38,7 @@ import org.l2jmobius.loginserver.network.serverpackets.LoginOk;
 import org.l2jmobius.loginserver.network.serverpackets.ServerList;
 
 /**
- * 
  * Format: x 0 (a leading null) x: the rsa encrypted block with the login an password.
- * 
- * 
  */
 public class RequestAuthLogin implements IIncomingPacket
 {
diff --git a/L2J_Mobius_CT_0_Interlude/java/org/l2jmobius/loginserver/network/serverpackets/ServerList.java b/L2J_Mobius_CT_0_Interlude/java/org/l2jmobius/loginserver/network/serverpackets/ServerList.java
index 2ff46a5410..ef526098aa 100644
--- a/L2J_Mobius_CT_0_Interlude/java/org/l2jmobius/loginserver/network/serverpackets/ServerList.java
+++ b/L2J_Mobius_CT_0_Interlude/java/org/l2jmobius/loginserver/network/serverpackets/ServerList.java
@@ -66,8 +66,8 @@ public class ServerList implements IOutgoingPacket
 	
 	private final List _servers;
 	private final int _lastServer;
-	private final Map _charsOnServers;
-	private final Map _charsToDelete;
+	private Map _charsOnServers;
+	private Map _charsToDelete;
 	
 	class ServerData
 	{
@@ -120,8 +120,21 @@ public class ServerList implements IOutgoingPacket
 		{
 			_servers.add(new ServerData(client, gsi));
 		}
-		_charsOnServers = client.getCharsOnServ();
-		_charsToDelete = client.getCharsWaitingDelOnServ();
+		
+		// Wait 300ms to reply with character list.
+		int i = 0;
+		while (((_charsOnServers == null) || (_charsToDelete == null)) && (i++ < 3))
+		{
+			try
+			{
+				Thread.sleep(100);
+			}
+			catch (InterruptedException ignored)
+			{
+			}
+			_charsOnServers = client.getCharsOnServ();
+			_charsToDelete = client.getCharsWaitingDelOnServ();
+		}
 	}
 	
 	@Override
diff --git a/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/loginserver/network/clientpackets/RequestAuthLogin.java b/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/loginserver/network/clientpackets/RequestAuthLogin.java
index 06e429aba2..b2d766820e 100644
--- a/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/loginserver/network/clientpackets/RequestAuthLogin.java
+++ b/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/loginserver/network/clientpackets/RequestAuthLogin.java
@@ -38,10 +38,7 @@ import org.l2jmobius.loginserver.network.serverpackets.LoginOk;
 import org.l2jmobius.loginserver.network.serverpackets.ServerList;
 
 /**
- * 
  * Format: x 0 (a leading null) x: the rsa encrypted block with the login an password.
- * 
- * 
  */
 public class RequestAuthLogin implements IIncomingPacket
 {
diff --git a/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/loginserver/network/serverpackets/ServerList.java b/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/loginserver/network/serverpackets/ServerList.java
index 2ff46a5410..ef526098aa 100644
--- a/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/loginserver/network/serverpackets/ServerList.java
+++ b/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/loginserver/network/serverpackets/ServerList.java
@@ -66,8 +66,8 @@ public class ServerList implements IOutgoingPacket
 	
 	private final List _servers;
 	private final int _lastServer;
-	private final Map _charsOnServers;
-	private final Map _charsToDelete;
+	private Map _charsOnServers;
+	private Map _charsToDelete;
 	
 	class ServerData
 	{
@@ -120,8 +120,21 @@ public class ServerList implements IOutgoingPacket
 		{
 			_servers.add(new ServerData(client, gsi));
 		}
-		_charsOnServers = client.getCharsOnServ();
-		_charsToDelete = client.getCharsWaitingDelOnServ();
+		
+		// Wait 300ms to reply with character list.
+		int i = 0;
+		while (((_charsOnServers == null) || (_charsToDelete == null)) && (i++ < 3))
+		{
+			try
+			{
+				Thread.sleep(100);
+			}
+			catch (InterruptedException ignored)
+			{
+			}
+			_charsOnServers = client.getCharsOnServ();
+			_charsToDelete = client.getCharsWaitingDelOnServ();
+		}
 	}
 	
 	@Override
diff --git a/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/loginserver/network/clientpackets/RequestAuthLogin.java b/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/loginserver/network/clientpackets/RequestAuthLogin.java
index 06e429aba2..b2d766820e 100644
--- a/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/loginserver/network/clientpackets/RequestAuthLogin.java
+++ b/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/loginserver/network/clientpackets/RequestAuthLogin.java
@@ -38,10 +38,7 @@ import org.l2jmobius.loginserver.network.serverpackets.LoginOk;
 import org.l2jmobius.loginserver.network.serverpackets.ServerList;
 
 /**
- * 
  * Format: x 0 (a leading null) x: the rsa encrypted block with the login an password.
- * 
- * 
  */
 public class RequestAuthLogin implements IIncomingPacket
 {
diff --git a/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/loginserver/network/serverpackets/ServerList.java b/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/loginserver/network/serverpackets/ServerList.java
index 2ff46a5410..ef526098aa 100644
--- a/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/loginserver/network/serverpackets/ServerList.java
+++ b/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/loginserver/network/serverpackets/ServerList.java
@@ -66,8 +66,8 @@ public class ServerList implements IOutgoingPacket
 	
 	private final List _servers;
 	private final int _lastServer;
-	private final Map _charsOnServers;
-	private final Map _charsToDelete;
+	private Map _charsOnServers;
+	private Map _charsToDelete;
 	
 	class ServerData
 	{
@@ -120,8 +120,21 @@ public class ServerList implements IOutgoingPacket
 		{
 			_servers.add(new ServerData(client, gsi));
 		}
-		_charsOnServers = client.getCharsOnServ();
-		_charsToDelete = client.getCharsWaitingDelOnServ();
+		
+		// Wait 300ms to reply with character list.
+		int i = 0;
+		while (((_charsOnServers == null) || (_charsToDelete == null)) && (i++ < 3))
+		{
+			try
+			{
+				Thread.sleep(100);
+			}
+			catch (InterruptedException ignored)
+			{
+			}
+			_charsOnServers = client.getCharsOnServ();
+			_charsToDelete = client.getCharsWaitingDelOnServ();
+		}
 	}
 	
 	@Override
diff --git a/L2J_Mobius_Classic_1.0/java/org/l2jmobius/loginserver/network/serverpackets/ServerList.java b/L2J_Mobius_Classic_1.0/java/org/l2jmobius/loginserver/network/serverpackets/ServerList.java
index 77723c3957..e8d92e3883 100644
--- a/L2J_Mobius_Classic_1.0/java/org/l2jmobius/loginserver/network/serverpackets/ServerList.java
+++ b/L2J_Mobius_Classic_1.0/java/org/l2jmobius/loginserver/network/serverpackets/ServerList.java
@@ -65,7 +65,7 @@ public class ServerList implements IOutgoingPacket
 	
 	private final List _servers;
 	private final int _lastServer;
-	private final Map _charsOnServers;
+	private Map _charsOnServers;
 	
 	class ServerData
 	{
@@ -118,7 +118,20 @@ public class ServerList implements IOutgoingPacket
 		{
 			_servers.add(new ServerData(client, gsi));
 		}
-		_charsOnServers = client.getCharsOnServ();
+		
+		// Wait 300ms to reply with character list.
+		int i = 0;
+		while ((_charsOnServers == null) && (i++ < 3))
+		{
+			try
+			{
+				Thread.sleep(100);
+			}
+			catch (InterruptedException ignored)
+			{
+			}
+			_charsOnServers = client.getCharsOnServ();
+		}
 	}
 	
 	@Override
diff --git a/L2J_Mobius_Classic_1.5_AgeOfSplendor/java/org/l2jmobius/loginserver/network/serverpackets/ServerList.java b/L2J_Mobius_Classic_1.5_AgeOfSplendor/java/org/l2jmobius/loginserver/network/serverpackets/ServerList.java
index 77723c3957..e8d92e3883 100644
--- a/L2J_Mobius_Classic_1.5_AgeOfSplendor/java/org/l2jmobius/loginserver/network/serverpackets/ServerList.java
+++ b/L2J_Mobius_Classic_1.5_AgeOfSplendor/java/org/l2jmobius/loginserver/network/serverpackets/ServerList.java
@@ -65,7 +65,7 @@ public class ServerList implements IOutgoingPacket
 	
 	private final List _servers;
 	private final int _lastServer;
-	private final Map _charsOnServers;
+	private Map _charsOnServers;
 	
 	class ServerData
 	{
@@ -118,7 +118,20 @@ public class ServerList implements IOutgoingPacket
 		{
 			_servers.add(new ServerData(client, gsi));
 		}
-		_charsOnServers = client.getCharsOnServ();
+		
+		// Wait 300ms to reply with character list.
+		int i = 0;
+		while ((_charsOnServers == null) && (i++ < 3))
+		{
+			try
+			{
+				Thread.sleep(100);
+			}
+			catch (InterruptedException ignored)
+			{
+			}
+			_charsOnServers = client.getCharsOnServ();
+		}
 	}
 	
 	@Override
diff --git a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/loginserver/network/serverpackets/ServerList.java b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/loginserver/network/serverpackets/ServerList.java
index 77723c3957..e8d92e3883 100644
--- a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/loginserver/network/serverpackets/ServerList.java
+++ b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/loginserver/network/serverpackets/ServerList.java
@@ -65,7 +65,7 @@ public class ServerList implements IOutgoingPacket
 	
 	private final List _servers;
 	private final int _lastServer;
-	private final Map _charsOnServers;
+	private Map _charsOnServers;
 	
 	class ServerData
 	{
@@ -118,7 +118,20 @@ public class ServerList implements IOutgoingPacket
 		{
 			_servers.add(new ServerData(client, gsi));
 		}
-		_charsOnServers = client.getCharsOnServ();
+		
+		// Wait 300ms to reply with character list.
+		int i = 0;
+		while ((_charsOnServers == null) && (i++ < 3))
+		{
+			try
+			{
+				Thread.sleep(100);
+			}
+			catch (InterruptedException ignored)
+			{
+			}
+			_charsOnServers = client.getCharsOnServ();
+		}
 	}
 	
 	@Override
diff --git a/L2J_Mobius_Classic_2.5_Zaken/java/org/l2jmobius/loginserver/network/serverpackets/ServerList.java b/L2J_Mobius_Classic_2.5_Zaken/java/org/l2jmobius/loginserver/network/serverpackets/ServerList.java
index 77723c3957..e8d92e3883 100644
--- a/L2J_Mobius_Classic_2.5_Zaken/java/org/l2jmobius/loginserver/network/serverpackets/ServerList.java
+++ b/L2J_Mobius_Classic_2.5_Zaken/java/org/l2jmobius/loginserver/network/serverpackets/ServerList.java
@@ -65,7 +65,7 @@ public class ServerList implements IOutgoingPacket
 	
 	private final List _servers;
 	private final int _lastServer;
-	private final Map _charsOnServers;
+	private Map _charsOnServers;
 	
 	class ServerData
 	{
@@ -118,7 +118,20 @@ public class ServerList implements IOutgoingPacket
 		{
 			_servers.add(new ServerData(client, gsi));
 		}
-		_charsOnServers = client.getCharsOnServ();
+		
+		// Wait 300ms to reply with character list.
+		int i = 0;
+		while ((_charsOnServers == null) && (i++ < 3))
+		{
+			try
+			{
+				Thread.sleep(100);
+			}
+			catch (InterruptedException ignored)
+			{
+			}
+			_charsOnServers = client.getCharsOnServ();
+		}
 	}
 	
 	@Override
diff --git a/L2J_Mobius_Classic_2.7_Antharas/java/org/l2jmobius/loginserver/network/serverpackets/ServerList.java b/L2J_Mobius_Classic_2.7_Antharas/java/org/l2jmobius/loginserver/network/serverpackets/ServerList.java
index 77723c3957..e8d92e3883 100644
--- a/L2J_Mobius_Classic_2.7_Antharas/java/org/l2jmobius/loginserver/network/serverpackets/ServerList.java
+++ b/L2J_Mobius_Classic_2.7_Antharas/java/org/l2jmobius/loginserver/network/serverpackets/ServerList.java
@@ -65,7 +65,7 @@ public class ServerList implements IOutgoingPacket
 	
 	private final List _servers;
 	private final int _lastServer;
-	private final Map _charsOnServers;
+	private Map _charsOnServers;
 	
 	class ServerData
 	{
@@ -118,7 +118,20 @@ public class ServerList implements IOutgoingPacket
 		{
 			_servers.add(new ServerData(client, gsi));
 		}
-		_charsOnServers = client.getCharsOnServ();
+		
+		// Wait 300ms to reply with character list.
+		int i = 0;
+		while ((_charsOnServers == null) && (i++ < 3))
+		{
+			try
+			{
+				Thread.sleep(100);
+			}
+			catch (InterruptedException ignored)
+			{
+			}
+			_charsOnServers = client.getCharsOnServ();
+		}
 	}
 	
 	@Override
diff --git a/L2J_Mobius_Classic_2.8_SevenSigns/java/org/l2jmobius/loginserver/network/serverpackets/ServerList.java b/L2J_Mobius_Classic_2.8_SevenSigns/java/org/l2jmobius/loginserver/network/serverpackets/ServerList.java
index 77723c3957..e8d92e3883 100644
--- a/L2J_Mobius_Classic_2.8_SevenSigns/java/org/l2jmobius/loginserver/network/serverpackets/ServerList.java
+++ b/L2J_Mobius_Classic_2.8_SevenSigns/java/org/l2jmobius/loginserver/network/serverpackets/ServerList.java
@@ -65,7 +65,7 @@ public class ServerList implements IOutgoingPacket
 	
 	private final List _servers;
 	private final int _lastServer;
-	private final Map _charsOnServers;
+	private Map _charsOnServers;
 	
 	class ServerData
 	{
@@ -118,7 +118,20 @@ public class ServerList implements IOutgoingPacket
 		{
 			_servers.add(new ServerData(client, gsi));
 		}
-		_charsOnServers = client.getCharsOnServ();
+		
+		// Wait 300ms to reply with character list.
+		int i = 0;
+		while ((_charsOnServers == null) && (i++ < 3))
+		{
+			try
+			{
+				Thread.sleep(100);
+			}
+			catch (InterruptedException ignored)
+			{
+			}
+			_charsOnServers = client.getCharsOnServ();
+		}
 	}
 	
 	@Override
diff --git a/L2J_Mobius_Classic_2.9_SecretOfEmpire/java/org/l2jmobius/loginserver/network/serverpackets/ServerList.java b/L2J_Mobius_Classic_2.9_SecretOfEmpire/java/org/l2jmobius/loginserver/network/serverpackets/ServerList.java
index 77723c3957..e8d92e3883 100644
--- a/L2J_Mobius_Classic_2.9_SecretOfEmpire/java/org/l2jmobius/loginserver/network/serverpackets/ServerList.java
+++ b/L2J_Mobius_Classic_2.9_SecretOfEmpire/java/org/l2jmobius/loginserver/network/serverpackets/ServerList.java
@@ -65,7 +65,7 @@ public class ServerList implements IOutgoingPacket
 	
 	private final List _servers;
 	private final int _lastServer;
-	private final Map _charsOnServers;
+	private Map _charsOnServers;
 	
 	class ServerData
 	{
@@ -118,7 +118,20 @@ public class ServerList implements IOutgoingPacket
 		{
 			_servers.add(new ServerData(client, gsi));
 		}
-		_charsOnServers = client.getCharsOnServ();
+		
+		// Wait 300ms to reply with character list.
+		int i = 0;
+		while ((_charsOnServers == null) && (i++ < 3))
+		{
+			try
+			{
+				Thread.sleep(100);
+			}
+			catch (InterruptedException ignored)
+			{
+			}
+			_charsOnServers = client.getCharsOnServ();
+		}
 	}
 	
 	@Override
diff --git a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/loginserver/network/serverpackets/ServerList.java b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/loginserver/network/serverpackets/ServerList.java
index 77723c3957..e8d92e3883 100644
--- a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/loginserver/network/serverpackets/ServerList.java
+++ b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/loginserver/network/serverpackets/ServerList.java
@@ -65,7 +65,7 @@ public class ServerList implements IOutgoingPacket
 	
 	private final List _servers;
 	private final int _lastServer;
-	private final Map _charsOnServers;
+	private Map _charsOnServers;
 	
 	class ServerData
 	{
@@ -118,7 +118,20 @@ public class ServerList implements IOutgoingPacket
 		{
 			_servers.add(new ServerData(client, gsi));
 		}
-		_charsOnServers = client.getCharsOnServ();
+		
+		// Wait 300ms to reply with character list.
+		int i = 0;
+		while ((_charsOnServers == null) && (i++ < 3))
+		{
+			try
+			{
+				Thread.sleep(100);
+			}
+			catch (InterruptedException ignored)
+			{
+			}
+			_charsOnServers = client.getCharsOnServ();
+		}
 	}
 	
 	@Override
diff --git a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/loginserver/network/serverpackets/ServerList.java b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/loginserver/network/serverpackets/ServerList.java
index 77723c3957..e8d92e3883 100644
--- a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/loginserver/network/serverpackets/ServerList.java
+++ b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/loginserver/network/serverpackets/ServerList.java
@@ -65,7 +65,7 @@ public class ServerList implements IOutgoingPacket
 	
 	private final List _servers;
 	private final int _lastServer;
-	private final Map _charsOnServers;
+	private Map _charsOnServers;
 	
 	class ServerData
 	{
@@ -118,7 +118,20 @@ public class ServerList implements IOutgoingPacket
 		{
 			_servers.add(new ServerData(client, gsi));
 		}
-		_charsOnServers = client.getCharsOnServ();
+		
+		// Wait 300ms to reply with character list.
+		int i = 0;
+		while ((_charsOnServers == null) && (i++ < 3))
+		{
+			try
+			{
+				Thread.sleep(100);
+			}
+			catch (InterruptedException ignored)
+			{
+			}
+			_charsOnServers = client.getCharsOnServ();
+		}
 	}
 	
 	@Override
diff --git a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/loginserver/network/serverpackets/ServerList.java b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/loginserver/network/serverpackets/ServerList.java
index 77723c3957..e8d92e3883 100644
--- a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/loginserver/network/serverpackets/ServerList.java
+++ b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/loginserver/network/serverpackets/ServerList.java
@@ -65,7 +65,7 @@ public class ServerList implements IOutgoingPacket
 	
 	private final List _servers;
 	private final int _lastServer;
-	private final Map _charsOnServers;
+	private Map _charsOnServers;
 	
 	class ServerData
 	{
@@ -118,7 +118,20 @@ public class ServerList implements IOutgoingPacket
 		{
 			_servers.add(new ServerData(client, gsi));
 		}
-		_charsOnServers = client.getCharsOnServ();
+		
+		// Wait 300ms to reply with character list.
+		int i = 0;
+		while ((_charsOnServers == null) && (i++ < 3))
+		{
+			try
+			{
+				Thread.sleep(100);
+			}
+			catch (InterruptedException ignored)
+			{
+			}
+			_charsOnServers = client.getCharsOnServ();
+		}
 	}
 	
 	@Override
diff --git a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/loginserver/network/serverpackets/ServerList.java b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/loginserver/network/serverpackets/ServerList.java
index 77723c3957..e8d92e3883 100644
--- a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/loginserver/network/serverpackets/ServerList.java
+++ b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/loginserver/network/serverpackets/ServerList.java
@@ -65,7 +65,7 @@ public class ServerList implements IOutgoingPacket
 	
 	private final List _servers;
 	private final int _lastServer;
-	private final Map _charsOnServers;
+	private Map _charsOnServers;
 	
 	class ServerData
 	{
@@ -118,7 +118,20 @@ public class ServerList implements IOutgoingPacket
 		{
 			_servers.add(new ServerData(client, gsi));
 		}
-		_charsOnServers = client.getCharsOnServ();
+		
+		// Wait 300ms to reply with character list.
+		int i = 0;
+		while ((_charsOnServers == null) && (i++ < 3))
+		{
+			try
+			{
+				Thread.sleep(100);
+			}
+			catch (InterruptedException ignored)
+			{
+			}
+			_charsOnServers = client.getCharsOnServ();
+		}
 	}
 	
 	@Override
diff --git a/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/loginserver/network/serverpackets/ServerList.java b/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/loginserver/network/serverpackets/ServerList.java
index 77723c3957..e8d92e3883 100644
--- a/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/loginserver/network/serverpackets/ServerList.java
+++ b/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/loginserver/network/serverpackets/ServerList.java
@@ -65,7 +65,7 @@ public class ServerList implements IOutgoingPacket
 	
 	private final List _servers;
 	private final int _lastServer;
-	private final Map _charsOnServers;
+	private Map _charsOnServers;
 	
 	class ServerData
 	{
@@ -118,7 +118,20 @@ public class ServerList implements IOutgoingPacket
 		{
 			_servers.add(new ServerData(client, gsi));
 		}
-		_charsOnServers = client.getCharsOnServ();
+		
+		// Wait 300ms to reply with character list.
+		int i = 0;
+		while ((_charsOnServers == null) && (i++ < 3))
+		{
+			try
+			{
+				Thread.sleep(100);
+			}
+			catch (InterruptedException ignored)
+			{
+			}
+			_charsOnServers = client.getCharsOnServ();
+		}
 	}
 	
 	@Override
diff --git a/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/loginserver/network/serverpackets/ServerList.java b/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/loginserver/network/serverpackets/ServerList.java
index 77723c3957..e8d92e3883 100644
--- a/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/loginserver/network/serverpackets/ServerList.java
+++ b/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/loginserver/network/serverpackets/ServerList.java
@@ -65,7 +65,7 @@ public class ServerList implements IOutgoingPacket
 	
 	private final List _servers;
 	private final int _lastServer;
-	private final Map _charsOnServers;
+	private Map _charsOnServers;
 	
 	class ServerData
 	{
@@ -118,7 +118,20 @@ public class ServerList implements IOutgoingPacket
 		{
 			_servers.add(new ServerData(client, gsi));
 		}
-		_charsOnServers = client.getCharsOnServ();
+		
+		// Wait 300ms to reply with character list.
+		int i = 0;
+		while ((_charsOnServers == null) && (i++ < 3))
+		{
+			try
+			{
+				Thread.sleep(100);
+			}
+			catch (InterruptedException ignored)
+			{
+			}
+			_charsOnServers = client.getCharsOnServ();
+		}
 	}
 	
 	@Override