2
0
Эх сурвалжийг харах

BETA: If configuration files aren't present server shouldn't crash:
* [#update Fixed typo in default IdFactory, Compaction is disabled and default in file is BitSet.]
* [#update Fixed missing default for GameserverHostname, now is *]
* [#update Removed useless exceptions throws.]
* [#update Fixed some logs messages.]
* [#update Capitalized all properties file names.]
* [#update The AcceptNewGameServer default value in file is now true, same as it's in Config.java]
* On server set up there is no need to register it anymore (hexid.txt).
* [#update The LoginHostname default value is now 127.0.0.1]
* After !AcceptNewGameServer is set to true it will accept any game server, so binding it to localhost is required.
* [#update Restored DatapackRoot for login server.]
* [#update Changed some log level from config to info.]
* [#update if ipconfig.xml is missing Game Server is binded to localhost.]
* Fixed some !JavaDocs.


----


= UPDATE YOUR CONFIGURATION FILES PROPERLY = #update
{{{
#!html
<center>
<img src="http://www.veryicon.com/icon/png/Application/openPhone/Settings.png" alt="UPDATE YOUR CONFIGURATION FILES PROPERLY" height="256" width="256" />
</center>
}}}

Zoey76 12 жил өмнө
parent
commit
f5a4aedfc8
29 өөрчлөгдсөн 1499 нэмэгдсэн , 1520 устгасан
  1. 0 0
      L2J_Server_BETA/dist/game/config/FloodProtector.properties
  2. 0 0
      L2J_Server_BETA/dist/game/config/FortSiege.properties
  3. 0 0
      L2J_Server_BETA/dist/game/config/GrandBoss.properties
  4. 0 0
      L2J_Server_BETA/dist/game/config/IdFactory.properties
  5. 0 0
      L2J_Server_BETA/dist/game/config/L2JMods.properties
  6. 0 0
      L2J_Server_BETA/dist/game/config/MMO.properties
  7. 0 0
      L2J_Server_BETA/dist/game/config/Olympiad.properties
  8. 0 0
      L2J_Server_BETA/dist/game/config/PVP.properties
  9. 1 1
      L2J_Server_BETA/dist/game/config/Rates.properties
  10. 0 0
      L2J_Server_BETA/dist/game/config/Security.properties
  11. 0 0
      L2J_Server_BETA/dist/game/config/Server.properties
  12. 0 0
      L2J_Server_BETA/dist/game/config/Siege.properties
  13. 0 0
      L2J_Server_BETA/dist/game/config/Telnet.properties
  14. 0 0
      L2J_Server_BETA/dist/game/config/TerritoryWar.properties
  15. 0 0
      L2J_Server_BETA/dist/login/config/Email.properties
  16. 11 11
      L2J_Server_BETA/dist/login/config/LoginServer.properties
  17. 0 0
      L2J_Server_BETA/dist/login/config/MMO.properties
  18. 0 0
      L2J_Server_BETA/dist/login/config/Telnet.properties
  19. 1 1
      L2J_Server_BETA/dist/login/log.cfg
  20. 1209 1213
      L2J_Server_BETA/java/com/l2jserver/Config.java
  21. 1 1
      L2J_Server_BETA/java/com/l2jserver/gameserver/instancemanager/CHSiegeManager.java
  22. 61 62
      L2J_Server_BETA/java/com/l2jserver/gameserver/instancemanager/FortSiegeManager.java
  23. 1 1
      L2J_Server_BETA/java/com/l2jserver/gameserver/instancemanager/HellboundManager.java
  24. 92 93
      L2J_Server_BETA/java/com/l2jserver/gameserver/instancemanager/SiegeManager.java
  25. 99 100
      L2J_Server_BETA/java/com/l2jserver/gameserver/instancemanager/TerritoryWarManager.java
  26. 1 8
      L2J_Server_BETA/java/com/l2jserver/loginserver/network/L2LoginClient.java
  27. 1 2
      L2J_Server_BETA/java/com/l2jserver/util/crypt/BlowfishEngine.java
  28. 3 4
      L2J_Server_BETA/java/com/l2jserver/util/crypt/LoginCrypt.java
  29. 18 23
      L2J_Server_BETA/java/com/l2jserver/util/crypt/NewCrypt.java

+ 0 - 0
L2J_Server_BETA/dist/game/config/floodprotector.properties → L2J_Server_BETA/dist/game/config/FloodProtector.properties


+ 0 - 0
L2J_Server_BETA/dist/game/config/fortsiege.properties → L2J_Server_BETA/dist/game/config/FortSiege.properties


+ 0 - 0
L2J_Server_BETA/dist/game/config/Grandboss.properties → L2J_Server_BETA/dist/game/config/GrandBoss.properties


+ 0 - 0
L2J_Server_BETA/dist/game/config/idfactory.properties → L2J_Server_BETA/dist/game/config/IdFactory.properties


+ 0 - 0
L2J_Server_BETA/dist/game/config/l2jmods.properties → L2J_Server_BETA/dist/game/config/L2JMods.properties


+ 0 - 0
L2J_Server_BETA/dist/game/config/mmo.properties → L2J_Server_BETA/dist/game/config/MMO.properties


+ 0 - 0
L2J_Server_BETA/dist/game/config/olympiad.properties → L2J_Server_BETA/dist/game/config/Olympiad.properties


+ 0 - 0
L2J_Server_BETA/dist/game/config/pvp.properties → L2J_Server_BETA/dist/game/config/PVP.properties


+ 1 - 1
L2J_Server_BETA/dist/game/config/rates.properties → L2J_Server_BETA/dist/game/config/Rates.properties

@@ -23,7 +23,7 @@ RateDropManor = 1
 RateKarmaExpLost = 1
 RateSiegeGuardsPrice = 1
 
-# Modify the date of all extractable items and skills.
+# Modify the rate of reward of all extractable items and skills.
 # Default: 1.
 RateExtractable = 1.
 

+ 0 - 0
L2J_Server_BETA/dist/game/config/security.properties → L2J_Server_BETA/dist/game/config/Security.properties


+ 0 - 0
L2J_Server_BETA/dist/game/config/server.properties → L2J_Server_BETA/dist/game/config/Server.properties


+ 0 - 0
L2J_Server_BETA/dist/game/config/siege.properties → L2J_Server_BETA/dist/game/config/Siege.properties


+ 0 - 0
L2J_Server_BETA/dist/game/config/telnet.properties → L2J_Server_BETA/dist/game/config/Telnet.properties


+ 0 - 0
L2J_Server_BETA/dist/game/config/territorywar.properties → L2J_Server_BETA/dist/game/config/TerritoryWar.properties


+ 0 - 0
L2J_Server_BETA/dist/login/config/email.properties → L2J_Server_BETA/dist/login/config/Email.properties


+ 11 - 11
L2J_Server_BETA/dist/login/config/loginserver.properties → L2J_Server_BETA/dist/login/config/LoginServer.properties

@@ -23,17 +23,17 @@ LoginserverPort = 2106
 # The address on which login will listen for GameServers, use * to bind on all available IPs
 # WARNING: <u><b><font color="red">Please don't change default IPs here if you don't know what are you doing!</font></b></u>
 # WARNING: <u><b><font color="red">External/Internal IPs are now inside "ipconfig.xml" file.</font></b></u>
-# Default: * (0.0.0.0)
-LoginHostname = *
+# Default: 127.0.0.1
+LoginHostname = 127.0.0.1
 
 # The port on which login will listen for GameServers
 # Default: 9014
 LoginPort = 9014
 
-
 # ---------------------------------------------------------------------------
 # Security
 # ---------------------------------------------------------------------------
+# Logs in file the login server events.
 # Default: True
 LogLoginController = True
 
@@ -46,8 +46,8 @@ LoginTryBeforeBan = 5
 LoginBlockAfterBan = 900
 
 # If set to True any GameServer can register on your login's free slots
-# Default: False
-AcceptNewGameServer = False
+# Default: True
+AcceptNewGameServer = True
 
 # Flood Protection. All values are in MILISECONDS.
 # Default: True
@@ -65,7 +65,6 @@ FastConnectionTime = 350
 # Default: 50
 MaxConnectionPerIP = 50
 
-
 # ---------------------------------------------------------------------------
 # Database
 # ---------------------------------------------------------------------------
@@ -91,7 +90,6 @@ MaximumDbConnections = 10
 # Default: 0
 MaximumDbIdleTime = 0
 
-
 # ---------------------------------------------------------------------------
 # Misc.
 # ---------------------------------------------------------------------------
@@ -103,9 +101,8 @@ ShowLicence = True
 AutoCreateAccounts = True
 
 # Datapack root directory.
-# Defaults to current directory from which the server is started unless the below line is uncommented.
-#DatapackRoot = C:/Work/tmp/DataPack
-
+# Defaults to current directory from which the server is started.
+DatapackRoot = .
 
 # ---------------------------------------------------------------------------
 # Developer Settings
@@ -116,6 +113,9 @@ Debug = False
 # ---------------------------------------------------------------------------
 # Restart LS every 24 hours?
 # ---------------------------------------------------------------------------
-# Default: False, 24
+# Enable disable scheduled login restart.
+# Default: False
 LoginRestartSchedule = False
+# Time in hours.
+# Default: 24
 LoginRestartTime = 24

+ 0 - 0
L2J_Server_BETA/dist/login/config/mmo.properties → L2J_Server_BETA/dist/login/config/MMO.properties


+ 0 - 0
L2J_Server_BETA/dist/login/config/telnet.properties → L2J_Server_BETA/dist/login/config/Telnet.properties


+ 1 - 1
L2J_Server_BETA/dist/login/log.cfg

@@ -159,4 +159,4 @@ AltPrivilegesAdmin.append = true
 AltPrivilegesAdmin.level = CONFIG
 
 # c3p0 Logging
-com.mchange.v2.c3p0.level = WARNING
+com.mchange.v2.level = WARNING

Файлын зөрүү хэтэрхий том тул дарагдсан байна
+ 1209 - 1213
L2J_Server_BETA/java/com/l2jserver/Config.java


+ 1 - 1
L2J_Server_BETA/java/com/l2jserver/gameserver/instancemanager/CHSiegeManager.java

@@ -76,7 +76,7 @@ public final class CHSiegeManager
 				_siegableHalls.put(id, hall);
 				ClanHallManager.addClanHall(hall);
 			}
-			_log.config("CHSiegeManager: Loaded "+_siegableHalls.size()+" conquerable clan halls");
+			_log.info("CHSiegeManager: Loaded " + _siegableHalls.size() + " conquerable clan halls.");
 			rs.close();
 			statement.close();
 		}

+ 61 - 62
L2J_Server_BETA/java/com/l2jserver/gameserver/instancemanager/FortSiegeManager.java

@@ -146,81 +146,80 @@ public class FortSiegeManager
 	
 	private final void load()
 	{
+		Properties siegeSettings = new Properties();
 		final File file = new File(Config.FORTSIEGE_CONFIGURATION_FILE);
 		try (InputStream is = new FileInputStream(file))
 		{
-			Properties siegeSettings = new Properties();
 			siegeSettings.load(is);
-			
-			// Siege setting
-			_attackerMaxClans = Integer.decode(siegeSettings.getProperty("AttackerMaxClans", "500"));
-			_flagMaxCount = Integer.decode(siegeSettings.getProperty("MaxFlags", "1"));
-			_siegeClanMinLevel = Integer.decode(siegeSettings.getProperty("SiegeClanMinLevel", "4"));
-			_siegeLength = Integer.decode(siegeSettings.getProperty("SiegeLength", "60"));
-			_countDownLength = Integer.decode(siegeSettings.getProperty("CountDownLength", "10"));
-			_suspiciousMerchantRespawnDelay = Integer.decode(siegeSettings.getProperty("SuspiciousMerchantRespawnDelay", "180"));
-			
-			// Siege spawns settings
-			_commanderSpawnList = new FastMap<>();
-			_flagList = new FastMap<>();
-			
-			for (Fort fort : FortManager.getInstance().getForts())
+		}
+		catch (Exception e)
+		{
+			_log.log(Level.WARNING, "Error while loading Fort Siege Manager settings!", e);
+		}
+		
+		// Siege setting
+		_attackerMaxClans = Integer.decode(siegeSettings.getProperty("AttackerMaxClans", "500"));
+		_flagMaxCount = Integer.decode(siegeSettings.getProperty("MaxFlags", "1"));
+		_siegeClanMinLevel = Integer.decode(siegeSettings.getProperty("SiegeClanMinLevel", "4"));
+		_siegeLength = Integer.decode(siegeSettings.getProperty("SiegeLength", "60"));
+		_countDownLength = Integer.decode(siegeSettings.getProperty("CountDownLength", "10"));
+		_suspiciousMerchantRespawnDelay = Integer.decode(siegeSettings.getProperty("SuspiciousMerchantRespawnDelay", "180"));
+		
+		// Siege spawns settings
+		_commanderSpawnList = new FastMap<>();
+		_flagList = new FastMap<>();
+		
+		for (Fort fort : FortManager.getInstance().getForts())
+		{
+			FastList<SiegeSpawn> _commanderSpawns = new FastList<>();
+			FastList<CombatFlag> _flagSpawns = new FastList<>();
+			for (int i = 1; i < 5; i++)
 			{
-				FastList<SiegeSpawn> _commanderSpawns = new FastList<>();
-				FastList<CombatFlag> _flagSpawns = new FastList<>();
-				for (int i = 1; i < 5; i++)
+				String _spawnParams = siegeSettings.getProperty(fort.getName().replace(" ", "") + "Commander" + i, "");
+				if (_spawnParams.length() == 0)
+					break;
+				StringTokenizer st = new StringTokenizer(_spawnParams.trim(), ",");
+				
+				try
 				{
-					String _spawnParams = siegeSettings.getProperty(fort.getName().replace(" ", "") + "Commander" + i, "");
-					if (_spawnParams.length() == 0)
-						break;
-					StringTokenizer st = new StringTokenizer(_spawnParams.trim(), ",");
+					int x = Integer.parseInt(st.nextToken());
+					int y = Integer.parseInt(st.nextToken());
+					int z = Integer.parseInt(st.nextToken());
+					int heading = Integer.parseInt(st.nextToken());
+					int npc_id = Integer.parseInt(st.nextToken());
 					
-					try
-					{
-						int x = Integer.parseInt(st.nextToken());
-						int y = Integer.parseInt(st.nextToken());
-						int z = Integer.parseInt(st.nextToken());
-						int heading = Integer.parseInt(st.nextToken());
-						int npc_id = Integer.parseInt(st.nextToken());
-						
-						_commanderSpawns.add(new SiegeSpawn(fort.getFortId(), x, y, z, heading, npc_id, i));
-					}
-					catch (Exception e)
-					{
-						_log.warning("Error while loading commander(s) for " + fort.getName() + " fort.");
-					}
+					_commanderSpawns.add(new SiegeSpawn(fort.getFortId(), x, y, z, heading, npc_id, i));
 				}
+				catch (Exception e)
+				{
+					_log.warning("Error while loading commander(s) for " + fort.getName() + " fort.");
+				}
+			}
+			
+			_commanderSpawnList.put(fort.getFortId(), _commanderSpawns);
+			
+			for (int i = 1; i < 4; i++)
+			{
+				String _spawnParams = siegeSettings.getProperty(fort.getName().replace(" ", "") + "Flag" + i, "");
+				if (_spawnParams.length() == 0)
+					break;
+				StringTokenizer st = new StringTokenizer(_spawnParams.trim(), ",");
 				
-				_commanderSpawnList.put(fort.getFortId(), _commanderSpawns);
-				
-				for (int i = 1; i < 4; i++)
+				try
 				{
-					String _spawnParams = siegeSettings.getProperty(fort.getName().replace(" ", "") + "Flag" + i, "");
-					if (_spawnParams.length() == 0)
-						break;
-					StringTokenizer st = new StringTokenizer(_spawnParams.trim(), ",");
+					int x = Integer.parseInt(st.nextToken());
+					int y = Integer.parseInt(st.nextToken());
+					int z = Integer.parseInt(st.nextToken());
+					int flag_id = Integer.parseInt(st.nextToken());
 					
-					try
-					{
-						int x = Integer.parseInt(st.nextToken());
-						int y = Integer.parseInt(st.nextToken());
-						int z = Integer.parseInt(st.nextToken());
-						int flag_id = Integer.parseInt(st.nextToken());
-						
-						_flagSpawns.add(new CombatFlag(fort.getFortId(), x, y, z, 0, flag_id));
-					}
-					catch (Exception e)
-					{
-						_log.warning("Error while loading flag(s) for " + fort.getName() + " fort.");
-					}
+					_flagSpawns.add(new CombatFlag(fort.getFortId(), x, y, z, 0, flag_id));
+				}
+				catch (Exception e)
+				{
+					_log.warning("Error while loading flag(s) for " + fort.getName() + " fort.");
 				}
-				_flagList.put(fort.getFortId(), _flagSpawns);
 			}
-			
-		}
-		catch (Exception e)
-		{
-			_log.log(Level.WARNING, "Error while loading fortsiege data." + e.getMessage(), e);
+			_flagList.put(fort.getFortId(), _flagSpawns);
 		}
 	}
 	

+ 1 - 1
L2J_Server_BETA/java/com/l2jserver/gameserver/instancemanager/HellboundManager.java

@@ -305,7 +305,7 @@ public class HellboundManager
 		{
 			_log.warning("HellboundManager: problem while loading spawns: " + e);
 		}
-		_log.config("HellboundManager: Loaded " + _population.size() + " npc spawn locations.");
+		_log.info("HellboundManager: Loaded " + _population.size() + " npc spawn locations.");
 	}
 	
 	public static final class HellboundSpawn extends L2Spawn

+ 92 - 93
L2J_Server_BETA/java/com/l2jserver/gameserver/instancemanager/SiegeManager.java

@@ -152,121 +152,120 @@ public class SiegeManager
 	
 	private final void load()
 	{
+		Properties siegeSettings = new Properties();
 		final File file = new File(Config.SIEGE_CONFIGURATION_FILE);
 		try (InputStream is = new FileInputStream(file))
 		{
-			Properties siegeSettings = new Properties();
 			siegeSettings.load(is);
+		}
+		catch (Exception e)
+		{
+			_log.log(Level.WARNING, "Error while loading Territory War Manager settings!", e);
+		}
+		
+		// Siege setting
+		_attackerMaxClans = Integer.decode(siegeSettings.getProperty("AttackerMaxClans", "500"));
+		_attackerRespawnDelay = Integer.decode(siegeSettings.getProperty("AttackerRespawn", "0"));
+		_defenderMaxClans = Integer.decode(siegeSettings.getProperty("DefenderMaxClans", "500"));
+		_flagMaxCount = Integer.decode(siegeSettings.getProperty("MaxFlags", "1"));
+		_siegeClanMinLevel = Integer.decode(siegeSettings.getProperty("SiegeClanMinLevel", "5"));
+		_siegeLength = Integer.decode(siegeSettings.getProperty("SiegeLength", "120"));
+		_bloodAllianceReward = Integer.decode(siegeSettings.getProperty("BloodAllianceReward", "0"));
+		
+		// Siege spawns settings
+		_controlTowerSpawnList = new TIntObjectHashMap<>();
+		_artefactSpawnList = new TIntObjectHashMap<>();
+		_flameTowerSpawnList = new TIntObjectHashMap<>();
+		
+		for (Castle castle : CastleManager.getInstance().getCastles())
+		{
+			FastList<SiegeSpawn> _controlTowersSpawns = new FastList<>();
 			
-			// Siege setting
-			_attackerMaxClans = Integer.decode(siegeSettings.getProperty("AttackerMaxClans", "500"));
-			_attackerRespawnDelay = Integer.decode(siegeSettings.getProperty("AttackerRespawn", "0"));
-			_defenderMaxClans = Integer.decode(siegeSettings.getProperty("DefenderMaxClans", "500"));
-			_flagMaxCount = Integer.decode(siegeSettings.getProperty("MaxFlags", "1"));
-			_siegeClanMinLevel = Integer.decode(siegeSettings.getProperty("SiegeClanMinLevel", "5"));
-			_siegeLength = Integer.decode(siegeSettings.getProperty("SiegeLength", "120"));
-			_bloodAllianceReward = Integer.decode(siegeSettings.getProperty("BloodAllianceReward", "0"));
-			
-			// Siege spawns settings
-			_controlTowerSpawnList = new TIntObjectHashMap<>();
-			_artefactSpawnList = new TIntObjectHashMap<>();
-			_flameTowerSpawnList = new TIntObjectHashMap<>();
-			
-			for (Castle castle : CastleManager.getInstance().getCastles())
+			for (int i = 1; i < 0xFF; i++)
 			{
-				FastList<SiegeSpawn> _controlTowersSpawns = new FastList<>();
+				String _spawnParams = siegeSettings.getProperty(castle.getName() + "ControlTower" + i, "");
 				
-				for (int i = 1; i < 0xFF; i++)
+				if (_spawnParams.isEmpty())
+					break;
+				
+				StringTokenizer st = new StringTokenizer(_spawnParams.trim(), ",");
+				
+				try
 				{
-					String _spawnParams = siegeSettings.getProperty(castle.getName() + "ControlTower" + i, "");
-					
-					if (_spawnParams.isEmpty())
-						break;
+					int x = Integer.parseInt(st.nextToken());
+					int y = Integer.parseInt(st.nextToken());
+					int z = Integer.parseInt(st.nextToken());
+					int npc_id = Integer.parseInt(st.nextToken());
+					int hp = Integer.parseInt(st.nextToken());
 					
-					StringTokenizer st = new StringTokenizer(_spawnParams.trim(), ",");
-					
-					try
-					{
-						int x = Integer.parseInt(st.nextToken());
-						int y = Integer.parseInt(st.nextToken());
-						int z = Integer.parseInt(st.nextToken());
-						int npc_id = Integer.parseInt(st.nextToken());
-						int hp = Integer.parseInt(st.nextToken());
-						
-						_controlTowersSpawns.add(new SiegeSpawn(castle.getCastleId(), x, y, z, 0, npc_id, hp));
-					}
-					catch (Exception e)
-					{
-						_log.warning("Error while loading control tower(s) for " + castle.getName() + " castle.");
-					}
+					_controlTowersSpawns.add(new SiegeSpawn(castle.getCastleId(), x, y, z, 0, npc_id, hp));
+				}
+				catch (Exception e)
+				{
+					_log.warning("Error while loading control tower(s) for " + castle.getName() + " castle.");
 				}
+			}
+			
+			FastList<SiegeSpawn> _flameTowersSpawns = new FastList<>();
+			
+			for (int i = 1; i < 0xFF; i++)
+			{
+				String _spawnParams = siegeSettings.getProperty(castle.getName() + "FlameTower" + i, "");
 				
-				FastList<SiegeSpawn> _flameTowersSpawns = new FastList<>();
+				if (_spawnParams.isEmpty())
+					break;
 				
-				for (int i = 1; i < 0xFF; i++)
+				StringTokenizer st = new StringTokenizer(_spawnParams.trim(), ",");
+				
+				try
 				{
-					String _spawnParams = siegeSettings.getProperty(castle.getName() + "FlameTower" + i, "");
-					
-					if (_spawnParams.isEmpty())
-						break;
-					
-					StringTokenizer st = new StringTokenizer(_spawnParams.trim(), ",");
+					int x = Integer.parseInt(st.nextToken());
+					int y = Integer.parseInt(st.nextToken());
+					int z = Integer.parseInt(st.nextToken());
+					int npc_id = Integer.parseInt(st.nextToken());
+					int hp = Integer.parseInt(st.nextToken());
 					
-					try
-					{
-						int x = Integer.parseInt(st.nextToken());
-						int y = Integer.parseInt(st.nextToken());
-						int z = Integer.parseInt(st.nextToken());
-						int npc_id = Integer.parseInt(st.nextToken());
-						int hp = Integer.parseInt(st.nextToken());
-						
-						_flameTowersSpawns.add(new SiegeSpawn(castle.getCastleId(), x, y, z, 0, npc_id, hp));
-					}
-					catch (Exception e)
-					{
-						_log.warning("Error while loading artefact(s) for " + castle.getName() + " castle.");
-					}
+					_flameTowersSpawns.add(new SiegeSpawn(castle.getCastleId(), x, y, z, 0, npc_id, hp));
+				}
+				catch (Exception e)
+				{
+					_log.warning("Error while loading artefact(s) for " + castle.getName() + " castle.");
 				}
+			}
+			
+			FastList<SiegeSpawn> _artefactSpawns = new FastList<>();
+			
+			for (int i = 1; i < 0xFF; i++)
+			{
+				String _spawnParams = siegeSettings.getProperty(castle.getName() + "Artefact" + i, "");
+				
+				if (_spawnParams.isEmpty())
+					break;
 				
-				FastList<SiegeSpawn> _artefactSpawns = new FastList<>();
+				StringTokenizer st = new StringTokenizer(_spawnParams.trim(), ",");
 				
-				for (int i = 1; i < 0xFF; i++)
+				try
 				{
-					String _spawnParams = siegeSettings.getProperty(castle.getName() + "Artefact" + i, "");
+					int x = Integer.parseInt(st.nextToken());
+					int y = Integer.parseInt(st.nextToken());
+					int z = Integer.parseInt(st.nextToken());
+					int heading = Integer.parseInt(st.nextToken());
+					int npc_id = Integer.parseInt(st.nextToken());
 					
-					if (_spawnParams.isEmpty())
-						break;
-					
-					StringTokenizer st = new StringTokenizer(_spawnParams.trim(), ",");
-					
-					try
-					{
-						int x = Integer.parseInt(st.nextToken());
-						int y = Integer.parseInt(st.nextToken());
-						int z = Integer.parseInt(st.nextToken());
-						int heading = Integer.parseInt(st.nextToken());
-						int npc_id = Integer.parseInt(st.nextToken());
-						
-						_artefactSpawns.add(new SiegeSpawn(castle.getCastleId(), x, y, z, heading, npc_id));
-					}
-					catch (Exception e)
-					{
-						_log.warning("Error while loading artefact(s) for " + castle.getName() + " castle.");
-					}
+					_artefactSpawns.add(new SiegeSpawn(castle.getCastleId(), x, y, z, heading, npc_id));
+				}
+				catch (Exception e)
+				{
+					_log.warning("Error while loading artefact(s) for " + castle.getName() + " castle.");
 				}
-				
-				MercTicketManager.MERCS_MAX_PER_CASTLE[castle.getCastleId()-1] = Integer.parseInt(siegeSettings.getProperty(castle.getName() + "MaxMercenaries",
-						Integer.toString(MercTicketManager.MERCS_MAX_PER_CASTLE[castle.getCastleId()-1])).trim());
-				
-				_controlTowerSpawnList.put(castle.getCastleId(), _controlTowersSpawns);
-				_artefactSpawnList.put(castle.getCastleId(), _artefactSpawns);
-				_flameTowerSpawnList.put(castle.getCastleId(), _flameTowersSpawns);
 			}
 			
-		}
-		catch (Exception e)
-		{
-			_log.log(Level.WARNING, "Error while loading siege data: " + e.getMessage(), e);
+			MercTicketManager.MERCS_MAX_PER_CASTLE[castle.getCastleId()-1] = Integer.parseInt(siegeSettings.getProperty(castle.getName() + "MaxMercenaries",
+					Integer.toString(MercTicketManager.MERCS_MAX_PER_CASTLE[castle.getCastleId()-1])).trim());
+			
+			_controlTowerSpawnList.put(castle.getCastleId(), _controlTowersSpawns);
+			_artefactSpawnList.put(castle.getCastleId(), _artefactSpawns);
+			_flameTowerSpawnList.put(castle.getCastleId(), _flameTowersSpawns);
 		}
 	}
 	

+ 99 - 100
L2J_Server_BETA/java/com/l2jserver/gameserver/instancemanager/TerritoryWarManager.java

@@ -16,6 +16,7 @@ package com.l2jserver.gameserver.instancemanager;
 
 import java.io.File;
 import java.io.FileInputStream;
+import java.io.IOException;
 import java.io.InputStream;
 import java.sql.Connection;
 import java.sql.PreparedStatement;
@@ -695,132 +696,130 @@ public class TerritoryWarManager implements Siegable
 	
 	private final void load()
 	{
+		L2Properties territoryWarSettings = new L2Properties();
 		try (InputStream is = new FileInputStream(new File(Config.TW_CONFIGURATION_FILE)))
 		{
-			L2Properties territoryWarSettings = new L2Properties();
 			territoryWarSettings.load(is);
+		}
+		catch (IOException e)
+		{
+			_log.log(Level.WARNING, "Error while loading Territory War Manager settings!", e);
+		}
+		
+		// Siege setting
+		DEFENDERMAXCLANS = Integer.decode(territoryWarSettings.getProperty("DefenderMaxClans", "500"));
+		DEFENDERMAXPLAYERS = Integer.decode(territoryWarSettings.getProperty("DefenderMaxPlayers", "500"));
+		CLANMINLEVEL = Integer.decode(territoryWarSettings.getProperty("ClanMinLevel", "0"));
+		PLAYERMINLEVEL = Integer.decode(territoryWarSettings.getProperty("PlayerMinLevel", "40"));
+		WARLENGTH = Long.decode(territoryWarSettings.getProperty("WarLength", "120")) * 60000;
+		PLAYER_WITH_WARD_CAN_BE_KILLED_IN_PEACEZONE = Boolean.parseBoolean(territoryWarSettings.getProperty("PlayerWithWardCanBeKilledInPeaceZone", "False"));
+		SPAWN_WARDS_WHEN_TW_IS_NOT_IN_PROGRESS = Boolean.parseBoolean(territoryWarSettings.getProperty("SpawnWardsWhenTWIsNotInProgress", "False"));
+		RETURN_WARDS_WHEN_TW_STARTS = Boolean.parseBoolean(territoryWarSettings.getProperty("ReturnWardsWhenTWStarts", "False"));
+		MINTWBADGEFORNOBLESS = Integer.decode(territoryWarSettings.getProperty("MinTerritoryBadgeForNobless", "100"));
+		MINTWBADGEFORSTRIDERS = Integer.decode(territoryWarSettings.getProperty("MinTerritoryBadgeForStriders", "50"));
+		MINTWBADGEFORBIGSTRIDER = Integer.decode(territoryWarSettings.getProperty("MinTerritoryBadgeForBigStrider", "80"));
+					
+		try (Connection con = L2DatabaseFactory.getInstance().getConnection())
+		{
+			PreparedStatement statement = con.prepareStatement("SELECT * FROM territory_spawnlist");
+			ResultSet rs = statement.executeQuery();
 			
-			// Siege setting
-			DEFENDERMAXCLANS = Integer.decode(territoryWarSettings.getProperty("DefenderMaxClans", "500"));
-			DEFENDERMAXPLAYERS = Integer.decode(territoryWarSettings.getProperty("DefenderMaxPlayers", "500"));
-			CLANMINLEVEL = Integer.decode(territoryWarSettings.getProperty("ClanMinLevel", "0"));
-			PLAYERMINLEVEL = Integer.decode(territoryWarSettings.getProperty("PlayerMinLevel", "40"));
-			WARLENGTH = Long.decode(territoryWarSettings.getProperty("WarLength", "120")) * 60000;
-			PLAYER_WITH_WARD_CAN_BE_KILLED_IN_PEACEZONE = Boolean.parseBoolean(territoryWarSettings.getProperty("PlayerWithWardCanBeKilledInPeaceZone", "False"));
-			SPAWN_WARDS_WHEN_TW_IS_NOT_IN_PROGRESS = Boolean.parseBoolean(territoryWarSettings.getProperty("SpawnWardsWhenTWIsNotInProgress", "False"));
-			RETURN_WARDS_WHEN_TW_STARTS = Boolean.parseBoolean(territoryWarSettings.getProperty("ReturnWardsWhenTWStarts", "False"));
-			MINTWBADGEFORNOBLESS = Integer.decode(territoryWarSettings.getProperty("MinTerritoryBadgeForNobless", "100"));
-			MINTWBADGEFORSTRIDERS = Integer.decode(territoryWarSettings.getProperty("MinTerritoryBadgeForStriders", "50"));
-			MINTWBADGEFORBIGSTRIDER = Integer.decode(territoryWarSettings.getProperty("MinTerritoryBadgeForBigStrider", "80"));
-			
-			try (Connection con = L2DatabaseFactory.getInstance().getConnection())
+			while (rs.next())
 			{
-				PreparedStatement statement = con.prepareStatement("SELECT * FROM territory_spawnlist");
-				ResultSet rs = statement.executeQuery();
-				
-				while (rs.next())
+				int castleId = rs.getInt("castleId");
+				int npcId = rs.getInt("npcId");
+				Location loc = new Location(rs.getInt("x"),rs.getInt("y"),rs.getInt("z"),rs.getInt("heading"));
+				int spawnType = rs.getInt("spawnType");
+				if (!_territoryList.containsKey(castleId))
+					_territoryList.put(castleId, new Territory(castleId));
+				switch(spawnType)
 				{
-					int castleId = rs.getInt("castleId");
-					int npcId = rs.getInt("npcId");
-					Location loc = new Location(rs.getInt("x"),rs.getInt("y"),rs.getInt("z"),rs.getInt("heading"));
-					int spawnType = rs.getInt("spawnType");
-					if (!_territoryList.containsKey(castleId))
-						_territoryList.put(castleId, new Territory(castleId));
-					switch(spawnType)
-					{
-						case 0: // town npcs
-						case 1: // fortress npcs
-						case 2: // castle npcs
-							_territoryList.get(castleId).getSpawnList().add(new TerritoryNPCSpawn(castleId, loc, npcId, spawnType, null));
-							break;
-						case 3: // ward spawns
-							_territoryList.get(castleId).addWardSpawnPlace(loc);
-							break;
-						default:
-							_log.warning("Territory War Manager: Unknown npc type for " + rs.getInt("id"));
-					}
+					case 0: // town npcs
+					case 1: // fortress npcs
+					case 2: // castle npcs
+						_territoryList.get(castleId).getSpawnList().add(new TerritoryNPCSpawn(castleId, loc, npcId, spawnType, null));
+						break;
+					case 3: // ward spawns
+						_territoryList.get(castleId).addWardSpawnPlace(loc);
+						break;
+					default:
+						_log.warning("Territory War Manager: Unknown npc type for " + rs.getInt("id"));
 				}
-				
-				rs.close();
-				statement.close();
-			}
-			catch (Exception e)
-			{
-				_log.log(Level.WARNING, "Territory War Manager: SpawnList error: " + e.getMessage(), e);
 			}
 			
-			try (Connection con = L2DatabaseFactory.getInstance().getConnection())
+			rs.close();
+			statement.close();
+		}
+		catch (Exception e)
+		{
+			_log.log(Level.WARNING, "Territory War Manager: SpawnList error: " + e.getMessage(), e);
+		}
+			
+		try (Connection con = L2DatabaseFactory.getInstance().getConnection())
+		{
+			PreparedStatement statement = con.prepareStatement("SELECT * FROM territories");
+			ResultSet rs = statement.executeQuery();
+			
+			while (rs.next())
 			{
-				PreparedStatement statement = con.prepareStatement("SELECT * FROM territories");
-				ResultSet rs = statement.executeQuery();
+				int castleId = rs.getInt("castleId");
+				int fortId = rs.getInt("fortId");
+				String ownedWardIds = rs.getString("OwnedWardIds");
 				
-				while (rs.next())
+				Territory t = _territoryList.get(castleId);
+				if (t != null)
 				{
-					int castleId = rs.getInt("castleId");
-					int fortId = rs.getInt("fortId");
-					String ownedWardIds = rs.getString("OwnedWardIds");
+					t._fortId = fortId;
+					if (CastleManager.getInstance().getCastleById(castleId).getOwnerId() > 0)
+					{
+						t.setOwnerClan(ClanTable.getInstance().getClan(CastleManager.getInstance().getCastleById(castleId).getOwnerId()));
+						t.changeNPCsSpawn(0, true);
+					}
 					
-					Territory t = _territoryList.get(castleId);
-					if (t != null)
+					if (!ownedWardIds.isEmpty())
 					{
-						t._fortId = fortId;
-						if (CastleManager.getInstance().getCastleById(castleId).getOwnerId() > 0)
-						{
-							t.setOwnerClan(ClanTable.getInstance().getClan(CastleManager.getInstance().getCastleById(castleId).getOwnerId()));
-							t.changeNPCsSpawn(0, true);
-						}
-						
-						if (!ownedWardIds.isEmpty())
-						{
-							for(String wardId:ownedWardIds.split(";"))
-								if (Integer.parseInt(wardId) > 0)
-									addTerritoryWard(Integer.parseInt(wardId), castleId, 0, false);
-						}
+						for(String wardId:ownedWardIds.split(";"))
+							if (Integer.parseInt(wardId) > 0)
+								addTerritoryWard(Integer.parseInt(wardId), castleId, 0, false);
 					}
 				}
-				rs.close();
-				statement.close();
-			}
-			catch (Exception e)
-			{
-				_log.log(Level.WARNING, "Territory War Manager: territory list error(): " + e.getMessage(), e);
 			}
+			rs.close();
+			statement.close();
+		}
+		catch (Exception e)
+		{
+			_log.log(Level.WARNING, "Territory War Manager: territory list error(): " + e.getMessage(), e);
+		}
 			
+		try (Connection con = L2DatabaseFactory.getInstance().getConnection())
+		{
+			PreparedStatement statement = con.prepareStatement("SELECT * FROM territory_registrations");
+			ResultSet rs = statement.executeQuery();
 			
-			try (Connection con = L2DatabaseFactory.getInstance().getConnection())
+			while (rs.next())
 			{
-				PreparedStatement statement = con.prepareStatement("SELECT * FROM territory_registrations");
-				ResultSet rs = statement.executeQuery();
-				
-				while (rs.next())
+				int castleId = rs.getInt("castleId");
+				int registeredId = rs.getInt("registeredId");
+				if (ClanTable.getInstance().getClan(registeredId) != null)
 				{
-					int castleId = rs.getInt("castleId");
-					int registeredId = rs.getInt("registeredId");
-					if (ClanTable.getInstance().getClan(registeredId) != null)
-					{
-						if (_registeredClans.get(castleId) == null)
-							_registeredClans.put(castleId, new FastList<L2Clan>());
-						_registeredClans.get(castleId).add(ClanTable.getInstance().getClan(registeredId));
-					}
-					else
-					{
-						if (_registeredMercenaries.get(castleId) == null)
-							_registeredMercenaries.put(castleId, new FastList<Integer>());
-						_registeredMercenaries.get(castleId).add(registeredId);
-					}
+					if (_registeredClans.get(castleId) == null)
+						_registeredClans.put(castleId, new FastList<L2Clan>());
+					_registeredClans.get(castleId).add(ClanTable.getInstance().getClan(registeredId));
+				}
+				else
+				{
+					if (_registeredMercenaries.get(castleId) == null)
+						_registeredMercenaries.put(castleId, new FastList<Integer>());
+					_registeredMercenaries.get(castleId).add(registeredId);
 				}
-				rs.close();
-				statement.close();
-			}
-			catch (Exception e)
-			{
-				_log.log(Level.WARNING, "Territory War Manager: registration list error: " + e.getMessage(), e);
 			}
+			rs.close();
+			statement.close();
 		}
 		catch (Exception e)
 		{
-			//_initialized = false;
-			_log.log(Level.WARNING, "Error while loading Territory War Manager! " + e.getMessage(), e);
+			_log.log(Level.WARNING, "Territory War Manager: registration list error: " + e.getMessage(), e);
 		}
 	}
 	

+ 1 - 8
L2J_Server_BETA/java/com/l2jserver/loginserver/network/L2LoginClient.java

@@ -44,7 +44,7 @@ import com.l2jserver.util.crypt.ScrambledKeyPair;
  */
 public final class L2LoginClient extends MMOClient<MMOConnection<L2LoginClient>>
 {
-	private static Logger _log = Logger.getLogger(L2LoginClient.class.getName());
+	private static final Logger _log = Logger.getLogger(L2LoginClient.class.getName());
 	
 	public static enum LoginClientState
 	{
@@ -86,9 +86,6 @@ public final class L2LoginClient extends MMOClient<MMOConnection<L2LoginClient>>
 		_loginCrypt.setKey(_blowfishKey);
 	}
 	
-	/**
-	 * @see org.mmocore.network.MMOClient#decrypt(java.nio.ByteBuffer, int)
-	 */
 	@Override
 	public boolean decrypt(ByteBuffer buf, int size)
 	{
@@ -112,9 +109,6 @@ public final class L2LoginClient extends MMOClient<MMOConnection<L2LoginClient>>
 		}
 	}
 	
-	/**
-	 * @see org.mmocore.network.MMOClient#encrypt(java.nio.ByteBuffer, int)
-	 */
 	@Override
 	public boolean encrypt(ByteBuffer buf, int size)
 	{
@@ -128,7 +122,6 @@ public final class L2LoginClient extends MMOClient<MMOConnection<L2LoginClient>>
 			_log.warning(getClass().getSimpleName() + ": " + e.getMessage());
 			return false;
 		}
-		
 		buf.position(offset + size);
 		return true;
 	}

+ 1 - 2
L2J_Server_BETA/java/com/l2jserver/util/crypt/BlowfishEngine.java

@@ -1229,8 +1229,7 @@ public final class BlowfishEngine
 	
 	/**
 	 * Method to encrypt the block at the given index.<br>
-	 * The encrypted block goes directly to the source array at the given<br>
-	 * index.
+	 * The encrypted block goes directly to the source array at the given index.
 	 * @param src source array with the plain data
 	 * @param srcIndex index where the block to encrypt is located
 	 * @throws IllegalStateException The cipher was not yet initialized

+ 3 - 4
L2J_Server_BETA/java/com/l2jserver/util/crypt/LoginCrypt.java

@@ -49,7 +49,7 @@ public class LoginCrypt
 	
 	/**
 	 * Method to initialize the the blowfish cipher with dynamic key.
-	 * @param key the blowfish key to initialize the dynamic blowish cipher with
+	 * @param key the blowfish key to initialize the dynamic blowfish cipher with
 	 */
 	public void setKey(byte[] key)
 	{
@@ -57,7 +57,7 @@ public class LoginCrypt
 	}
 	
 	/**
-	 * Method to decrypt an incomming login client packet.<br>
+	 * Method to decrypt an incoming login client packet.
 	 * @param raw array with encrypted data
 	 * @param offset offset where the encrypted data is located
 	 * @param size number of bytes of encrypted data
@@ -81,8 +81,7 @@ public class LoginCrypt
 	
 	/**
 	 * Method to encrypt an outgoing packet to login client.<br>
-	 * <br>
-	 * Performs padding and resizing of data array.<br>
+	 * Performs padding and resizing of data array.
 	 * @param raw array with plain data
 	 * @param offset offset where the plain data is located
 	 * @param size number of bytes of plain data

+ 18 - 23
L2J_Server_BETA/java/com/l2jserver/util/crypt/NewCrypt.java

@@ -16,19 +16,19 @@ package com.l2jserver.util.crypt;
 
 /**
  * Class to use a blowfish cipher with ECB processing.<br>
- * <br>
  * Static methods are present to append/check the checksum of<br>
  * packets exchanged between the following partners:<br>
  * Login Server <-> Game Client<br>
  * Login Server <-> Game Server<br>
- * <br>
- * Also a static method is provided for the initial xor encryption<br>
- * between Login Server <-> Game Client.
+ * Also a static method is provided for the initial xor encryption between Login Server <-> Game Client.
  */
 public final class NewCrypt
 {
 	private final BlowfishEngine _cipher;
 	
+	/**
+	 * @param blowfishKey
+	 */
 	public NewCrypt(byte[] blowfishKey)
 	{
 		_cipher = new BlowfishEngine();
@@ -41,8 +41,7 @@ public final class NewCrypt
 	}
 	
 	/**
-	 * Equivalent to calling {@link #verifyChecksum(byte[], int, int)}<br>
-	 * with parameters (raw, 0, raw.length)
+	 * Equivalent to calling {@link #verifyChecksum(byte[], int, int)} with parameters (raw, 0, raw.length)
 	 * @param raw data array to be verified
 	 * @return true when the checksum of the data is valid, false otherwise
 	 * @see #verifyChecksum(byte[], int, int)
@@ -53,9 +52,7 @@ public final class NewCrypt
 	}
 	
 	/**
-	 * Method to verify the checksum of a packet received by<br>
-	 * login server from game client.<br>
-	 * <br>
+	 * Method to verify the checksum of a packet received by login server from game client.<br>
 	 * This is also used for game server <-> login server communication.
 	 * @param raw data array to be verified
 	 * @param offset at which offset to start verifying
@@ -94,8 +91,7 @@ public final class NewCrypt
 	}
 	
 	/**
-	 * Equivalent to calling {@link #appendChecksum(byte[], int, int)}<br>
-	 * with parameters (raw, 0, raw.length)
+	 * Equivalent to calling {@link #appendChecksum(byte[], int, int)} with parameters (raw, 0, raw.length)
 	 * @param raw data array to compute the checksum from
 	 */
 	public static void appendChecksum(final byte[] raw)
@@ -138,23 +134,25 @@ public final class NewCrypt
 	}
 	
 	/**
-	 * Packet is first XOR encoded with <code>key</code> Then, the last 4 bytes are overwritten with the the XOR "key". Thus this assume that there is enough room for the key to fit without overwriting data.
+	 * Packet is first XOR encoded with <code>key</code> then, the last 4 bytes are overwritten with the the XOR "key".<br>
+	 * Thus this assume that there is enough room for the key to fit without overwriting data.
 	 * @param raw The raw bytes to be encrypted
 	 * @param key The 4 bytes (int) XOR key
 	 */
-	public static void encXORPass(final byte[] raw, final int key)
+	public static void encXORPass(byte[] raw, int key)
 	{
 		NewCrypt.encXORPass(raw, 0, raw.length, key);
 	}
 	
 	/**
-	 * Packet is first XOR encoded with <code>key</code> Then, the last 4 bytes are overwritten with the the XOR "key". Thus this assume that there is enough room for the key to fit without overwriting data.
+	 * Packet is first XOR encoded with <code>key</code> then, the last 4 bytes are overwritten with the the XOR "key".<br>
+	 * Thus this assume that there is enough room for the key to fit without overwriting data.
 	 * @param raw The raw bytes to be encrypted
 	 * @param offset The beginning of the data to be encrypted
 	 * @param size Length of the data to be encrypted
 	 * @param key The 4 bytes (int) XOR key
 	 */
-	public static void encXORPass(final byte[] raw, final int offset, final int size, int key)
+	static void encXORPass(byte[] raw, final int offset, final int size, int key)
 	{
 		int stop = size - 8;
 		int pos = 4 + offset;
@@ -185,9 +183,8 @@ public final class NewCrypt
 	}
 	
 	/**
-	 * Method to decrypt using Blowfish-Blockcipher in ECB mode. The results<br>
-	 * will be directly placed inside {@code raw} array.<br>
-	 * <br>
+	 * Method to decrypt using Blowfish-Blockcipher in ECB mode.<br>
+	 * The results will be directly placed inside {@code raw} array.<br>
 	 * This method does not do any error checking, since the calling code<br>
 	 * should ensure sizes.
 	 * @param raw the data array to be decrypted
@@ -203,11 +200,9 @@ public final class NewCrypt
 	}
 	
 	/**
-	 * Method to encrypt using Blowfish-Blockcipher in ECB mode. The results<br>
-	 * will be directly placed inside {@code raw} array.<br>
-	 * <br>
-	 * This method does not do any error checking, since the calling code<br>
-	 * should ensure sizes.
+	 * Method to encrypt using Blowfish-Blockcipher in ECB mode.<br>
+	 * The results will be directly placed inside {@code raw} array.<br>
+	 * This method does not do any error checking, since the calling code should ensure sizes.
 	 * @param raw the data array to be decrypted
 	 * @param offset the offset at which to start decrypting
 	 * @param size the number of bytes to be decrypted

Энэ ялгаанд хэт олон файл өөрчлөгдсөн тул зарим файлыг харуулаагүй болно