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

Loggers rework:

Using SLF4J as logging facade and JDK Logger for backwards
compatibility.
Fixed several broken logs and stack traces.
Updated only for Config and IXmlReader and child classes.
Renamed local variable at Config to avoid confusion with JDK's Character
class.
Removed several loggers shadowing parent logger.
Zoey76 9 жил өмнө
parent
commit
c59570d5ed
45 өөрчлөгдсөн 438 нэмэгдсэн , 467 устгасан
  1. 2 0
      L2J_Server/.classpath
  2. 1 1
      L2J_Server/dist/game/config/Character.properties
  3. 244 247
      L2J_Server/java/com/l2jserver/Config.java
  4. 5 6
      L2J_Server/java/com/l2jserver/gameserver/data/xml/impl/AdminData.java
  5. 1 1
      L2J_Server/java/com/l2jserver/gameserver/data/xml/impl/ArmorSetsData.java
  6. 6 7
      L2J_Server/java/com/l2jserver/gameserver/data/xml/impl/BuyListData.java
  7. 3 7
      L2J_Server/java/com/l2jserver/gameserver/data/xml/impl/CategoryData.java
  8. 1 1
      L2J_Server/java/com/l2jserver/gameserver/data/xml/impl/ClassListData.java
  9. 1 2
      L2J_Server/java/com/l2jserver/gameserver/data/xml/impl/DoorData.java
  10. 6 7
      L2J_Server/java/com/l2jserver/gameserver/data/xml/impl/EnchantItemData.java
  11. 3 3
      L2J_Server/java/com/l2jserver/gameserver/data/xml/impl/EnchantItemGroupsData.java
  12. 8 8
      L2J_Server/java/com/l2jserver/gameserver/data/xml/impl/EnchantItemHPBonusData.java
  13. 1 2
      L2J_Server/java/com/l2jserver/gameserver/data/xml/impl/EnchantItemOptionsData.java
  14. 2 3
      L2J_Server/java/com/l2jserver/gameserver/data/xml/impl/EnchantSkillGroupsData.java
  15. 3 3
      L2J_Server/java/com/l2jserver/gameserver/data/xml/impl/ExperienceData.java
  16. 3 3
      L2J_Server/java/com/l2jserver/gameserver/data/xml/impl/FishData.java
  17. 1 1
      L2J_Server/java/com/l2jserver/gameserver/data/xml/impl/FishingMonstersData.java
  18. 1 1
      L2J_Server/java/com/l2jserver/gameserver/data/xml/impl/FishingRodsData.java
  19. 1 1
      L2J_Server/java/com/l2jserver/gameserver/data/xml/impl/HennaData.java
  20. 8 12
      L2J_Server/java/com/l2jserver/gameserver/data/xml/impl/HitConditionBonusData.java
  21. 1 1
      L2J_Server/java/com/l2jserver/gameserver/data/xml/impl/InitialEquipmentData.java
  22. 3 3
      L2J_Server/java/com/l2jserver/gameserver/data/xml/impl/InitialShortcutData.java
  23. 2 2
      L2J_Server/java/com/l2jserver/gameserver/data/xml/impl/KarmaData.java
  24. 8 10
      L2J_Server/java/com/l2jserver/gameserver/data/xml/impl/MultisellData.java
  25. 5 5
      L2J_Server/java/com/l2jserver/gameserver/data/xml/impl/NpcData.java
  26. 2 2
      L2J_Server/java/com/l2jserver/gameserver/data/xml/impl/OptionData.java
  27. 2 2
      L2J_Server/java/com/l2jserver/gameserver/data/xml/impl/PetDataTable.java
  28. 2 5
      L2J_Server/java/com/l2jserver/gameserver/data/xml/impl/PlayerTemplateData.java
  29. 1 1
      L2J_Server/java/com/l2jserver/gameserver/data/xml/impl/PlayerXpPercentLostData.java
  30. 9 9
      L2J_Server/java/com/l2jserver/gameserver/data/xml/impl/RecipeData.java
  31. 3 3
      L2J_Server/java/com/l2jserver/gameserver/data/xml/impl/SecondaryAuthData.java
  32. 4 4
      L2J_Server/java/com/l2jserver/gameserver/data/xml/impl/SiegeScheduleData.java
  33. 2 2
      L2J_Server/java/com/l2jserver/gameserver/data/xml/impl/SkillLearnData.java
  34. 17 17
      L2J_Server/java/com/l2jserver/gameserver/data/xml/impl/SkillTreesData.java
  35. 1 1
      L2J_Server/java/com/l2jserver/gameserver/data/xml/impl/StaticObjectData.java
  36. 2 2
      L2J_Server/java/com/l2jserver/gameserver/data/xml/impl/TransformData.java
  37. 1 4
      L2J_Server/java/com/l2jserver/gameserver/data/xml/impl/UIData.java
  38. 10 15
      L2J_Server/java/com/l2jserver/gameserver/datatables/SpawnTable.java
  39. 14 14
      L2J_Server/java/com/l2jserver/gameserver/instancemanager/CastleManorManager.java
  40. 8 7
      L2J_Server/java/com/l2jserver/gameserver/instancemanager/InstanceManager.java
  41. 2 1
      L2J_Server/java/com/l2jserver/gameserver/instancemanager/MapRegionManager.java
  42. 5 5
      L2J_Server/java/com/l2jserver/gameserver/instancemanager/WalkingManager.java
  43. 18 22
      L2J_Server/java/com/l2jserver/gameserver/instancemanager/ZoneManager.java
  44. 6 6
      L2J_Server/java/com/l2jserver/loginserver/GameServerTable.java
  45. 9 8
      L2J_Server/java/com/l2jserver/util/data/xml/IXmlReader.java

+ 2 - 0
L2J_Server/.classpath

@@ -10,5 +10,7 @@
 	<classpathentry kind="lib" path="dist/libs/mail-1.5.2.jar" />
 	<classpathentry kind="lib" path="dist/libs/mmocore.jar" />
 	<classpathentry kind="lib" path="dist/libs/weupnp-0.1.3.jar" />
+	<classpathentry kind="lib" path="dist/libs/slf4j-api-1.7.12.jar" />
+	<classpathentry kind="lib" path="dist/libs/slf4j-jdk14-1.7.12.jar" />
 	<classpathentry kind="output" path="bin" />
 </classpath>

+ 1 - 1
L2J_Server/dist/game/config/Character.properties

@@ -702,7 +702,7 @@ PlayerSpawnProtection = 600
 # of the item usage from items in this list.
 # Format: itemId,itemId,itemId,....
 # Default: 0
-PlayerSpawnProtectionAllowedItems = 0
+PlayerSpawnProtectionAllowedItems =
 
 # Teleport spawn protection time. It will protect the player in the
 # teleport spawn for the given time. 0 to disable feature

+ 244 - 247
L2J_Server/java/com/l2jserver/Config.java

@@ -46,11 +46,11 @@ import java.util.List;
 import java.util.Map;
 import java.util.Properties;
 import java.util.StringTokenizer;
-import java.util.logging.Level;
-import java.util.logging.Logger;
 import java.util.stream.Collectors;
 import java.util.stream.IntStream;
 
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 import org.w3c.dom.Document;
 import org.w3c.dom.NamedNodeMap;
 import org.w3c.dom.Node;
@@ -72,7 +72,7 @@ import com.l2jserver.util.data.xml.IXmlReader;
  */
 public final class Config
 {
-	private static final Logger _log = Logger.getLogger(Config.class.getName());
+	private static final Logger _log = LoggerFactory.getLogger(Config.class);
 	
 	// --------------------------------------------------
 	// Constants
@@ -1159,7 +1159,7 @@ public final class Config
 			}
 			catch (IOException e)
 			{
-				_log.log(Level.WARNING, "Error setting datapack root!", e);
+				_log.warn("Error setting datapack root!", e);
 				DATAPACK_ROOT = new File(".");
 			}
 			
@@ -1180,7 +1180,7 @@ public final class Config
 				}
 				catch (NumberFormatException e)
 				{
-					_log.log(Level.WARNING, "Wrong config protocol version: " + protocol + ". Skipped.");
+					_log.warn("Wrong config protocol version: {}, skipped.", protocol);
 				}
 			}
 			
@@ -1373,33 +1373,33 @@ public final class Config
 			ALLOW_WYVERN_DURING_SIEGE = Feature.getBoolean("AllowRideWyvernDuringSiege", true);
 			
 			// Load Character L2Properties file (if exists)
-			final PropertiesParser Character = new PropertiesParser(CHARACTER_CONFIG_FILE);
-			
-			ALT_GAME_DELEVEL = Character.getBoolean("Delevel", true);
-			DECREASE_SKILL_LEVEL = Character.getBoolean("DecreaseSkillOnDelevel", true);
-			ALT_WEIGHT_LIMIT = Character.getDouble("AltWeightLimit", 1);
-			RUN_SPD_BOOST = Character.getInt("RunSpeedBoost", 0);
-			DEATH_PENALTY_CHANCE = Character.getInt("DeathPenaltyChance", 20);
-			RESPAWN_RESTORE_CP = Character.getDouble("RespawnRestoreCP", 0) / 100;
-			RESPAWN_RESTORE_HP = Character.getDouble("RespawnRestoreHP", 65) / 100;
-			RESPAWN_RESTORE_MP = Character.getDouble("RespawnRestoreMP", 0) / 100;
-			HP_REGEN_MULTIPLIER = Character.getDouble("HpRegenMultiplier", 100) / 100;
-			MP_REGEN_MULTIPLIER = Character.getDouble("MpRegenMultiplier", 100) / 100;
-			CP_REGEN_MULTIPLIER = Character.getDouble("CpRegenMultiplier", 100) / 100;
-			ALT_GAME_TIREDNESS = Character.getBoolean("AltGameTiredness", false);
-			ENABLE_MODIFY_SKILL_DURATION = Character.getBoolean("EnableModifySkillDuration", false);
+			final PropertiesParser character = new PropertiesParser(CHARACTER_CONFIG_FILE);
+			
+			ALT_GAME_DELEVEL = character.getBoolean("Delevel", true);
+			DECREASE_SKILL_LEVEL = character.getBoolean("DecreaseSkillOnDelevel", true);
+			ALT_WEIGHT_LIMIT = character.getDouble("AltWeightLimit", 1);
+			RUN_SPD_BOOST = character.getInt("RunSpeedBoost", 0);
+			DEATH_PENALTY_CHANCE = character.getInt("DeathPenaltyChance", 20);
+			RESPAWN_RESTORE_CP = character.getDouble("RespawnRestoreCP", 0) / 100;
+			RESPAWN_RESTORE_HP = character.getDouble("RespawnRestoreHP", 65) / 100;
+			RESPAWN_RESTORE_MP = character.getDouble("RespawnRestoreMP", 0) / 100;
+			HP_REGEN_MULTIPLIER = character.getDouble("HpRegenMultiplier", 100) / 100;
+			MP_REGEN_MULTIPLIER = character.getDouble("MpRegenMultiplier", 100) / 100;
+			CP_REGEN_MULTIPLIER = character.getDouble("CpRegenMultiplier", 100) / 100;
+			ALT_GAME_TIREDNESS = character.getBoolean("AltGameTiredness", false);
+			ENABLE_MODIFY_SKILL_DURATION = character.getBoolean("EnableModifySkillDuration", false);
 			
 			// Create Map only if enabled
 			if (ENABLE_MODIFY_SKILL_DURATION)
 			{
-				String[] propertySplit = Character.getString("SkillDurationList", "").split(";");
+				String[] propertySplit = character.getString("SkillDurationList", "").split(";");
 				SKILL_DURATION_LIST = new HashMap<>(propertySplit.length);
 				for (String skill : propertySplit)
 				{
 					String[] skillSplit = skill.split(",");
 					if (skillSplit.length != 2)
 					{
-						_log.warning(StringUtil.concat("[SkillDurationList]: invalid config property -> SkillDurationList \"", skill, "\""));
+						_log.warn("[SkillDurationList]: invalid config property -> SkillDurationList {}", skill);
 					}
 					else
 					{
@@ -1411,24 +1411,24 @@ public final class Config
 						{
 							if (!skill.isEmpty())
 							{
-								_log.warning(StringUtil.concat("[SkillDurationList]: invalid config property -> SkillList \"", skillSplit[0], "\"", skillSplit[1]));
+								_log.warn("[SkillDurationList]: invalid config property -> SkillList {}", skill);
 							}
 						}
 					}
 				}
 			}
-			ENABLE_MODIFY_SKILL_REUSE = Character.getBoolean("EnableModifySkillReuse", false);
+			ENABLE_MODIFY_SKILL_REUSE = character.getBoolean("EnableModifySkillReuse", false);
 			// Create Map only if enabled
 			if (ENABLE_MODIFY_SKILL_REUSE)
 			{
-				String[] propertySplit = Character.getString("SkillReuseList", "").split(";");
+				String[] propertySplit = character.getString("SkillReuseList", "").split(";");
 				SKILL_REUSE_LIST = new HashMap<>(propertySplit.length);
 				for (String skill : propertySplit)
 				{
 					String[] skillSplit = skill.split(",");
 					if (skillSplit.length != 2)
 					{
-						_log.warning(StringUtil.concat("[SkillReuseList]: invalid config property -> SkillReuseList \"", skill, "\""));
+						_log.warn("[SkillReuseList]: invalid config property -> SkillReuseList {}", skill);
 					}
 					else
 					{
@@ -1440,86 +1440,86 @@ public final class Config
 						{
 							if (!skill.isEmpty())
 							{
-								_log.warning(StringUtil.concat("[SkillReuseList]: invalid config property -> SkillList \"", skillSplit[0], "\"", skillSplit[1]));
+								_log.warn("[SkillReuseList]: invalid config property -> SkillList {}", skill);
 							}
 						}
 					}
 				}
 			}
 			
-			AUTO_LEARN_SKILLS = Character.getBoolean("AutoLearnSkills", false);
-			AUTO_LEARN_FS_SKILLS = Character.getBoolean("AutoLearnForgottenScrollSkills", false);
-			AUTO_LOOT_HERBS = Character.getBoolean("AutoLootHerbs", false);
-			BUFFS_MAX_AMOUNT = Character.getByte("MaxBuffAmount", (byte) 20);
-			TRIGGERED_BUFFS_MAX_AMOUNT = Character.getByte("MaxTriggeredBuffAmount", (byte) 12);
-			DANCES_MAX_AMOUNT = Character.getByte("MaxDanceAmount", (byte) 12);
-			DANCE_CANCEL_BUFF = Character.getBoolean("DanceCancelBuff", false);
-			DANCE_CONSUME_ADDITIONAL_MP = Character.getBoolean("DanceConsumeAdditionalMP", true);
-			ALT_STORE_DANCES = Character.getBoolean("AltStoreDances", false);
-			AUTO_LEARN_DIVINE_INSPIRATION = Character.getBoolean("AutoLearnDivineInspiration", false);
-			ALT_GAME_CANCEL_BOW = Character.getString("AltGameCancelByHit", "Cast").equalsIgnoreCase("bow") || Character.getString("AltGameCancelByHit", "Cast").equalsIgnoreCase("all");
-			ALT_GAME_CANCEL_CAST = Character.getString("AltGameCancelByHit", "Cast").equalsIgnoreCase("cast") || Character.getString("AltGameCancelByHit", "Cast").equalsIgnoreCase("all");
-			ALT_GAME_MAGICFAILURES = Character.getBoolean("MagicFailures", true);
-			PLAYER_FAKEDEATH_UP_PROTECTION = Character.getInt("PlayerFakeDeathUpProtection", 0);
-			STORE_SKILL_COOLTIME = Character.getBoolean("StoreSkillCooltime", true);
-			SUBCLASS_STORE_SKILL_COOLTIME = Character.getBoolean("SubclassStoreSkillCooltime", false);
-			SUMMON_STORE_SKILL_COOLTIME = Character.getBoolean("SummonStoreSkillCooltime", true);
-			ALT_GAME_SHIELD_BLOCKS = Character.getBoolean("AltShieldBlocks", false);
-			ALT_PERFECT_SHLD_BLOCK = Character.getInt("AltPerfectShieldBlockRate", 10);
-			EFFECT_TICK_RATIO = Character.getLong("EffectTickRatio", 666);
-			ALLOW_CLASS_MASTERS = Character.getBoolean("AllowClassMasters", false);
-			ALLOW_ENTIRE_TREE = Character.getBoolean("AllowEntireTree", false);
-			ALTERNATE_CLASS_MASTER = Character.getBoolean("AlternateClassMaster", false);
+			AUTO_LEARN_SKILLS = character.getBoolean("AutoLearnSkills", false);
+			AUTO_LEARN_FS_SKILLS = character.getBoolean("AutoLearnForgottenScrollSkills", false);
+			AUTO_LOOT_HERBS = character.getBoolean("AutoLootHerbs", false);
+			BUFFS_MAX_AMOUNT = character.getByte("MaxBuffAmount", (byte) 20);
+			TRIGGERED_BUFFS_MAX_AMOUNT = character.getByte("MaxTriggeredBuffAmount", (byte) 12);
+			DANCES_MAX_AMOUNT = character.getByte("MaxDanceAmount", (byte) 12);
+			DANCE_CANCEL_BUFF = character.getBoolean("DanceCancelBuff", false);
+			DANCE_CONSUME_ADDITIONAL_MP = character.getBoolean("DanceConsumeAdditionalMP", true);
+			ALT_STORE_DANCES = character.getBoolean("AltStoreDances", false);
+			AUTO_LEARN_DIVINE_INSPIRATION = character.getBoolean("AutoLearnDivineInspiration", false);
+			ALT_GAME_CANCEL_BOW = character.getString("AltGameCancelByHit", "Cast").equalsIgnoreCase("bow") || character.getString("AltGameCancelByHit", "Cast").equalsIgnoreCase("all");
+			ALT_GAME_CANCEL_CAST = character.getString("AltGameCancelByHit", "Cast").equalsIgnoreCase("cast") || character.getString("AltGameCancelByHit", "Cast").equalsIgnoreCase("all");
+			ALT_GAME_MAGICFAILURES = character.getBoolean("MagicFailures", true);
+			PLAYER_FAKEDEATH_UP_PROTECTION = character.getInt("PlayerFakeDeathUpProtection", 0);
+			STORE_SKILL_COOLTIME = character.getBoolean("StoreSkillCooltime", true);
+			SUBCLASS_STORE_SKILL_COOLTIME = character.getBoolean("SubclassStoreSkillCooltime", false);
+			SUMMON_STORE_SKILL_COOLTIME = character.getBoolean("SummonStoreSkillCooltime", true);
+			ALT_GAME_SHIELD_BLOCKS = character.getBoolean("AltShieldBlocks", false);
+			ALT_PERFECT_SHLD_BLOCK = character.getInt("AltPerfectShieldBlockRate", 10);
+			EFFECT_TICK_RATIO = character.getLong("EffectTickRatio", 666);
+			ALLOW_CLASS_MASTERS = character.getBoolean("AllowClassMasters", false);
+			ALLOW_ENTIRE_TREE = character.getBoolean("AllowEntireTree", false);
+			ALTERNATE_CLASS_MASTER = character.getBoolean("AlternateClassMaster", false);
 			if (ALLOW_CLASS_MASTERS || ALTERNATE_CLASS_MASTER)
 			{
-				CLASS_MASTER_SETTINGS = new ClassMasterSettings(Character.getString("ConfigClassMaster", ""));
-			}
-			LIFE_CRYSTAL_NEEDED = Character.getBoolean("LifeCrystalNeeded", true);
-			ES_SP_BOOK_NEEDED = Character.getBoolean("EnchantSkillSpBookNeeded", true);
-			DIVINE_SP_BOOK_NEEDED = Character.getBoolean("DivineInspirationSpBookNeeded", true);
-			ALT_GAME_SKILL_LEARN = Character.getBoolean("AltGameSkillLearn", false);
-			ALT_GAME_SUBCLASS_WITHOUT_QUESTS = Character.getBoolean("AltSubClassWithoutQuests", false);
-			ALT_GAME_SUBCLASS_EVERYWHERE = Character.getBoolean("AltSubclassEverywhere", false);
-			RESTORE_SERVITOR_ON_RECONNECT = Character.getBoolean("RestoreServitorOnReconnect", true);
-			RESTORE_PET_ON_RECONNECT = Character.getBoolean("RestorePetOnReconnect", true);
-			ALLOW_TRANSFORM_WITHOUT_QUEST = Character.getBoolean("AltTransformationWithoutQuest", false);
-			FEE_DELETE_TRANSFER_SKILLS = Character.getInt("FeeDeleteTransferSkills", 10000000);
-			FEE_DELETE_SUBCLASS_SKILLS = Character.getInt("FeeDeleteSubClassSkills", 10000000);
-			ENABLE_VITALITY = Character.getBoolean("EnableVitality", true);
-			RECOVER_VITALITY_ON_RECONNECT = Character.getBoolean("RecoverVitalityOnReconnect", true);
-			STARTING_VITALITY_POINTS = Character.getInt("StartingVitalityPoints", 20000);
-			MAX_BONUS_EXP = Character.getDouble("MaxExpBonus", 3.5);
-			MAX_BONUS_SP = Character.getDouble("MaxSpBonus", 3.5);
-			MAX_RUN_SPEED = Character.getInt("MaxRunSpeed", 250);
-			MAX_PCRIT_RATE = Character.getInt("MaxPCritRate", 500);
-			MAX_MCRIT_RATE = Character.getInt("MaxMCritRate", 200);
-			MAX_PATK_SPEED = Character.getInt("MaxPAtkSpeed", 1500);
-			MAX_MATK_SPEED = Character.getInt("MaxMAtkSpeed", 1999);
-			MAX_EVASION = Character.getInt("MaxEvasion", 250);
-			MIN_ABNORMAL_STATE_SUCCESS_RATE = Character.getInt("MinAbnormalStateSuccessRate", 10);
-			MAX_ABNORMAL_STATE_SUCCESS_RATE = Character.getInt("MaxAbnormalStateSuccessRate", 90);
-			MAX_SUBCLASS = Character.getByte("MaxSubclass", (byte) 3);
-			BASE_SUBCLASS_LEVEL = Character.getByte("BaseSubclassLevel", (byte) 40);
-			MAX_SUBCLASS_LEVEL = Character.getByte("MaxSubclassLevel", (byte) 80);
-			MAX_PVTSTORESELL_SLOTS_DWARF = Character.getInt("MaxPvtStoreSellSlotsDwarf", 4);
-			MAX_PVTSTORESELL_SLOTS_OTHER = Character.getInt("MaxPvtStoreSellSlotsOther", 3);
-			MAX_PVTSTOREBUY_SLOTS_DWARF = Character.getInt("MaxPvtStoreBuySlotsDwarf", 5);
-			MAX_PVTSTOREBUY_SLOTS_OTHER = Character.getInt("MaxPvtStoreBuySlotsOther", 4);
-			INVENTORY_MAXIMUM_NO_DWARF = Character.getInt("MaximumSlotsForNoDwarf", 80);
-			INVENTORY_MAXIMUM_DWARF = Character.getInt("MaximumSlotsForDwarf", 100);
-			INVENTORY_MAXIMUM_GM = Character.getInt("MaximumSlotsForGMPlayer", 250);
-			INVENTORY_MAXIMUM_QUEST_ITEMS = Character.getInt("MaximumSlotsForQuestItems", 100);
+				CLASS_MASTER_SETTINGS = new ClassMasterSettings(character.getString("ConfigClassMaster", ""));
+			}
+			LIFE_CRYSTAL_NEEDED = character.getBoolean("LifeCrystalNeeded", true);
+			ES_SP_BOOK_NEEDED = character.getBoolean("EnchantSkillSpBookNeeded", true);
+			DIVINE_SP_BOOK_NEEDED = character.getBoolean("DivineInspirationSpBookNeeded", true);
+			ALT_GAME_SKILL_LEARN = character.getBoolean("AltGameSkillLearn", false);
+			ALT_GAME_SUBCLASS_WITHOUT_QUESTS = character.getBoolean("AltSubClassWithoutQuests", false);
+			ALT_GAME_SUBCLASS_EVERYWHERE = character.getBoolean("AltSubclassEverywhere", false);
+			RESTORE_SERVITOR_ON_RECONNECT = character.getBoolean("RestoreServitorOnReconnect", true);
+			RESTORE_PET_ON_RECONNECT = character.getBoolean("RestorePetOnReconnect", true);
+			ALLOW_TRANSFORM_WITHOUT_QUEST = character.getBoolean("AltTransformationWithoutQuest", false);
+			FEE_DELETE_TRANSFER_SKILLS = character.getInt("FeeDeleteTransferSkills", 10000000);
+			FEE_DELETE_SUBCLASS_SKILLS = character.getInt("FeeDeleteSubClassSkills", 10000000);
+			ENABLE_VITALITY = character.getBoolean("EnableVitality", true);
+			RECOVER_VITALITY_ON_RECONNECT = character.getBoolean("RecoverVitalityOnReconnect", true);
+			STARTING_VITALITY_POINTS = character.getInt("StartingVitalityPoints", 20000);
+			MAX_BONUS_EXP = character.getDouble("MaxExpBonus", 3.5);
+			MAX_BONUS_SP = character.getDouble("MaxSpBonus", 3.5);
+			MAX_RUN_SPEED = character.getInt("MaxRunSpeed", 250);
+			MAX_PCRIT_RATE = character.getInt("MaxPCritRate", 500);
+			MAX_MCRIT_RATE = character.getInt("MaxMCritRate", 200);
+			MAX_PATK_SPEED = character.getInt("MaxPAtkSpeed", 1500);
+			MAX_MATK_SPEED = character.getInt("MaxMAtkSpeed", 1999);
+			MAX_EVASION = character.getInt("MaxEvasion", 250);
+			MIN_ABNORMAL_STATE_SUCCESS_RATE = character.getInt("MinAbnormalStateSuccessRate", 10);
+			MAX_ABNORMAL_STATE_SUCCESS_RATE = character.getInt("MaxAbnormalStateSuccessRate", 90);
+			MAX_SUBCLASS = character.getByte("MaxSubclass", (byte) 3);
+			BASE_SUBCLASS_LEVEL = character.getByte("BaseSubclassLevel", (byte) 40);
+			MAX_SUBCLASS_LEVEL = character.getByte("MaxSubclassLevel", (byte) 80);
+			MAX_PVTSTORESELL_SLOTS_DWARF = character.getInt("MaxPvtStoreSellSlotsDwarf", 4);
+			MAX_PVTSTORESELL_SLOTS_OTHER = character.getInt("MaxPvtStoreSellSlotsOther", 3);
+			MAX_PVTSTOREBUY_SLOTS_DWARF = character.getInt("MaxPvtStoreBuySlotsDwarf", 5);
+			MAX_PVTSTOREBUY_SLOTS_OTHER = character.getInt("MaxPvtStoreBuySlotsOther", 4);
+			INVENTORY_MAXIMUM_NO_DWARF = character.getInt("MaximumSlotsForNoDwarf", 80);
+			INVENTORY_MAXIMUM_DWARF = character.getInt("MaximumSlotsForDwarf", 100);
+			INVENTORY_MAXIMUM_GM = character.getInt("MaximumSlotsForGMPlayer", 250);
+			INVENTORY_MAXIMUM_QUEST_ITEMS = character.getInt("MaximumSlotsForQuestItems", 100);
 			MAX_ITEM_IN_PACKET = Math.max(INVENTORY_MAXIMUM_NO_DWARF, Math.max(INVENTORY_MAXIMUM_DWARF, INVENTORY_MAXIMUM_GM));
-			WAREHOUSE_SLOTS_DWARF = Character.getInt("MaximumWarehouseSlotsForDwarf", 120);
-			WAREHOUSE_SLOTS_NO_DWARF = Character.getInt("MaximumWarehouseSlotsForNoDwarf", 100);
-			WAREHOUSE_SLOTS_CLAN = Character.getInt("MaximumWarehouseSlotsForClan", 150);
-			ALT_FREIGHT_SLOTS = Character.getInt("MaximumFreightSlots", 200);
-			ALT_FREIGHT_PRICE = Character.getInt("FreightPrice", 1000);
-			ENCHANT_CHANCE_ELEMENT_STONE = Character.getDouble("EnchantChanceElementStone", 50);
-			ENCHANT_CHANCE_ELEMENT_CRYSTAL = Character.getDouble("EnchantChanceElementCrystal", 30);
-			ENCHANT_CHANCE_ELEMENT_JEWEL = Character.getDouble("EnchantChanceElementJewel", 20);
-			ENCHANT_CHANCE_ELEMENT_ENERGY = Character.getDouble("EnchantChanceElementEnergy", 10);
-			String[] notenchantable = Character.getString("EnchantBlackList", "7816,7817,7818,7819,7820,7821,7822,7823,7824,7825,7826,7827,7828,7829,7830,7831,13293,13294,13296").split(",");
+			WAREHOUSE_SLOTS_DWARF = character.getInt("MaximumWarehouseSlotsForDwarf", 120);
+			WAREHOUSE_SLOTS_NO_DWARF = character.getInt("MaximumWarehouseSlotsForNoDwarf", 100);
+			WAREHOUSE_SLOTS_CLAN = character.getInt("MaximumWarehouseSlotsForClan", 150);
+			ALT_FREIGHT_SLOTS = character.getInt("MaximumFreightSlots", 200);
+			ALT_FREIGHT_PRICE = character.getInt("FreightPrice", 1000);
+			ENCHANT_CHANCE_ELEMENT_STONE = character.getDouble("EnchantChanceElementStone", 50);
+			ENCHANT_CHANCE_ELEMENT_CRYSTAL = character.getDouble("EnchantChanceElementCrystal", 30);
+			ENCHANT_CHANCE_ELEMENT_JEWEL = character.getDouble("EnchantChanceElementJewel", 20);
+			ENCHANT_CHANCE_ELEMENT_ENERGY = character.getDouble("EnchantChanceElementEnergy", 10);
+			String[] notenchantable = character.getString("EnchantBlackList", "7816,7817,7818,7819,7820,7821,7822,7823,7824,7825,7826,7827,7828,7829,7830,7831,13293,13294,13296").split(",");
 			ENCHANT_BLACKLIST = new int[notenchantable.length];
 			for (int i = 0; i < notenchantable.length; i++)
 			{
@@ -1527,45 +1527,45 @@ public final class Config
 			}
 			Arrays.sort(ENCHANT_BLACKLIST);
 			
-			AUGMENTATION_NG_SKILL_CHANCE = Character.getInt("AugmentationNGSkillChance", 15);
-			AUGMENTATION_NG_GLOW_CHANCE = Character.getInt("AugmentationNGGlowChance", 0);
-			AUGMENTATION_MID_SKILL_CHANCE = Character.getInt("AugmentationMidSkillChance", 30);
-			AUGMENTATION_MID_GLOW_CHANCE = Character.getInt("AugmentationMidGlowChance", 40);
-			AUGMENTATION_HIGH_SKILL_CHANCE = Character.getInt("AugmentationHighSkillChance", 45);
-			AUGMENTATION_HIGH_GLOW_CHANCE = Character.getInt("AugmentationHighGlowChance", 70);
-			AUGMENTATION_TOP_SKILL_CHANCE = Character.getInt("AugmentationTopSkillChance", 60);
-			AUGMENTATION_TOP_GLOW_CHANCE = Character.getInt("AugmentationTopGlowChance", 100);
-			AUGMENTATION_BASESTAT_CHANCE = Character.getInt("AugmentationBaseStatChance", 1);
-			AUGMENTATION_ACC_SKILL_CHANCE = Character.getInt("AugmentationAccSkillChance", 0);
-			
-			RETAIL_LIKE_AUGMENTATION = Character.getBoolean("RetailLikeAugmentation", true);
-			String[] array = Character.getString("RetailLikeAugmentationNoGradeChance", "55,35,7,3").split(",");
+			AUGMENTATION_NG_SKILL_CHANCE = character.getInt("AugmentationNGSkillChance", 15);
+			AUGMENTATION_NG_GLOW_CHANCE = character.getInt("AugmentationNGGlowChance", 0);
+			AUGMENTATION_MID_SKILL_CHANCE = character.getInt("AugmentationMidSkillChance", 30);
+			AUGMENTATION_MID_GLOW_CHANCE = character.getInt("AugmentationMidGlowChance", 40);
+			AUGMENTATION_HIGH_SKILL_CHANCE = character.getInt("AugmentationHighSkillChance", 45);
+			AUGMENTATION_HIGH_GLOW_CHANCE = character.getInt("AugmentationHighGlowChance", 70);
+			AUGMENTATION_TOP_SKILL_CHANCE = character.getInt("AugmentationTopSkillChance", 60);
+			AUGMENTATION_TOP_GLOW_CHANCE = character.getInt("AugmentationTopGlowChance", 100);
+			AUGMENTATION_BASESTAT_CHANCE = character.getInt("AugmentationBaseStatChance", 1);
+			AUGMENTATION_ACC_SKILL_CHANCE = character.getInt("AugmentationAccSkillChance", 0);
+			
+			RETAIL_LIKE_AUGMENTATION = character.getBoolean("RetailLikeAugmentation", true);
+			String[] array = character.getString("RetailLikeAugmentationNoGradeChance", "55,35,7,3").split(",");
 			RETAIL_LIKE_AUGMENTATION_NG_CHANCE = new int[array.length];
 			for (int i = 0; i < 4; i++)
 			{
 				RETAIL_LIKE_AUGMENTATION_NG_CHANCE[i] = Integer.parseInt(array[i]);
 			}
-			array = Character.getString("RetailLikeAugmentationMidGradeChance", "55,35,7,3").split(",");
+			array = character.getString("RetailLikeAugmentationMidGradeChance", "55,35,7,3").split(",");
 			RETAIL_LIKE_AUGMENTATION_MID_CHANCE = new int[array.length];
 			for (int i = 0; i < 4; i++)
 			{
 				RETAIL_LIKE_AUGMENTATION_MID_CHANCE[i] = Integer.parseInt(array[i]);
 			}
-			array = Character.getString("RetailLikeAugmentationHighGradeChance", "55,35,7,3").split(",");
+			array = character.getString("RetailLikeAugmentationHighGradeChance", "55,35,7,3").split(",");
 			RETAIL_LIKE_AUGMENTATION_HIGH_CHANCE = new int[array.length];
 			for (int i = 0; i < 4; i++)
 			{
 				RETAIL_LIKE_AUGMENTATION_HIGH_CHANCE[i] = Integer.parseInt(array[i]);
 			}
-			array = Character.getString("RetailLikeAugmentationTopGradeChance", "55,35,7,3").split(",");
+			array = character.getString("RetailLikeAugmentationTopGradeChance", "55,35,7,3").split(",");
 			RETAIL_LIKE_AUGMENTATION_TOP_CHANCE = new int[array.length];
 			for (int i = 0; i < 4; i++)
 			{
 				RETAIL_LIKE_AUGMENTATION_TOP_CHANCE[i] = Integer.parseInt(array[i]);
 			}
-			RETAIL_LIKE_AUGMENTATION_ACCESSORY = Character.getBoolean("RetailLikeAugmentationAccessory", true);
+			RETAIL_LIKE_AUGMENTATION_ACCESSORY = character.getBoolean("RetailLikeAugmentationAccessory", true);
 			
-			array = Character.getString("AugmentationBlackList", "6656,6657,6658,6659,6660,6661,6662,8191,10170,10314,13740,13741,13742,13743,13744,13745,13746,13747,13748,14592,14593,14594,14595,14596,14597,14598,14599,14600,14664,14665,14666,14667,14668,14669,14670,14671,14672,14801,14802,14803,14804,14805,14806,14807,14808,14809,15282,15283,15284,15285,15286,15287,15288,15289,15290,15291,15292,15293,15294,15295,15296,15297,15298,15299,16025,16026,21712,22173,22174,22175").split(",");
+			array = character.getString("AugmentationBlackList", "6656,6657,6658,6659,6660,6661,6662,8191,10170,10314,13740,13741,13742,13743,13744,13745,13746,13747,13748,14592,14593,14594,14595,14596,14597,14598,14599,14600,14664,14665,14666,14667,14668,14669,14670,14671,14672,14801,14802,14803,14804,14805,14806,14807,14808,14809,15282,15283,15284,15285,15286,15287,15288,15289,15290,15291,15292,15293,15294,15295,15296,15297,15298,15299,16025,16026,21712,22173,22174,22175").split(",");
 			AUGMENTATION_BLACKLIST = new int[array.length];
 			
 			for (int i = 0; i < array.length; i++)
@@ -1574,101 +1574,99 @@ public final class Config
 			}
 			
 			Arrays.sort(AUGMENTATION_BLACKLIST);
-			ALT_ALLOW_AUGMENT_PVP_ITEMS = Character.getBoolean("AltAllowAugmentPvPItems", false);
-			ALT_GAME_KARMA_PLAYER_CAN_BE_KILLED_IN_PEACEZONE = Character.getBoolean("AltKarmaPlayerCanBeKilledInPeaceZone", false);
-			ALT_GAME_KARMA_PLAYER_CAN_SHOP = Character.getBoolean("AltKarmaPlayerCanShop", true);
-			ALT_GAME_KARMA_PLAYER_CAN_TELEPORT = Character.getBoolean("AltKarmaPlayerCanTeleport", true);
-			ALT_GAME_KARMA_PLAYER_CAN_USE_GK = Character.getBoolean("AltKarmaPlayerCanUseGK", false);
-			ALT_GAME_KARMA_PLAYER_CAN_TRADE = Character.getBoolean("AltKarmaPlayerCanTrade", true);
-			ALT_GAME_KARMA_PLAYER_CAN_USE_WAREHOUSE = Character.getBoolean("AltKarmaPlayerCanUseWareHouse", true);
-			MAX_PERSONAL_FAME_POINTS = Character.getInt("MaxPersonalFamePoints", 100000);
-			FORTRESS_ZONE_FAME_TASK_FREQUENCY = Character.getInt("FortressZoneFameTaskFrequency", 300);
-			FORTRESS_ZONE_FAME_AQUIRE_POINTS = Character.getInt("FortressZoneFameAquirePoints", 31);
-			CASTLE_ZONE_FAME_TASK_FREQUENCY = Character.getInt("CastleZoneFameTaskFrequency", 300);
-			CASTLE_ZONE_FAME_AQUIRE_POINTS = Character.getInt("CastleZoneFameAquirePoints", 125);
-			FAME_FOR_DEAD_PLAYERS = Character.getBoolean("FameForDeadPlayers", true);
-			IS_CRAFTING_ENABLED = Character.getBoolean("CraftingEnabled", true);
-			CRAFT_MASTERWORK = Character.getBoolean("CraftMasterwork", true);
-			DWARF_RECIPE_LIMIT = Character.getInt("DwarfRecipeLimit", 50);
-			COMMON_RECIPE_LIMIT = Character.getInt("CommonRecipeLimit", 50);
-			ALT_GAME_CREATION = Character.getBoolean("AltGameCreation", false);
-			ALT_GAME_CREATION_SPEED = Character.getDouble("AltGameCreationSpeed", 1);
-			ALT_GAME_CREATION_XP_RATE = Character.getDouble("AltGameCreationXpRate", 1);
-			ALT_GAME_CREATION_SP_RATE = Character.getDouble("AltGameCreationSpRate", 1);
-			ALT_GAME_CREATION_RARE_XPSP_RATE = Character.getDouble("AltGameCreationRareXpSpRate", 2);
-			ALT_BLACKSMITH_USE_RECIPES = Character.getBoolean("AltBlacksmithUseRecipes", true);
-			ALT_CLAN_LEADER_DATE_CHANGE = Character.getInt("AltClanLeaderDateChange", 3);
+			ALT_ALLOW_AUGMENT_PVP_ITEMS = character.getBoolean("AltAllowAugmentPvPItems", false);
+			ALT_GAME_KARMA_PLAYER_CAN_BE_KILLED_IN_PEACEZONE = character.getBoolean("AltKarmaPlayerCanBeKilledInPeaceZone", false);
+			ALT_GAME_KARMA_PLAYER_CAN_SHOP = character.getBoolean("AltKarmaPlayerCanShop", true);
+			ALT_GAME_KARMA_PLAYER_CAN_TELEPORT = character.getBoolean("AltKarmaPlayerCanTeleport", true);
+			ALT_GAME_KARMA_PLAYER_CAN_USE_GK = character.getBoolean("AltKarmaPlayerCanUseGK", false);
+			ALT_GAME_KARMA_PLAYER_CAN_TRADE = character.getBoolean("AltKarmaPlayerCanTrade", true);
+			ALT_GAME_KARMA_PLAYER_CAN_USE_WAREHOUSE = character.getBoolean("AltKarmaPlayerCanUseWareHouse", true);
+			MAX_PERSONAL_FAME_POINTS = character.getInt("MaxPersonalFamePoints", 100000);
+			FORTRESS_ZONE_FAME_TASK_FREQUENCY = character.getInt("FortressZoneFameTaskFrequency", 300);
+			FORTRESS_ZONE_FAME_AQUIRE_POINTS = character.getInt("FortressZoneFameAquirePoints", 31);
+			CASTLE_ZONE_FAME_TASK_FREQUENCY = character.getInt("CastleZoneFameTaskFrequency", 300);
+			CASTLE_ZONE_FAME_AQUIRE_POINTS = character.getInt("CastleZoneFameAquirePoints", 125);
+			FAME_FOR_DEAD_PLAYERS = character.getBoolean("FameForDeadPlayers", true);
+			IS_CRAFTING_ENABLED = character.getBoolean("CraftingEnabled", true);
+			CRAFT_MASTERWORK = character.getBoolean("CraftMasterwork", true);
+			DWARF_RECIPE_LIMIT = character.getInt("DwarfRecipeLimit", 50);
+			COMMON_RECIPE_LIMIT = character.getInt("CommonRecipeLimit", 50);
+			ALT_GAME_CREATION = character.getBoolean("AltGameCreation", false);
+			ALT_GAME_CREATION_SPEED = character.getDouble("AltGameCreationSpeed", 1);
+			ALT_GAME_CREATION_XP_RATE = character.getDouble("AltGameCreationXpRate", 1);
+			ALT_GAME_CREATION_SP_RATE = character.getDouble("AltGameCreationSpRate", 1);
+			ALT_GAME_CREATION_RARE_XPSP_RATE = character.getDouble("AltGameCreationRareXpSpRate", 2);
+			ALT_BLACKSMITH_USE_RECIPES = character.getBoolean("AltBlacksmithUseRecipes", true);
+			ALT_CLAN_LEADER_DATE_CHANGE = character.getInt("AltClanLeaderDateChange", 3);
 			if ((ALT_CLAN_LEADER_DATE_CHANGE < 1) || (ALT_CLAN_LEADER_DATE_CHANGE > 7))
 			{
-				_log.log(Level.WARNING, "Wrong value specified for AltClanLeaderDateChange: " + ALT_CLAN_LEADER_DATE_CHANGE);
+				_log.warn("Wrong value specified for AltClanLeaderDateChange: {}", ALT_CLAN_LEADER_DATE_CHANGE);
 				ALT_CLAN_LEADER_DATE_CHANGE = 3;
 			}
-			ALT_CLAN_LEADER_HOUR_CHANGE = Character.getString("AltClanLeaderHourChange", "00:00:00");
-			ALT_CLAN_LEADER_INSTANT_ACTIVATION = Character.getBoolean("AltClanLeaderInstantActivation", false);
-			ALT_CLAN_JOIN_DAYS = Character.getInt("DaysBeforeJoinAClan", 1);
-			ALT_CLAN_CREATE_DAYS = Character.getInt("DaysBeforeCreateAClan", 10);
-			ALT_CLAN_DISSOLVE_DAYS = Character.getInt("DaysToPassToDissolveAClan", 7);
-			ALT_ALLY_JOIN_DAYS_WHEN_LEAVED = Character.getInt("DaysBeforeJoinAllyWhenLeaved", 1);
-			ALT_ALLY_JOIN_DAYS_WHEN_DISMISSED = Character.getInt("DaysBeforeJoinAllyWhenDismissed", 1);
-			ALT_ACCEPT_CLAN_DAYS_WHEN_DISMISSED = Character.getInt("DaysBeforeAcceptNewClanWhenDismissed", 1);
-			ALT_CREATE_ALLY_DAYS_WHEN_DISSOLVED = Character.getInt("DaysBeforeCreateNewAllyWhenDissolved", 1);
-			ALT_MAX_NUM_OF_CLANS_IN_ALLY = Character.getInt("AltMaxNumOfClansInAlly", 3);
-			ALT_CLAN_MEMBERS_FOR_WAR = Character.getInt("AltClanMembersForWar", 15);
-			ALT_MEMBERS_CAN_WITHDRAW_FROM_CLANWH = Character.getBoolean("AltMembersCanWithdrawFromClanWH", false);
-			REMOVE_CASTLE_CIRCLETS = Character.getBoolean("RemoveCastleCirclets", true);
-			ALT_PARTY_RANGE = Character.getInt("AltPartyRange", 1600);
-			ALT_PARTY_RANGE2 = Character.getInt("AltPartyRange2", 1400);
-			ALT_LEAVE_PARTY_LEADER = Character.getBoolean("AltLeavePartyLeader", false);
-			INITIAL_EQUIPMENT_EVENT = Character.getBoolean("InitialEquipmentEvent", false);
-			STARTING_ADENA = Character.getLong("StartingAdena", 0);
-			STARTING_LEVEL = Character.getByte("StartingLevel", (byte) 1);
-			STARTING_SP = Character.getInt("StartingSP", 0);
-			MAX_ADENA = Character.getLong("MaxAdena", 99900000000L);
+			ALT_CLAN_LEADER_HOUR_CHANGE = character.getString("AltClanLeaderHourChange", "00:00:00");
+			ALT_CLAN_LEADER_INSTANT_ACTIVATION = character.getBoolean("AltClanLeaderInstantActivation", false);
+			ALT_CLAN_JOIN_DAYS = character.getInt("DaysBeforeJoinAClan", 1);
+			ALT_CLAN_CREATE_DAYS = character.getInt("DaysBeforeCreateAClan", 10);
+			ALT_CLAN_DISSOLVE_DAYS = character.getInt("DaysToPassToDissolveAClan", 7);
+			ALT_ALLY_JOIN_DAYS_WHEN_LEAVED = character.getInt("DaysBeforeJoinAllyWhenLeaved", 1);
+			ALT_ALLY_JOIN_DAYS_WHEN_DISMISSED = character.getInt("DaysBeforeJoinAllyWhenDismissed", 1);
+			ALT_ACCEPT_CLAN_DAYS_WHEN_DISMISSED = character.getInt("DaysBeforeAcceptNewClanWhenDismissed", 1);
+			ALT_CREATE_ALLY_DAYS_WHEN_DISSOLVED = character.getInt("DaysBeforeCreateNewAllyWhenDissolved", 1);
+			ALT_MAX_NUM_OF_CLANS_IN_ALLY = character.getInt("AltMaxNumOfClansInAlly", 3);
+			ALT_CLAN_MEMBERS_FOR_WAR = character.getInt("AltClanMembersForWar", 15);
+			ALT_MEMBERS_CAN_WITHDRAW_FROM_CLANWH = character.getBoolean("AltMembersCanWithdrawFromClanWH", false);
+			REMOVE_CASTLE_CIRCLETS = character.getBoolean("RemoveCastleCirclets", true);
+			ALT_PARTY_RANGE = character.getInt("AltPartyRange", 1600);
+			ALT_PARTY_RANGE2 = character.getInt("AltPartyRange2", 1400);
+			ALT_LEAVE_PARTY_LEADER = character.getBoolean("AltLeavePartyLeader", false);
+			INITIAL_EQUIPMENT_EVENT = character.getBoolean("InitialEquipmentEvent", false);
+			STARTING_ADENA = character.getLong("StartingAdena", 0);
+			STARTING_LEVEL = character.getByte("StartingLevel", (byte) 1);
+			STARTING_SP = character.getInt("StartingSP", 0);
+			MAX_ADENA = character.getLong("MaxAdena", 99900000000L);
 			if (MAX_ADENA < 0)
 			{
 				MAX_ADENA = Long.MAX_VALUE;
 			}
-			AUTO_LOOT = Character.getBoolean("AutoLoot", false);
-			AUTO_LOOT_RAIDS = Character.getBoolean("AutoLootRaids", false);
-			LOOT_RAIDS_PRIVILEGE_INTERVAL = Character.getInt("RaidLootRightsInterval", 900) * 1000;
-			LOOT_RAIDS_PRIVILEGE_CC_SIZE = Character.getInt("RaidLootRightsCCSize", 45);
-			UNSTUCK_INTERVAL = Character.getInt("UnstuckInterval", 300);
-			TELEPORT_WATCHDOG_TIMEOUT = Character.getInt("TeleportWatchdogTimeout", 0);
-			PLAYER_SPAWN_PROTECTION = Character.getInt("PlayerSpawnProtection", 0);
-			String[] items = Character.getString("PlayerSpawnProtectionAllowedItems", "0").split(",");
+			AUTO_LOOT = character.getBoolean("AutoLoot", false);
+			AUTO_LOOT_RAIDS = character.getBoolean("AutoLootRaids", false);
+			LOOT_RAIDS_PRIVILEGE_INTERVAL = character.getInt("RaidLootRightsInterval", 900) * 1000;
+			LOOT_RAIDS_PRIVILEGE_CC_SIZE = character.getInt("RaidLootRightsCCSize", 45);
+			UNSTUCK_INTERVAL = character.getInt("UnstuckInterval", 300);
+			TELEPORT_WATCHDOG_TIMEOUT = character.getInt("TeleportWatchdogTimeout", 0);
+			PLAYER_SPAWN_PROTECTION = character.getInt("PlayerSpawnProtection", 0);
+			String[] items = character.getString("PlayerSpawnProtectionAllowedItems", "").split(",");
 			SPAWN_PROTECTION_ALLOWED_ITEMS = new ArrayList<>(items.length);
 			for (String item : items)
 			{
-				Integer itm = 0;
 				try
 				{
-					itm = Integer.parseInt(item);
+					if (!item.isEmpty())
+					{
+						SPAWN_PROTECTION_ALLOWED_ITEMS.add(Integer.parseInt(item));
+					}
 				}
 				catch (NumberFormatException nfe)
 				{
-					_log.warning("Player Spawn Protection: Wrong ItemId passed: " + item);
-					_log.warning(nfe.getMessage());
-				}
-				if (itm != 0)
-				{
-					SPAWN_PROTECTION_ALLOWED_ITEMS.add(itm);
+					_log.warn("Player Spawn Protection: Wrong Item ID passed: {}", item, nfe);
 				}
 			}
-			PLAYER_TELEPORT_PROTECTION = Character.getInt("PlayerTeleportProtection", 0);
-			RANDOM_RESPAWN_IN_TOWN_ENABLED = Character.getBoolean("RandomRespawnInTownEnabled", true);
-			OFFSET_ON_TELEPORT_ENABLED = Character.getBoolean("OffsetOnTeleportEnabled", true);
-			MAX_OFFSET_ON_TELEPORT = Character.getInt("MaxOffsetOnTeleport", 50);
-			PETITIONING_ALLOWED = Character.getBoolean("PetitioningAllowed", true);
-			MAX_PETITIONS_PER_PLAYER = Character.getInt("MaxPetitionsPerPlayer", 5);
-			MAX_PETITIONS_PENDING = Character.getInt("MaxPetitionsPending", 25);
-			ALT_GAME_FREE_TELEPORT = Character.getBoolean("AltFreeTeleporting", false);
-			DELETE_DAYS = Character.getInt("DeleteCharAfterDays", 7);
-			ALT_GAME_EXPONENT_XP = Character.getFloat("AltGameExponentXp", 0);
-			ALT_GAME_EXPONENT_SP = Character.getFloat("AltGameExponentSp", 0);
-			PARTY_XP_CUTOFF_METHOD = Character.getString("PartyXpCutoffMethod", "highfive");
-			PARTY_XP_CUTOFF_PERCENT = Character.getDouble("PartyXpCutoffPercent", 3);
-			PARTY_XP_CUTOFF_LEVEL = Character.getInt("PartyXpCutoffLevel", 20);
-			final String[] gaps = Character.getString("PartyXpCutoffGaps", "0,9;10,14;15,99").split(";");
+			
+			PLAYER_TELEPORT_PROTECTION = character.getInt("PlayerTeleportProtection", 0);
+			RANDOM_RESPAWN_IN_TOWN_ENABLED = character.getBoolean("RandomRespawnInTownEnabled", true);
+			OFFSET_ON_TELEPORT_ENABLED = character.getBoolean("OffsetOnTeleportEnabled", true);
+			MAX_OFFSET_ON_TELEPORT = character.getInt("MaxOffsetOnTeleport", 50);
+			PETITIONING_ALLOWED = character.getBoolean("PetitioningAllowed", true);
+			MAX_PETITIONS_PER_PLAYER = character.getInt("MaxPetitionsPerPlayer", 5);
+			MAX_PETITIONS_PENDING = character.getInt("MaxPetitionsPending", 25);
+			ALT_GAME_FREE_TELEPORT = character.getBoolean("AltFreeTeleporting", false);
+			DELETE_DAYS = character.getInt("DeleteCharAfterDays", 7);
+			ALT_GAME_EXPONENT_XP = character.getFloat("AltGameExponentXp", 0);
+			ALT_GAME_EXPONENT_SP = character.getFloat("AltGameExponentSp", 0);
+			PARTY_XP_CUTOFF_METHOD = character.getString("PartyXpCutoffMethod", "highfive");
+			PARTY_XP_CUTOFF_PERCENT = character.getDouble("PartyXpCutoffPercent", 3);
+			PARTY_XP_CUTOFF_LEVEL = character.getInt("PartyXpCutoffLevel", 20);
+			final String[] gaps = character.getString("PartyXpCutoffGaps", "0,9;10,14;15,99").split(";");
 			PARTY_XP_CUTOFF_GAPS = new int[gaps.length][2];
 			for (int i = 0; i < gaps.length; i++)
 			{
@@ -1678,20 +1676,20 @@ public final class Config
 					Integer.parseInt(gaps[i].split(",")[1])
 				};
 			}
-			final String[] percents = Character.getString("PartyXpCutoffGapPercent", "100;30;0").split(";");
+			final String[] percents = character.getString("PartyXpCutoffGapPercent", "100;30;0").split(";");
 			PARTY_XP_CUTOFF_GAP_PERCENTS = new int[percents.length];
 			for (int i = 0; i < percents.length; i++)
 			{
 				PARTY_XP_CUTOFF_GAP_PERCENTS[i] = Integer.parseInt(percents[i]);
 			}
-			DISABLE_TUTORIAL = Character.getBoolean("DisableTutorial", false);
-			EXPERTISE_PENALTY = Character.getBoolean("ExpertisePenalty", true);
-			STORE_RECIPE_SHOPLIST = Character.getBoolean("StoreRecipeShopList", false);
-			STORE_UI_SETTINGS = Character.getBoolean("StoreCharUiSettings", false);
-			FORBIDDEN_NAMES = Character.getString("ForbiddenNames", "").split(",");
-			SILENCE_MODE_EXCLUDE = Character.getBoolean("SilenceModeExclude", false);
-			ALT_VALIDATE_TRIGGER_SKILLS = Character.getBoolean("AltValidateTriggerSkills", false);
-			PLAYER_MOVEMENT_BLOCK_TIME = Character.getInt("NpcTalkBlockingTime", 0) * 1000;
+			DISABLE_TUTORIAL = character.getBoolean("DisableTutorial", false);
+			EXPERTISE_PENALTY = character.getBoolean("ExpertisePenalty", true);
+			STORE_RECIPE_SHOPLIST = character.getBoolean("StoreRecipeShopList", false);
+			STORE_UI_SETTINGS = character.getBoolean("StoreCharUiSettings", false);
+			FORBIDDEN_NAMES = character.getString("ForbiddenNames", "").split(",");
+			SILENCE_MODE_EXCLUDE = character.getBoolean("SilenceModeExclude", false);
+			ALT_VALIDATE_TRIGGER_SKILLS = character.getBoolean("AltValidateTriggerSkills", false);
+			PLAYER_MOVEMENT_BLOCK_TIME = character.getInt("NpcTalkBlockingTime", 0) * 1000;
 			
 			// Load Telnet L2Properties file (if exists)
 			final PropertiesParser telnetSettings = new PropertiesParser(TELNET_FILE);
@@ -1862,7 +1860,7 @@ public final class Config
 			}
 			catch (NumberFormatException nfe)
 			{
-				_log.log(Level.WARNING, nfe.getMessage(), nfe);
+				_log.warn("Unable to load banned channels!", nfe);
 			}
 			ALT_MANOR_REFRESH_TIME = General.getInt("AltManorRefreshTime", 20);
 			ALT_MANOR_REFRESH_MIN = General.getInt("AltManorRefreshMin", 0);
@@ -2009,7 +2007,7 @@ public final class Config
 				String[] propSplit = prop.split(",");
 				if (propSplit.length != 2)
 				{
-					_log.warning(StringUtil.concat("[CustomMinionsRespawnTime]: invalid config property -> CustomMinionsRespawnTime \"", prop, "\""));
+					_log.warn("[CustomMinionsRespawnTime]: invalid config property -> CustomMinionsRespawnTime {}", prop);
 				}
 				
 				try
@@ -2020,7 +2018,7 @@ public final class Config
 				{
 					if (!prop.isEmpty())
 					{
-						_log.warning(StringUtil.concat("[CustomMinionsRespawnTime]: invalid config property -> CustomMinionsRespawnTime \"", propSplit[0], "\"", propSplit[1]));
+						_log.warn("[CustomMinionsRespawnTime]: invalid config property -> CustomMinionsRespawnTime {}", prop);
 					}
 				}
 			}
@@ -2109,7 +2107,7 @@ public final class Config
 					String[] itemSplit = item.split(",");
 					if (itemSplit.length != 2)
 					{
-						_log.warning(StringUtil.concat("Config.load(): invalid config property -> RateDropItemsById \"", item, "\""));
+						_log.warn("Config.load(): invalid config property -> RateDropItemsById {}", item);
 					}
 					else
 					{
@@ -2121,7 +2119,7 @@ public final class Config
 						{
 							if (!item.isEmpty())
 							{
-								_log.warning(StringUtil.concat("Config.load(): invalid config property -> RateDropItemsById \"", item, "\""));
+								_log.warn("Config.load(): invalid config property -> RateDropItemsById {}", item);
 							}
 						}
 					}
@@ -2137,7 +2135,7 @@ public final class Config
 					String[] itemSplit = item.split(",");
 					if (itemSplit.length != 2)
 					{
-						_log.warning(StringUtil.concat("Config.load(): invalid config property -> RateDropItemsById \"", item, "\""));
+						_log.warn("Config.load(): invalid config property -> RateDropItemsById {}", item);
 					}
 					else
 					{
@@ -2149,7 +2147,7 @@ public final class Config
 						{
 							if (!item.isEmpty())
 							{
-								_log.warning(StringUtil.concat("Config.load(): invalid config property -> RateDropItemsById \"", item, "\""));
+								_log.warn("Config.load(): invalid config property -> RateDropItemsById {}", item);
 							}
 						}
 					}
@@ -2202,7 +2200,7 @@ public final class Config
 			if (TVT_EVENT_PARTICIPATION_NPC_ID == 0)
 			{
 				TVT_EVENT_ENABLED = false;
-				_log.warning("TvTEventEngine[Config.load()]: invalid config property -> TvTEventParticipationNpcId");
+				_log.warn("TvTEventEngine[Config.load()]: invalid config property -> TvTEventParticipationNpcId");
 			}
 			else
 			{
@@ -2210,7 +2208,7 @@ public final class Config
 				if (tvtNpcCoords.length < 3)
 				{
 					TVT_EVENT_ENABLED = false;
-					_log.warning("TvTEventEngine[Config.load()]: invalid config property -> TvTEventParticipationNpcCoordinates");
+					_log.warn("TvTEventEngine[Config.load()]: invalid config property -> TvTEventParticipationNpcCoordinates");
 				}
 				else
 				{
@@ -2241,7 +2239,7 @@ public final class Config
 					if (tvtNpcCoords.length < 3)
 					{
 						TVT_EVENT_ENABLED = false;
-						_log.warning("TvTEventEngine[Config.load()]: invalid config property -> TvTEventTeam1Coordinates");
+						_log.warn("TvTEventEngine[Config.load()]: invalid config property -> TvTEventTeam1Coordinates");
 					}
 					else
 					{
@@ -2253,7 +2251,7 @@ public final class Config
 						if (tvtNpcCoords.length < 3)
 						{
 							TVT_EVENT_ENABLED = false;
-							_log.warning("TvTEventEngine[Config.load()]: invalid config property -> TvTEventTeam2Coordinates");
+							_log.warn("TvTEventEngine[Config.load()]: invalid config property -> TvTEventTeam2Coordinates");
 						}
 						else
 						{
@@ -2270,7 +2268,7 @@ public final class Config
 							{
 								if (tvtNpcCoords.length > 0)
 								{
-									_log.warning("TvTEventEngine[Config.load()]: invalid config property -> TvTEventParticipationFee");
+									_log.warn("TvTEventEngine[Config.load()]: invalid config property -> TvTEventParticipationFee");
 								}
 							}
 							tvtNpcCoords = L2JModSettings.getString("TvTEventReward", "57,100000").split(";");
@@ -2279,7 +2277,7 @@ public final class Config
 								String[] rewardSplit = reward.split(",");
 								if (rewardSplit.length != 2)
 								{
-									_log.warning(StringUtil.concat("TvTEventEngine[Config.load()]: invalid config property -> TvTEventReward \"", reward, "\""));
+									_log.warn("TvTEventEngine[Config.load()]: invalid config property -> TvTEventReward {}", reward);
 								}
 								else
 								{
@@ -2295,7 +2293,7 @@ public final class Config
 									{
 										if (!reward.isEmpty())
 										{
-											_log.warning(StringUtil.concat("TvTEventEngine[Config.load()]: invalid config property -> TvTEventReward \"", reward, "\""));
+											_log.warn("TvTEventEngine[Config.load()]: invalid config property -> TvTEventReward {}", reward);
 										}
 									}
 								}
@@ -2317,7 +2315,7 @@ public final class Config
 								{
 									if (!door.isEmpty())
 									{
-										_log.warning(StringUtil.concat("TvTEventEngine[Config.load()]: invalid config property -> TvTDoorsToOpen \"", door, "\""));
+										_log.warn("TvTEventEngine[Config.load()]: invalid config property -> TvTDoorsToOpen {}", door);
 									}
 								}
 							}
@@ -2333,7 +2331,7 @@ public final class Config
 								{
 									if (!door.isEmpty())
 									{
-										_log.warning(StringUtil.concat("TvTEventEngine[Config.load()]: invalid config property -> TvTDoorsToClose \"", door, "\""));
+										_log.warn("TvTEventEngine[Config.load()]: invalid config property -> TvTDoorsToClose {}", door);
 									}
 								}
 							}
@@ -2347,7 +2345,7 @@ public final class Config
 									String[] skillSplit = skill.split(",");
 									if (skillSplit.length != 2)
 									{
-										_log.warning(StringUtil.concat("TvTEventEngine[Config.load()]: invalid config property -> TvTEventFighterBuffs \"", skill, "\""));
+										_log.warn("TvTEventEngine[Config.load()]: invalid config property -> TvTEventFighterBuffs {}", skill);
 									}
 									else
 									{
@@ -2359,7 +2357,7 @@ public final class Config
 										{
 											if (!skill.isEmpty())
 											{
-												_log.warning(StringUtil.concat("TvTEventEngine[Config.load()]: invalid config property -> TvTEventFighterBuffs \"", skill, "\""));
+												_log.warn("TvTEventEngine[Config.load()]: invalid config property -> TvTEventFighterBuffs {}", skill);
 											}
 										}
 									}
@@ -2375,7 +2373,7 @@ public final class Config
 									String[] skillSplit = skill.split(",");
 									if (skillSplit.length != 2)
 									{
-										_log.warning(StringUtil.concat("TvTEventEngine[Config.load()]: invalid config property -> TvTEventMageBuffs \"", skill, "\""));
+										_log.warn("TvTEventEngine[Config.load()]: invalid config property -> TvTEventMageBuffs {}", skill);
 									}
 									else
 									{
@@ -2387,7 +2385,7 @@ public final class Config
 										{
 											if (!skill.isEmpty())
 											{
-												_log.warning(StringUtil.concat("TvTEventEngine[Config.load()]: invalid config property -> TvTEventMageBuffs \"", skill, "\""));
+												_log.warn("TvTEventEngine[Config.load()]: invalid config property -> TvTEventMageBuffs {}", skill);
 											}
 										}
 									}
@@ -2443,7 +2441,7 @@ public final class Config
 			
 			if (!L2JMOD_MULTILANG_ALLOWED.contains(L2JMOD_MULTILANG_DEFAULT))
 			{
-				_log.warning("MultiLang[Config.load()]: default language: " + L2JMOD_MULTILANG_DEFAULT + " is not in allowed list !");
+				_log.warn("MultiLang[Config.load()]: default language: {} is not in allowed list !", L2JMOD_MULTILANG_DEFAULT);
 			}
 			
 			L2JMOD_HELLBOUND_STATUS = L2JModSettings.getBoolean("HellboundStatus", false);
@@ -2482,7 +2480,7 @@ public final class Config
 				String[] entrySplit = entry.split(",");
 				if (entrySplit.length != 2)
 				{
-					_log.warning(StringUtil.concat("DualboxCheck[Config.load()]: invalid config property -> DualboxCheckWhitelist \"", entry, "\""));
+					_log.warn("DualboxCheck[Config.load()]: invalid config property -> DualboxCheckWhitelist {}", entry);
 				}
 				else
 				{
@@ -2494,11 +2492,11 @@ public final class Config
 					}
 					catch (UnknownHostException e)
 					{
-						_log.warning(StringUtil.concat("DualboxCheck[Config.load()]: invalid address -> DualboxCheckWhitelist \"", entrySplit[0], "\""));
+						_log.warn("DualboxCheck[Config.load()]: invalid address -> DualboxCheckWhitelist {}", entrySplit[0]);
 					}
 					catch (NumberFormatException e)
 					{
-						_log.warning(StringUtil.concat("DualboxCheck[Config.load()]: invalid number -> DualboxCheckWhitelist \"", entrySplit[1], "\""));
+						_log.warn("DualboxCheck[Config.load()]: invalid number -> DualboxCheckWhitelist {}", entrySplit[1]);
 					}
 				}
 			}
@@ -2597,17 +2595,17 @@ public final class Config
 					}
 					catch (Exception e)
 					{
-						_log.warning("Could not load HexID file (" + HEXID_FILE + "). Hopefully login will give us one.");
+						_log.warn("Could not load HexID file ({}). Hopefully login will give us one.", HEXID_FILE);
 					}
 				}
 				else
 				{
-					_log.warning("Could not load HexID file (" + HEXID_FILE + "). Hopefully login will give us one.");
+					_log.warn("Could not load HexID file ({}). Hopefully login will give us one.", HEXID_FILE);
 				}
 			}
 			else
 			{
-				_log.warning("Could not load HexID file (" + HEXID_FILE + "). Hopefully login will give us one.");
+				_log.warn("Could not load HexID file ({}). Hopefully login will give us one.", HEXID_FILE);
 			}
 			
 			// Grand bosses
@@ -2652,11 +2650,11 @@ public final class Config
 					.filter(line -> (!line.isEmpty() && (line.charAt(0) != '#')))
 					.collect(Collectors.toList());
 				//@formatter:on
-				_log.info("Loaded " + FILTER_LIST.size() + " Filter Words.");
+				_log.info("Loaded {} filter words.", FILTER_LIST.size());
 			}
 			catch (IOException ioe)
 			{
-				_log.log(Level.WARNING, "Error while loading chat filter words!", ioe);
+				_log.warn("Error while loading chat filter words!", ioe);
 			}
 			
 			final PropertiesParser ClanHallSiege = new PropertiesParser(CH_SIEGE_FILE);
@@ -2676,7 +2674,7 @@ public final class Config
 			}
 			catch (IOException e)
 			{
-				_log.log(Level.WARNING, "Error setting pathnode directory!", e);
+				_log.warn("Error setting pathnode directory!", e);
 				PATHNODE_DIR = new File("data/pathnode");
 			}
 			
@@ -2723,7 +2721,7 @@ public final class Config
 			}
 			catch (IOException e)
 			{
-				_log.log(Level.WARNING, "Error setting datapack root!", e);
+				_log.warn("Error setting datapack root!", e);
 				DATAPACK_ROOT = new File(".");
 			}
 			
@@ -2790,7 +2788,7 @@ public final class Config
 		}
 		else
 		{
-			_log.severe("Could not Load Config: server mode was not set!");
+			_log.error("Could not Load Config: server mode was not set!");
 		}
 	}
 	
@@ -3626,7 +3624,7 @@ public final class Config
 				}
 				catch (Exception e)
 				{
-					_log.log(Level.WARNING, "", e);
+					_log.warn("Unable to set parameter value!", e);
 					return false;
 				}
 		}
@@ -3667,8 +3665,7 @@ public final class Config
 		}
 		catch (Exception e)
 		{
-			_log.warning(StringUtil.concat("Failed to save hex id to ", fileName, " File."));
-			_log.warning("Config: " + e.getMessage());
+			_log.warn("Failed to save hex id to {} file.", fileName, e);
 		}
 	}
 	
@@ -3870,7 +3867,7 @@ public final class Config
 			valueSplit = value.split(",");
 			if (valueSplit.length != 2)
 			{
-				_log.warning(StringUtil.concat("parseItemsList[Config.load()]: invalid entry -> \"", valueSplit[0], "\", should be itemId,itemNumber. Skipping to the next entry in the list."));
+				_log.warn("parseItemsList[Config.load()]: invalid entry -> {}, should be itemId,itemNumber. Skipping to the next entry in the list.", valueSplit[0]);
 				continue;
 			}
 			
@@ -3881,7 +3878,7 @@ public final class Config
 			}
 			catch (NumberFormatException e)
 			{
-				_log.warning(StringUtil.concat("parseItemsList[Config.load()]: invalid itemId -> \"", valueSplit[0], "\", value must be an integer. Skipping to the next entry in the list."));
+				_log.warn("parseItemsList[Config.load()]: invalid itemId -> {}, value must be an integer. Skipping to the next entry in the list.", valueSplit[0]);
 				continue;
 			}
 			try
@@ -3890,7 +3887,7 @@ public final class Config
 			}
 			catch (NumberFormatException e)
 			{
-				_log.warning(StringUtil.concat("parseItemsList[Config.load()]: invalid item number -> \"", valueSplit[1], "\", value must be an integer. Skipping to the next entry in the list."));
+				_log.warn("parseItemsList[Config.load()]: invalid item number -> {}, value must be an integer. Skipping to the next entry in the list.", valueSplit[1]);
 				continue;
 			}
 			result[i++] = tmp;
@@ -3914,13 +3911,13 @@ public final class Config
 			File f = new File(IP_CONFIG_FILE);
 			if (f.exists())
 			{
-				LOGGER.log(Level.INFO, "Network Config: ipconfig.xml exists using manual configuration...");
+				LOGGER.info("Network Config: ipconfig.xml exists using manual configuration...");
 				parseFile(new File(IP_CONFIG_FILE));
 			}
 			else
 			// Auto configuration...
 			{
-				LOGGER.log(Level.INFO, "Network Config: ipconfig.xml doesn't exists using automatic configuration...");
+				LOGGER.info("Network Config: ipconfig.xml doesn't exists using automatic configuration...");
 				autoIpConfig();
 			}
 		}
@@ -3943,7 +3940,7 @@ public final class Config
 							
 							if (_hosts.size() != _subnets.size())
 							{
-								LOGGER.log(Level.WARNING, "Failed to Load " + IP_CONFIG_FILE + " File - subnets does not match server addresses.");
+								LOGGER.warn("Failed to load {} file - subnets does not match server addresses.", IP_CONFIG_FILE);
 							}
 						}
 					}
@@ -3951,7 +3948,7 @@ public final class Config
 					Node att = n.getAttributes().getNamedItem("address");
 					if (att == null)
 					{
-						LOGGER.log(Level.WARNING, "Failed to load " + IP_CONFIG_FILE + " file - default server address is missing.");
+						LOGGER.warn("Failed to load {} file - default server address is missing.", IP_CONFIG_FILE);
 						_hosts.add("127.0.0.1");
 					}
 					else
@@ -3976,7 +3973,7 @@ public final class Config
 			}
 			catch (IOException e)
 			{
-				LOGGER.log(Level.INFO, "Network Config: Failed to connect to api.externalip.net please check your internet connection using 127.0.0.1!");
+				LOGGER.info("Network Config: Failed to connect to api.externalip.net please check your internet connection using 127.0.0.1!");
 				externalIp = "127.0.0.1";
 			}
 			
@@ -4016,7 +4013,7 @@ public final class Config
 						{
 							_subnets.add(subnet);
 							_hosts.add(hostAddress);
-							LOGGER.log(Level.INFO, "Network Config: Adding new subnet: " + subnet + " address: " + hostAddress);
+							LOGGER.info("Network Config: Adding new subnet: " + subnet + " address: " + hostAddress);
 						}
 					}
 				}
@@ -4024,11 +4021,11 @@ public final class Config
 				// External host and subnet
 				_hosts.add(externalIp);
 				_subnets.add("0.0.0.0/0");
-				LOGGER.log(Level.INFO, "Network Config: Adding new subnet: 0.0.0.0/0 address: " + externalIp);
+				LOGGER.info("Network Config: Adding new subnet: 0.0.0.0/0 address: {}", externalIp);
 			}
 			catch (SocketException e)
 			{
-				LOGGER.log(Level.INFO, "Network Config: Configuration failed please configure manually using ipconfig.xml", e);
+				LOGGER.warn("Network Config: Configuration failed please configure manually using ipconfig.xml", e);
 				System.exit(0);
 			}
 		}

+ 5 - 6
L2J_Server/java/com/l2jserver/gameserver/data/xml/impl/AdminData.java

@@ -24,7 +24,6 @@ import java.util.List;
 import java.util.Map;
 import java.util.Map.Entry;
 import java.util.concurrent.ConcurrentHashMap;
-import java.util.logging.Level;
 
 import org.w3c.dom.Document;
 import org.w3c.dom.NamedNodeMap;
@@ -61,9 +60,9 @@ public final class AdminData implements IXmlReader
 		_accessLevels.clear();
 		_adminCommandAccessRights.clear();
 		parseDatapackFile("config/accessLevels.xml");
-		LOGGER.log(Level.INFO, getClass().getSimpleName() + ": Loaded: " + _accessLevels.size() + " Access Levels.");
+		LOGGER.info("{}: Loaded: {} Access Levels.", getClass().getSimpleName(), _accessLevels.size());
 		parseDatapackFile("config/adminCommands.xml");
-		LOGGER.log(Level.INFO, getClass().getSimpleName() + ": Loaded: " + _adminCommandAccessRights.size() + " Access Commands.");
+		LOGGER.info("{}: Loaded: {} Access Commands.", getClass().getSimpleName(), _adminCommandAccessRights.size());
 	}
 	
 	@Override
@@ -164,11 +163,11 @@ public final class AdminData implements IXmlReader
 			{
 				acar = new L2AdminCommandAccessRight(adminCommand, true, accessLevel.getLevel());
 				_adminCommandAccessRights.put(adminCommand, acar);
-				LOGGER.info(getClass().getSimpleName() + ": No rights defined for admin command " + adminCommand + " auto setting accesslevel: " + accessLevel.getLevel() + " !");
+				LOGGER.info("{}: No rights defined for admin command {} auto setting accesslevel: {}!", getClass().getSimpleName(), adminCommand, accessLevel.getLevel());
 			}
 			else
 			{
-				LOGGER.info(getClass().getSimpleName() + ": No rights defined for admin command " + adminCommand + " !");
+				LOGGER.info("{}: No rights defined for admin command {}!", getClass().getSimpleName(), adminCommand);
 				return false;
 			}
 		}
@@ -185,7 +184,7 @@ public final class AdminData implements IXmlReader
 		final L2AdminCommandAccessRight acar = _adminCommandAccessRights.get(command);
 		if (acar == null)
 		{
-			LOGGER.info(getClass().getSimpleName() + ": No rights defined for admin command " + command + ".");
+			LOGGER.info("{}: No rights defined for admin command {}.", getClass().getSimpleName(), command);
 			return false;
 		}
 		return acar.getRequireConfirm();

+ 1 - 1
L2J_Server/java/com/l2jserver/gameserver/data/xml/impl/ArmorSetsData.java

@@ -50,7 +50,7 @@ public final class ArmorSetsData implements IXmlReader
 	{
 		_armorSets.clear();
 		parseDatapackDirectory("data/stats/armorsets", false);
-		LOGGER.info(getClass().getSimpleName() + ": Loaded " + _armorSets.size() + " Armor sets.");
+		LOGGER.info("{}: Loaded {} Armor sets.", getClass().getSimpleName(), _armorSets.size());
 	}
 	
 	@Override

+ 6 - 7
L2J_Server/java/com/l2jserver/gameserver/data/xml/impl/BuyListData.java

@@ -25,7 +25,6 @@ import java.sql.ResultSet;
 import java.sql.Statement;
 import java.util.HashMap;
 import java.util.Map;
-import java.util.logging.Level;
 
 import org.w3c.dom.Document;
 import org.w3c.dom.NamedNodeMap;
@@ -64,7 +63,7 @@ public final class BuyListData implements IXmlReader
 			parseDatapackDirectory("data/buylists/custom", false);
 		}
 		
-		LOGGER.info(getClass().getSimpleName() + ": Loaded " + _buyLists.size() + " BuyLists.");
+		LOGGER.info("{}: Loaded {} BuyLists.", getClass().getSimpleName(), _buyLists.size());
 		
 		try (Connection con = ConnectionFactory.getInstance().getConnection();
 			Statement statement = con.createStatement();
@@ -79,13 +78,13 @@ public final class BuyListData implements IXmlReader
 				final L2BuyList buyList = getBuyList(buyListId);
 				if (buyList == null)
 				{
-					LOGGER.warning("BuyList found in database but not loaded from xml! BuyListId: " + buyListId);
+					LOGGER.warn("BuyList found in database but not loaded from xml! BuyListId: {}", buyListId);
 					continue;
 				}
 				final Product product = buyList.getProductByItemId(itemId);
 				if (product == null)
 				{
-					LOGGER.warning("ItemId found in database but not loaded from xml! BuyListId: " + buyListId + " ItemId: " + itemId);
+					LOGGER.warn("ItemId found in database but not loaded from xml! BuyListId: {} Item ID: {}", buyListId, itemId);
 					continue;
 				}
 				if (count < product.getMaxCount())
@@ -97,7 +96,7 @@ public final class BuyListData implements IXmlReader
 		}
 		catch (Exception e)
 		{
-			LOGGER.log(Level.WARNING, "Failed to load buyList data from database.", e);
+			LOGGER.warn("Failed to load buyList data from database.", e);
 		}
 	}
 	
@@ -146,7 +145,7 @@ public final class BuyListData implements IXmlReader
 							}
 							else
 							{
-								LOGGER.warning("Item not found. BuyList:" + buyList.getListId() + " ItemID:" + itemId + " File:" + f.getName());
+								LOGGER.warn("Item not found. BuyList: {} Item ID: {} File: {}", buyList.getListId(), itemId, f.getName());
 							}
 						}
 						else if ("npcs".equalsIgnoreCase(list_node.getNodeName()))
@@ -167,7 +166,7 @@ public final class BuyListData implements IXmlReader
 		}
 		catch (Exception e)
 		{
-			LOGGER.log(Level.WARNING, "Failed to load buyList data from xml File:" + f.getName(), e);
+			LOGGER.warn("Failed to load buyList data from xml File: {}", f.getName(), e);
 		}
 	}
 	

+ 3 - 7
L2J_Server/java/com/l2jserver/gameserver/data/xml/impl/CategoryData.java

@@ -22,8 +22,6 @@ import java.util.HashMap;
 import java.util.HashSet;
 import java.util.Map;
 import java.util.Set;
-import java.util.logging.Level;
-import java.util.logging.Logger;
 
 import org.w3c.dom.Document;
 import org.w3c.dom.NamedNodeMap;
@@ -38,8 +36,6 @@ import com.l2jserver.util.data.xml.IXmlReader;
  */
 public final class CategoryData implements IXmlReader
 {
-	private static final Logger LOGGER = Logger.getLogger(CategoryData.class.getName());
-	
 	private final Map<CategoryType, Set<Integer>> _categories = new HashMap<>();
 	
 	protected CategoryData()
@@ -52,7 +48,7 @@ public final class CategoryData implements IXmlReader
 	{
 		_categories.clear();
 		parseDatapackFile("data/categoryData.xml");
-		LOGGER.info(getClass().getSimpleName() + ": Loaded " + _categories.size() + " Categories.");
+		LOGGER.info("{}: Loaded {} Categories.", getClass().getSimpleName(), _categories.size());
 	}
 	
 	@Override
@@ -70,7 +66,7 @@ public final class CategoryData implements IXmlReader
 						final CategoryType categoryType = CategoryType.findByName(attrs.getNamedItem("name").getNodeValue());
 						if (categoryType == null)
 						{
-							LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Can't find category by name :" + attrs.getNamedItem("name").getNodeValue());
+							LOGGER.warn("{}: Can't find category by name :{}", getClass().getSimpleName(), attrs.getNamedItem("name").getNodeValue());
 							continue;
 						}
 						
@@ -100,7 +96,7 @@ public final class CategoryData implements IXmlReader
 		final Set<Integer> category = getCategoryByType(type);
 		if (category == null)
 		{
-			LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Can't find category type :" + type);
+			LOGGER.warn("{}: Can't find category type: {}", getClass().getSimpleName(), type);
 			return false;
 		}
 		return category.contains(id);

+ 1 - 1
L2J_Server/java/com/l2jserver/gameserver/data/xml/impl/ClassListData.java

@@ -50,7 +50,7 @@ public final class ClassListData implements IXmlReader
 	{
 		_classData.clear();
 		parseDatapackFile("data/stats/chars/classList.xml");
-		LOGGER.info(getClass().getSimpleName() + ": Loaded " + _classData.size() + " Class data.");
+		LOGGER.info("{}: Loaded {} Class data.", getClass().getSimpleName(), _classData.size());
 	}
 	
 	@Override

+ 1 - 2
L2J_Server/java/com/l2jserver/gameserver/data/xml/impl/DoorData.java

@@ -61,6 +61,7 @@ public class DoorData implements IXmlReader
 		_groups.clear();
 		_regions.clear();
 		parseDatapackFile("data/doors.xml");
+		LOGGER.info("{}: Loaded {} Door templates for {} regions.", getClass().getSimpleName(), _doors.size(), _regions.size());
 	}
 	
 	@Override
@@ -88,8 +89,6 @@ public class DoorData implements IXmlReader
 				}
 			}
 		}
-		
-		LOGGER.info(getClass().getSimpleName() + ": Loaded " + _doors.size() + " Door Templates for " + _regions.size() + " regions.");
 	}
 	
 	public void insertCollisionData(StatsSet set)

+ 6 - 7
L2J_Server/java/com/l2jserver/gameserver/data/xml/impl/EnchantItemData.java

@@ -20,7 +20,6 @@ package com.l2jserver.gameserver.data.xml.impl;
 
 import java.util.HashMap;
 import java.util.Map;
-import java.util.logging.Level;
 
 import org.w3c.dom.Document;
 import org.w3c.dom.NamedNodeMap;
@@ -55,8 +54,8 @@ public class EnchantItemData implements IXmlReader
 		_scrolls.clear();
 		_supports.clear();
 		parseDatapackFile("data/enchantItemData.xml");
-		LOGGER.info(getClass().getSimpleName() + ": Loaded " + _scrolls.size() + " Enchant Scrolls.");
-		LOGGER.info(getClass().getSimpleName() + ": Loaded " + _supports.size() + " Support Items.");
+		LOGGER.info("{}: Loaded {} Enchant Scrolls.", getClass().getSimpleName(), _scrolls.size());
+		LOGGER.info("{}: Loaded {} Support Items.", getClass().getSimpleName(), _supports.size());
 	}
 	
 	@Override
@@ -95,11 +94,11 @@ public class EnchantItemData implements IXmlReader
 						}
 						catch (NullPointerException e)
 						{
-							LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Unexistent enchant scroll: " + set.getString("id") + " defined in enchant data!");
+							LOGGER.warn("{}: Unexistent enchant scroll: {} defined in enchant data!", getClass().getSimpleName(), set.getString("id"));
 						}
 						catch (IllegalAccessError e)
 						{
-							LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Wrong enchant scroll item type: " + set.getString("id") + " defined in enchant data!");
+							LOGGER.warn("{}: Wrong enchant scroll item type: {} defined in enchant data!", getClass().getSimpleName(), set.getString("id"));
 						}
 					}
 					else if ("support".equalsIgnoreCase(d.getNodeName()))
@@ -119,11 +118,11 @@ public class EnchantItemData implements IXmlReader
 						}
 						catch (NullPointerException e)
 						{
-							LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Unexistent enchant support item: " + set.getString("id") + " defined in enchant data!");
+							LOGGER.warn("{}: Unexistent enchant support item: {} defined in enchant data!", getClass().getSimpleName(), set.getString("id"));
 						}
 						catch (IllegalAccessError e)
 						{
-							LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Wrong enchant support item type: " + set.getString("id") + " defined in enchant data!");
+							LOGGER.warn("{}: Wrong enchant support item type: {} defined in enchant data!", getClass().getSimpleName(), set.getString("id"));
 						}
 					}
 				}

+ 3 - 3
L2J_Server/java/com/l2jserver/gameserver/data/xml/impl/EnchantItemGroupsData.java

@@ -20,7 +20,6 @@ package com.l2jserver.gameserver.data.xml.impl;
 
 import java.util.HashMap;
 import java.util.Map;
-import java.util.logging.Level;
 
 import org.w3c.dom.Document;
 import org.w3c.dom.NamedNodeMap;
@@ -36,6 +35,7 @@ import com.l2jserver.gameserver.util.Util;
 import com.l2jserver.util.data.xml.IXmlReader;
 
 /**
+ * Enchant Item Group data.
  * @author UnAfraid
  */
 public final class EnchantItemGroupsData implements IXmlReader
@@ -54,8 +54,8 @@ public final class EnchantItemGroupsData implements IXmlReader
 		_itemGroups.clear();
 		_scrollGroups.clear();
 		parseDatapackFile("data/enchantItemGroups.xml");
-		LOGGER.log(Level.INFO, getClass().getSimpleName() + ": Loaded: " + _itemGroups.size() + " item group templates.");
-		LOGGER.log(Level.INFO, getClass().getSimpleName() + ": Loaded: " + _scrollGroups.size() + " scroll group templates.");
+		LOGGER.info("{}: Loaded: {} item group templates.", getClass().getSimpleName(), _itemGroups.size());
+		LOGGER.info("{}: Loaded: {} scroll group templates.", getClass().getSimpleName(), _scrollGroups.size());
 	}
 	
 	@Override

+ 8 - 8
L2J_Server/java/com/l2jserver/gameserver/data/xml/impl/EnchantItemHPBonusData.java

@@ -54,6 +54,14 @@ public class EnchantItemHPBonusData implements IXmlReader
 		load();
 	}
 	
+	@Override
+	public void load()
+	{
+		_armorHPBonuses.clear();
+		parseDatapackFile("data/stats/enchantHPBonus.xml");
+		LOGGER.info("{}: Loaded {} Enchant HP Bonuses.", getClass().getSimpleName(), _armorHPBonuses.size());
+	}
+	
 	@Override
 	public void parseDocument(Document doc)
 	{
@@ -111,14 +119,6 @@ public class EnchantItemHPBonusData implements IXmlReader
 		}
 	}
 	
-	@Override
-	public void load()
-	{
-		_armorHPBonuses.clear();
-		parseDatapackFile("data/stats/enchantHPBonus.xml");
-		LOGGER.info(getClass().getSimpleName() + ": Loaded " + _armorHPBonuses.size() + " Enchant HP Bonuses.");
-	}
-	
 	/**
 	 * Gets the HP bonus.
 	 * @param item the item

+ 1 - 2
L2J_Server/java/com/l2jserver/gameserver/data/xml/impl/EnchantItemOptionsData.java

@@ -20,7 +20,6 @@ package com.l2jserver.gameserver.data.xml.impl;
 
 import java.util.HashMap;
 import java.util.Map;
-import java.util.logging.Level;
 
 import org.w3c.dom.Document;
 import org.w3c.dom.Node;
@@ -88,7 +87,7 @@ public class EnchantItemOptionsData implements IXmlReader
 				}
 			}
 		}
-		LOGGER.log(Level.INFO, getClass().getSimpleName() + ": Loaded: " + _data.size() + " Items and " + counter + " Options.");
+		LOGGER.info("{}: Loaded: {} Items and {} Options.", getClass().getSimpleName(), _data.size(), counter);
 	}
 	
 	/**

+ 2 - 3
L2J_Server/java/com/l2jserver/gameserver/data/xml/impl/EnchantSkillGroupsData.java

@@ -20,7 +20,6 @@ package com.l2jserver.gameserver.data.xml.impl;
 
 import java.util.HashMap;
 import java.util.Map;
-import java.util.logging.Level;
 
 import org.w3c.dom.Document;
 import org.w3c.dom.NamedNodeMap;
@@ -71,7 +70,7 @@ public class EnchantSkillGroupsData implements IXmlReader
 		{
 			routes += group.getEnchantGroupDetails().size();
 		}
-		LOGGER.info(getClass().getSimpleName() + ": Loaded " + _enchantSkillGroups.size() + " groups and " + routes + " routes.");
+		LOGGER.info("{}: Loaded {} groups and {} routes.", getClass().getSimpleName(), _enchantSkillGroups.size(), routes);
 	}
 	
 	@Override
@@ -137,7 +136,7 @@ public class EnchantSkillGroupsData implements IXmlReader
 			
 			return _enchantSkillGroups.get(group).getEnchantGroupDetails().size();
 		}
-		LOGGER.log(Level.SEVERE, getClass().getSimpleName() + ": Error while loading generating enchant skill id: " + skillId + "; route: " + route + "; missing group: " + group);
+		LOGGER.error("{}: Error while loading generating enchant skill ID: {} route: {} missing group: {}", skillId, route, group);
 		return 0;
 	}
 	

+ 3 - 3
L2J_Server/java/com/l2jserver/gameserver/data/xml/impl/ExperienceData.java

@@ -51,9 +51,9 @@ public final class ExperienceData implements IXmlReader
 	{
 		_expTable.clear();
 		parseDatapackFile("data/stats/experience.xml");
-		LOGGER.info(getClass().getSimpleName() + ": Loaded " + _expTable.size() + " levels.");
-		LOGGER.info(getClass().getSimpleName() + ": Max Player Level is: " + (MAX_LEVEL - 1));
-		LOGGER.info(getClass().getSimpleName() + ": Max Pet Level is: " + (MAX_PET_LEVEL - 1));
+		LOGGER.info("{}: Loaded {} levels.", getClass().getSimpleName(), _expTable.size());
+		LOGGER.info("{}: Max Player Level is: {}", getClass().getSimpleName(), (MAX_LEVEL - 1));
+		LOGGER.info("{}: Max Pet Level is: {}", getClass().getSimpleName(), (MAX_PET_LEVEL - 1));
 	}
 	
 	@Override

+ 3 - 3
L2J_Server/java/com/l2jserver/gameserver/data/xml/impl/FishData.java

@@ -56,7 +56,7 @@ public final class FishData implements IXmlReader
 		_fishNormal.clear();
 		_fishHard.clear();
 		parseDatapackFile("data/stats/fishing/fishes.xml");
-		LOGGER.info(getClass().getSimpleName() + ": Loaded " + (_fishEasy.size() + _fishNormal.size() + _fishHard.size()) + " Fishes.");
+		LOGGER.info("{}: Loaded {} Fish.", getClass().getSimpleName(), (_fishEasy.size() + _fishNormal.size() + _fishHard.size()));
 	}
 	
 	@Override
@@ -134,7 +134,7 @@ public final class FishData implements IXmlReader
 			}
 			default:
 			{
-				LOGGER.warning(getClass().getSimpleName() + ": Unmanaged fish grade!");
+				LOGGER.warn("{}: Unmanaged fish grade!", getClass().getSimpleName());
 				return result;
 			}
 		}
@@ -150,7 +150,7 @@ public final class FishData implements IXmlReader
 		
 		if (result.isEmpty())
 		{
-			LOGGER.warning(getClass().getSimpleName() + ": Cannot find any fish for level: " + level + " group: " + group + " and grade: " + grade + "!");
+			LOGGER.warn("{}: Cannot find any fish for level: {} group: {} and grade: {}!", getClass().getSimpleName(), level, group, grade);
 		}
 		return result;
 	}

+ 1 - 1
L2J_Server/java/com/l2jserver/gameserver/data/xml/impl/FishingMonstersData.java

@@ -50,7 +50,7 @@ public final class FishingMonstersData implements IXmlReader
 	{
 		_fishingMonstersData.clear();
 		parseDatapackFile("data/stats/fishing/fishingMonsters.xml");
-		LOGGER.info(getClass().getSimpleName() + ": Loaded " + _fishingMonstersData.size() + " Fishing Monsters.");
+		LOGGER.info("{}: Loaded {} Fishing Monsters.", getClass().getSimpleName(), _fishingMonstersData.size());
 	}
 	
 	@Override

+ 1 - 1
L2J_Server/java/com/l2jserver/gameserver/data/xml/impl/FishingRodsData.java

@@ -50,7 +50,7 @@ public final class FishingRodsData implements IXmlReader
 	{
 		_fishingRods.clear();
 		parseDatapackFile("data/stats/fishing/fishingRods.xml");
-		LOGGER.info(getClass().getSimpleName() + ": Loaded " + _fishingRods.size() + " Fishing Rods.");
+		LOGGER.info("{}: Loaded {} Fishing Rods.", getClass().getSimpleName(), _fishingRods.size());
 	}
 	
 	@Override

+ 1 - 1
L2J_Server/java/com/l2jserver/gameserver/data/xml/impl/HennaData.java

@@ -56,7 +56,7 @@ public final class HennaData implements IXmlReader
 	{
 		_hennaList.clear();
 		parseDatapackFile("data/stats/hennaList.xml");
-		LOGGER.info(getClass().getSimpleName() + ": Loaded " + _hennaList.size() + " Henna data.");
+		LOGGER.info("{}: Loaded {} Henna data.", getClass().getSimpleName(), _hennaList.size());
 	}
 	
 	@Override

+ 8 - 12
L2J_Server/java/com/l2jserver/gameserver/data/xml/impl/HitConditionBonusData.java

@@ -22,7 +22,6 @@ import org.w3c.dom.Document;
 import org.w3c.dom.NamedNodeMap;
 import org.w3c.dom.Node;
 
-import com.l2jserver.Config;
 import com.l2jserver.gameserver.GameTimeController;
 import com.l2jserver.gameserver.model.actor.L2Character;
 import com.l2jserver.util.data.xml.IXmlReader;
@@ -53,17 +52,14 @@ public final class HitConditionBonusData implements IXmlReader
 	public void load()
 	{
 		parseDatapackFile("data/stats/hitConditionBonus.xml");
-		LOGGER.info(getClass().getSimpleName() + ": Loaded Hit Condition bonuses.");
-		if (Config.DEBUG)
-		{
-			LOGGER.info(getClass().getSimpleName() + ": Front bonus: " + frontBonus);
-			LOGGER.info(getClass().getSimpleName() + ": Side bonus: " + sideBonus);
-			LOGGER.info(getClass().getSimpleName() + ": Back bonus: " + backBonus);
-			LOGGER.info(getClass().getSimpleName() + ": High bonus: " + highBonus);
-			LOGGER.info(getClass().getSimpleName() + ": Low bonus: " + lowBonus);
-			LOGGER.info(getClass().getSimpleName() + ": Dark bonus: " + darkBonus);
-			LOGGER.info(getClass().getSimpleName() + ": Rain bonus: " + rainBonus);
-		}
+		LOGGER.info("{}: Loaded Hit Condition bonuses.", getClass().getSimpleName());
+		LOGGER.debug("{}: Front bonus: {}", getClass().getSimpleName(), frontBonus);
+		LOGGER.debug("{}: Side bonus: {}", getClass().getSimpleName(), sideBonus);
+		LOGGER.debug("{}: Back bonus: {}", getClass().getSimpleName(), backBonus);
+		LOGGER.debug("{}: High bonus: {}", getClass().getSimpleName(), highBonus);
+		LOGGER.debug("{}: Low bonus: {}", getClass().getSimpleName(), lowBonus);
+		LOGGER.debug("{}: Dark bonus: {}", getClass().getSimpleName(), darkBonus);
+		LOGGER.debug("{}: Rain bonus: {}", getClass().getSimpleName(), rainBonus);
 	}
 	
 	@Override

+ 1 - 1
L2J_Server/java/com/l2jserver/gameserver/data/xml/impl/InitialEquipmentData.java

@@ -57,7 +57,7 @@ public final class InitialEquipmentData implements IXmlReader
 	{
 		_initialEquipmentList.clear();
 		parseDatapackFile(Config.INITIAL_EQUIPMENT_EVENT ? EVENT : NORMAL);
-		LOGGER.info(getClass().getSimpleName() + ": Loaded " + _initialEquipmentList.size() + " Initial Equipment data.");
+		LOGGER.info("{}: Loaded {} Initial Equipment data.", getClass().getSimpleName(), _initialEquipmentList.size());
 	}
 	
 	@Override

+ 3 - 3
L2J_Server/java/com/l2jserver/gameserver/data/xml/impl/InitialShortcutData.java

@@ -65,9 +65,9 @@ public final class InitialShortcutData implements IXmlReader
 		
 		parseDatapackFile("data/stats/initialShortcuts.xml");
 		
-		LOGGER.info(getClass().getSimpleName() + ": Loaded " + _initialGlobalShortcutList.size() + " Initial Global Shortcuts data.");
-		LOGGER.info(getClass().getSimpleName() + ": Loaded " + _initialShortcutData.size() + " Initial Shortcuts data.");
-		LOGGER.info(getClass().getSimpleName() + ": Loaded " + _macroPresets.size() + " Macros presets.");
+		LOGGER.info("{}: Loaded {} Initial Global Shortcuts data.", getClass().getSimpleName(), _initialGlobalShortcutList.size());
+		LOGGER.info("{}: Loaded {} Initial Shortcuts data.", getClass().getSimpleName(), _initialShortcutData.size());
+		LOGGER.info("{}: Loaded {} Macros presets.", getClass().getSimpleName(), _macroPresets.size());
 	}
 	
 	@Override

+ 2 - 2
L2J_Server/java/com/l2jserver/gameserver/data/xml/impl/KarmaData.java

@@ -20,7 +20,6 @@ package com.l2jserver.gameserver.data.xml.impl;
 
 import java.util.HashMap;
 import java.util.Map;
-import java.util.logging.Level;
 
 import org.w3c.dom.Document;
 import org.w3c.dom.NamedNodeMap;
@@ -29,6 +28,7 @@ import org.w3c.dom.Node;
 import com.l2jserver.util.data.xml.IXmlReader;
 
 /**
+ * Karma data.
  * @author UnAfraid
  */
 public class KarmaData implements IXmlReader
@@ -45,7 +45,7 @@ public class KarmaData implements IXmlReader
 	{
 		_karmaTable.clear();
 		parseDatapackFile("data/stats/chars/pcKarmaIncrease.xml");
-		LOGGER.log(Level.INFO, getClass().getSimpleName() + ": Loaded " + _karmaTable.size() + " karma modifiers.");
+		LOGGER.info("{}: Loaded {} karma modifiers.", getClass().getSimpleName(), _karmaTable.size());
 	}
 	
 	@Override

+ 8 - 10
L2J_Server/java/com/l2jserver/gameserver/data/xml/impl/MultisellData.java

@@ -23,7 +23,6 @@ import java.io.FileFilter;
 import java.util.HashMap;
 import java.util.Iterator;
 import java.util.Map;
-import java.util.logging.Level;
 
 import org.w3c.dom.DOMException;
 import org.w3c.dom.Document;
@@ -75,7 +74,7 @@ public final class MultisellData implements IXmlReader
 		}
 		
 		verify();
-		LOGGER.log(Level.INFO, getClass().getSimpleName() + ": Loaded " + _entries.size() + " multisell lists.");
+		LOGGER.info("{}: Loaded {} multisell lists.", getClass().getSimpleName(), _entries.size());
 	}
 	
 	@Override
@@ -109,21 +108,20 @@ public final class MultisellData implements IXmlReader
 						}
 						catch (NumberFormatException e)
 						{
-							
 							try
 							{
 								list.setUseRate(Config.class.getField(att.getNodeValue()).getDouble(Config.class));
 							}
 							catch (Exception e1)
 							{
-								LOGGER.warning(e1.getMessage() + doc.getLocalName());
+								LOGGER.warn("{}: Unable to parse {}", getClass().getSimpleName(), doc.getLocalName(), e1);
 								list.setUseRate(1.0);
 							}
 							
 						}
 						catch (DOMException e)
 						{
-							LOGGER.warning(e.getMessage() + doc.getLocalName());
+							LOGGER.warn("{}: Unable to parse {}", getClass().getSimpleName(), doc.getLocalName(), e);
 						}
 					}
 					
@@ -157,7 +155,7 @@ public final class MultisellData implements IXmlReader
 		}
 		catch (Exception e)
 		{
-			LOGGER.log(Level.SEVERE, getClass().getSimpleName() + ": Error in file " + f, e);
+			LOGGER.error("{}: Error in file {}", getClass().getSimpleName(), f, e);
 		}
 	}
 	
@@ -239,13 +237,13 @@ public final class MultisellData implements IXmlReader
 		ListContainer template = _entries.get(listId);
 		if (template == null)
 		{
-			LOGGER.warning(getClass().getSimpleName() + ": can't find list id: " + listId + " requested by player: " + player.getName() + ", npcId:" + (npc != null ? npc.getId() : 0));
+			LOGGER.warn("{}: Cannot find list ID: {} requested by player: {}, NPC ID: {}!", getClass().getSimpleName(), listId, player, (npc != null ? npc.getId() : 0));
 			return;
 		}
 		
 		if (((npc != null) && !template.isNpcAllowed(npc.getId())) || ((npc == null) && template.isNpcOnly()))
 		{
-			LOGGER.warning(getClass().getSimpleName() + ": player " + player + " attempted to open multisell " + listId + " from npc " + npc + " which is not allowed!");
+			LOGGER.warn("{}: Player {} attempted to open multisell {} from npc {} which is not allowed!", getClass().getSimpleName(), player, listId, npc);
 			return;
 		}
 		
@@ -360,14 +358,14 @@ public final class MultisellData implements IXmlReader
 				{
 					if (!verifyIngredient(ing))
 					{
-						LOGGER.warning(getClass().getSimpleName() + ": can't find ingredient with itemId: " + ing.getItemId() + " in list: " + list.getListId());
+						LOGGER.warn("{}: Cannot find ingredient with item ID: {} in list: {}!", getClass().getSimpleName(), ing.getItemId(), list.getListId());
 					}
 				}
 				for (Ingredient ing : ent.getProducts())
 				{
 					if (!verifyIngredient(ing))
 					{
-						LOGGER.warning(getClass().getSimpleName() + ": can't find product with itemId: " + ing.getItemId() + " in list: " + list.getListId());
+						LOGGER.warn("{}: Cannot find product with item ID: {} in list: {}!", getClass().getSimpleName(), ing.getItemId(), list.getListId());
 					}
 				}
 			}

+ 5 - 5
L2J_Server/java/com/l2jserver/gameserver/data/xml/impl/NpcData.java

@@ -73,13 +73,13 @@ public class NpcData implements IXmlReader
 		_minionData = new MinionData();
 		
 		parseDatapackDirectory("data/stats/npcs", false);
-		LOGGER.info(getClass().getSimpleName() + ": Loaded " + _npcs.size() + " NPCs.");
+		LOGGER.info("{}: Loaded {} NPCs.", getClass().getSimpleName(), _npcs.size());
 		
 		if (Config.CUSTOM_NPC_DATA)
 		{
 			final int npcCount = _npcs.size();
 			parseDatapackDirectory("data/stats/npcs/custom", true);
-			LOGGER.info(getClass().getSimpleName() + ": Loaded " + (_npcs.size() - npcCount) + " Custom NPCs.");
+			LOGGER.info("{}: Loaded {} custom NPCs.", getClass().getSimpleName(), (_npcs.size() - npcCount));
 		}
 		
 		_minionData = null;
@@ -339,7 +339,7 @@ public class NpcData implements IXmlReader
 											}
 											else
 											{
-												LOGGER.warning("[" + f.getName() + "] skill not found. NPC ID: " + npcId + " Skill ID:" + skillId + " Skill Level: " + skillLevel);
+												LOGGER.warn("[{}] skill not found. NPC ID: {} Skill ID: {} Skill Level: {}!", f.getName(), npcId, skillId, skillLevel);
 											}
 										}
 									}
@@ -647,7 +647,7 @@ public class NpcData implements IXmlReader
 						}
 						else
 						{
-							LOGGER.warning("[" + f + "] grouped general drop item supports only general drop item.");
+							LOGGER.warn("[{}] grouped general drop item supports only general drop item.", f);
 						}
 					}
 					dropItem.setItems(items);
@@ -820,7 +820,7 @@ public class NpcData implements IXmlReader
 		{
 			_tempMinions.clear();
 			parseDatapackFile("data/minionData.xml");
-			LOGGER.info(getClass().getSimpleName() + ": Loaded " + _tempMinions.size() + " minions data.");
+			LOGGER.info("{}: Loaded {} minions data.", getClass().getSimpleName(), _tempMinions.size());
 		}
 		
 		@Override

+ 2 - 2
L2J_Server/java/com/l2jserver/gameserver/data/xml/impl/OptionData.java

@@ -20,7 +20,6 @@ package com.l2jserver.gameserver.data.xml.impl;
 
 import java.util.HashMap;
 import java.util.Map;
-import java.util.logging.Level;
 
 import org.w3c.dom.Document;
 import org.w3c.dom.NamedNodeMap;
@@ -35,6 +34,7 @@ import com.l2jserver.gameserver.model.stats.functions.FuncTemplate;
 import com.l2jserver.util.data.xml.IXmlReader;
 
 /**
+ * Item Option data.
  * @author UnAfraid
  */
 public class OptionData implements IXmlReader
@@ -51,7 +51,7 @@ public class OptionData implements IXmlReader
 	{
 		_optionData.clear();
 		parseDatapackDirectory("data/stats/options", false);
-		LOGGER.log(Level.INFO, getClass().getSimpleName() + ": Loaded: " + _optionData.size() + " Options.");
+		LOGGER.info("{}: Loaded: {} Options.", getClass().getSimpleName(), _optionData.size());
 	}
 	
 	@Override

+ 2 - 2
L2J_Server/java/com/l2jserver/gameserver/data/xml/impl/PetDataTable.java

@@ -53,7 +53,7 @@ public final class PetDataTable implements IXmlReader
 	{
 		_pets.clear();
 		parseDatapackDirectory("data/stats/pets", false);
-		LOGGER.info(getClass().getSimpleName() + ": Loaded " + _pets.size() + " Pets.");
+		LOGGER.info("{}: Loaded {} Pets.", getClass().getSimpleName(), _pets.size());
 	}
 	
 	@Override
@@ -192,7 +192,7 @@ public final class PetDataTable implements IXmlReader
 	{
 		if (!_pets.containsKey(petId))
 		{
-			LOGGER.info(getClass().getSimpleName() + ": Missing pet data for npcid: " + petId);
+			LOGGER.info("{}: Missing pet data for NPC ID {}!", getClass().getSimpleName(), petId);
 		}
 		return _pets.get(petId);
 	}

+ 2 - 5
L2J_Server/java/com/l2jserver/gameserver/data/xml/impl/PlayerTemplateData.java

@@ -22,7 +22,6 @@ import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
-import java.util.logging.Logger;
 
 import org.w3c.dom.Document;
 import org.w3c.dom.NamedNodeMap;
@@ -40,8 +39,6 @@ import com.l2jserver.util.data.xml.IXmlReader;
  */
 public final class PlayerTemplateData implements IXmlReader
 {
-	private static final Logger LOGGER = Logger.getLogger(PlayerTemplateData.class.getName());
-	
 	private final Map<ClassId, L2PcTemplate> _playerTemplates = new HashMap<>();
 	
 	private int _dataCount = 0;
@@ -56,8 +53,8 @@ public final class PlayerTemplateData implements IXmlReader
 	{
 		_playerTemplates.clear();
 		parseDatapackDirectory("data/stats/chars/baseStats", false);
-		LOGGER.info(getClass().getSimpleName() + ": Loaded " + _playerTemplates.size() + " character templates.");
-		LOGGER.info(getClass().getSimpleName() + ": Loaded " + _dataCount + " level up gain records.");
+		LOGGER.info("{}: Loaded {} character templates.", getClass().getSimpleName(), _playerTemplates.size());
+		LOGGER.info("{}: Loaded {} level up gain records.", getClass().getSimpleName(), _dataCount);
 	}
 	
 	@Override

+ 1 - 1
L2J_Server/java/com/l2jserver/gameserver/data/xml/impl/PlayerXpPercentLostData.java

@@ -70,7 +70,7 @@ public final class PlayerXpPercentLostData implements IXmlReader
 	{
 		if (level > _maxlevel)
 		{
-			LOGGER.warning("Require to high level inside PlayerXpPercentLostData (" + level + ")");
+			LOGGER.warn("Require to high level inside PlayerXpPercentLostData ({})", level);
 			return _playerXpPercentLost[_maxlevel];
 		}
 		return _playerXpPercentLost[level];

+ 9 - 9
L2J_Server/java/com/l2jserver/gameserver/data/xml/impl/RecipeData.java

@@ -55,7 +55,7 @@ public class RecipeData implements IXmlReader
 	{
 		_recipes.clear();
 		parseDatapackFile("data/recipes.xml");
-		LOGGER.info(getClass().getSimpleName() + ": Loaded " + _recipes.size() + " recipes.");
+		LOGGER.info("{}: Loaded {} recipes.", getClass().getSimpleName(), _recipes.size());
 	}
 	
 	@Override
@@ -85,7 +85,7 @@ public class RecipeData implements IXmlReader
 						att = attrs.getNamedItem("id");
 						if (att == null)
 						{
-							LOGGER.severe(getClass().getSimpleName() + ": Missing id for recipe item, skipping");
+							LOGGER.error("{}: Missing id for recipe item, skipping!", getClass().getSimpleName());
 							continue;
 						}
 						id = Integer.parseInt(att.getNodeValue());
@@ -94,7 +94,7 @@ public class RecipeData implements IXmlReader
 						att = attrs.getNamedItem("recipeId");
 						if (att == null)
 						{
-							LOGGER.severe(getClass().getSimpleName() + ": Missing recipeId for recipe item id: " + id + ", skipping");
+							LOGGER.error("{}: Missing recipeId for recipe item ID: {}, skipping!", getClass().getSimpleName(), id);
 							continue;
 						}
 						set.set("recipeId", Integer.parseInt(att.getNodeValue()));
@@ -102,7 +102,7 @@ public class RecipeData implements IXmlReader
 						att = attrs.getNamedItem("name");
 						if (att == null)
 						{
-							LOGGER.severe(getClass().getSimpleName() + ": Missing name for recipe item id: " + id + ", skipping");
+							LOGGER.error("{}: Missing name for recipe item ID: {}, skipping!", getClass().getSimpleName(), id);
 							continue;
 						}
 						set.set("recipeName", att.getNodeValue());
@@ -110,7 +110,7 @@ public class RecipeData implements IXmlReader
 						att = attrs.getNamedItem("craftLevel");
 						if (att == null)
 						{
-							LOGGER.severe(getClass().getSimpleName() + ": Missing level for recipe item id: " + id + ", skipping");
+							LOGGER.error("{}: Missing level for recipe item ID: {}, skipping!", getClass().getSimpleName(), id);
 							continue;
 						}
 						set.set("craftLevel", Integer.parseInt(att.getNodeValue()));
@@ -118,7 +118,7 @@ public class RecipeData implements IXmlReader
 						att = attrs.getNamedItem("type");
 						if (att == null)
 						{
-							LOGGER.severe(getClass().getSimpleName() + ": Missing type for recipe item id: " + id + ", skipping");
+							LOGGER.error("{}: Missing type for recipe item ID: {}, skipping!", getClass().getSimpleName(), id);
 							continue;
 						}
 						set.set("isDwarvenRecipe", att.getNodeValue().equalsIgnoreCase("dwarven"));
@@ -126,7 +126,7 @@ public class RecipeData implements IXmlReader
 						att = attrs.getNamedItem("successRate");
 						if (att == null)
 						{
-							LOGGER.severe(getClass().getSimpleName() + ": Missing successRate for recipe item id: " + id + ", skipping");
+							LOGGER.error("{}: Missing successRate for recipe item ID: {}, skipping!", getClass().getSimpleName(), id);
 							continue;
 						}
 						set.set("successRate", Integer.parseInt(att.getNodeValue()));
@@ -143,7 +143,7 @@ public class RecipeData implements IXmlReader
 								}
 								catch (Exception e)
 								{
-									LOGGER.severe(getClass().getSimpleName() + ": Error in StatUse parameter for recipe item id: " + id + ", skipping");
+									LOGGER.error("{}: Error in StatUse parameter for recipe item ID: {}, skipping!", getClass().getSimpleName(), id);
 									continue RECIPES_FILE;
 								}
 							}
@@ -157,7 +157,7 @@ public class RecipeData implements IXmlReader
 								}
 								catch (Exception e)
 								{
-									LOGGER.severe(getClass().getSimpleName() + ": Error in AltStatChange parameter for recipe item id: " + id + ", skipping");
+									LOGGER.error("{}: Error in AltStatChange parameter for recipe item ID: {}, skipping!", getClass().getSimpleName(), id);
 									continue RECIPES_FILE;
 								}
 							}

+ 3 - 3
L2J_Server/java/com/l2jserver/gameserver/data/xml/impl/SecondaryAuthData.java

@@ -21,7 +21,6 @@ package com.l2jserver.gameserver.data.xml.impl;
 import java.io.File;
 import java.util.HashSet;
 import java.util.Set;
-import java.util.logging.Level;
 
 import org.w3c.dom.Document;
 import org.w3c.dom.Node;
@@ -29,6 +28,7 @@ import org.w3c.dom.Node;
 import com.l2jserver.util.data.xml.IXmlReader;
 
 /**
+ * Secondary Auth data.
  * @author NosBit
  */
 public class SecondaryAuthData implements IXmlReader
@@ -49,7 +49,7 @@ public class SecondaryAuthData implements IXmlReader
 	{
 		_forbiddenPasswords.clear();
 		parseFile(new File("config/SecondaryAuth.xml"));
-		LOGGER.info(getClass().getSimpleName() + ": Loaded " + _forbiddenPasswords.size() + " forbidden passwords.");
+		LOGGER.info("{}: Loaded {} forbidden passwords.", getClass().getSimpleName(), _forbiddenPasswords.size());
 	}
 	
 	@Override
@@ -95,7 +95,7 @@ public class SecondaryAuthData implements IXmlReader
 		}
 		catch (Exception e)
 		{
-			LOGGER.log(Level.WARNING, "Failed to load secondary auth data from xml.", e);
+			LOGGER.warn("Failed to load secondary auth data from xml.", e);
 		}
 	}
 	

+ 4 - 4
L2J_Server/java/com/l2jserver/gameserver/data/xml/impl/SiegeScheduleData.java

@@ -21,7 +21,6 @@ package com.l2jserver.gameserver.data.xml.impl;
 import java.util.ArrayList;
 import java.util.Calendar;
 import java.util.List;
-import java.util.logging.Level;
 
 import org.w3c.dom.Document;
 import org.w3c.dom.NamedNodeMap;
@@ -33,6 +32,7 @@ import com.l2jserver.gameserver.util.Util;
 import com.l2jserver.util.data.xml.IXmlReader;
 
 /**
+ * Siege Schedule data.
  * @author UnAfraid
  */
 public class SiegeScheduleData implements IXmlReader
@@ -49,11 +49,11 @@ public class SiegeScheduleData implements IXmlReader
 	{
 		_scheduleData.clear();
 		parseDatapackFile("config/SiegeSchedule.xml");
-		LOGGER.log(Level.INFO, getClass().getSimpleName() + ": Loaded: " + _scheduleData.size() + " siege schedulers.");
+		LOGGER.info("{}: Loaded: {} siege schedulers.", getClass().getSimpleName(), _scheduleData.size());
 		if (_scheduleData.isEmpty())
 		{
 			_scheduleData.add(new SiegeScheduleDate(new StatsSet()));
-			LOGGER.log(Level.INFO, getClass().getSimpleName() + ": Emergency Loaded: " + _scheduleData.size() + " default siege schedulers.");
+			LOGGER.info("{}: Emergency Loaded: {} default siege schedulers.", getClass().getSimpleName(), _scheduleData.size());
 		}
 	}
 	
@@ -103,7 +103,7 @@ public class SiegeScheduleData implements IXmlReader
 		}
 		catch (Exception e)
 		{
-			LOGGER.log(Level.WARNING, "", e);
+			LOGGER.warn("{}: Unable to get value!", getClass().getSimpleName(), e);
 			return -1;
 		}
 	}

+ 2 - 2
L2J_Server/java/com/l2jserver/gameserver/data/xml/impl/SkillLearnData.java

@@ -30,7 +30,7 @@ import com.l2jserver.gameserver.model.base.ClassId;
 import com.l2jserver.util.data.xml.IXmlReader;
 
 /**
- * Holds all skill learn data for all npcs.
+ * Holds all skill learn data for all NPCs.
  * @author xban1x
  */
 public final class SkillLearnData implements IXmlReader
@@ -47,7 +47,7 @@ public final class SkillLearnData implements IXmlReader
 	{
 		_skillLearn.clear();
 		parseDatapackFile("data/skillLearn.xml");
-		LOGGER.info(getClass().getSimpleName() + ": Loaded " + _skillLearn.size() + " Skill Learn data.");
+		LOGGER.info("{}: Loaded {} Skill Learn data.", getClass().getSimpleName(), _skillLearn.size());
 	}
 	
 	@Override

+ 17 - 17
L2J_Server/java/com/l2jserver/gameserver/data/xml/impl/SkillTreesData.java

@@ -291,7 +291,7 @@ public final class SkillTreesData implements IXmlReader
 									}
 									default:
 									{
-										LOGGER.warning(getClass().getSimpleName() + ": Unknown Skill Tree type: " + type + "!");
+										LOGGER.warn("{}: Unknown Skill Tree type: {}!", getClass().getSimpleName(), type);
 									}
 								}
 							}
@@ -517,7 +517,7 @@ public final class SkillTreesData implements IXmlReader
 		if (skills.isEmpty())
 		{
 			// The Skill Tree for this class is undefined.
-			LOGGER.warning(getClass().getSimpleName() + ": Skilltree for class " + classId + " is not defined!");
+			LOGGER.warn("{}: Skilltree for class {} is not defined!", getClass().getSimpleName(), classId);
 			return result;
 		}
 		
@@ -578,7 +578,7 @@ public final class SkillTreesData implements IXmlReader
 		if (skills.isEmpty())
 		{
 			// The Skill Tree for this class is undefined, so we return an empty list.
-			LOGGER.warning(getClass().getSimpleName() + ": Skill Tree for this class Id(" + player.getClassId() + ") is not defined!");
+			LOGGER.warn("{}: Skill Tree for class ID {} is not defined!", getClass().getSimpleName(), player.getClassId());
 			return result;
 		}
 		
@@ -1034,7 +1034,7 @@ public final class SkillTreesData implements IXmlReader
 		int minLevel = 0;
 		if (skillTree.isEmpty())
 		{
-			LOGGER.warning(getClass().getSimpleName() + ": SkillTree is not defined for getMinLevelForNewSkill!");
+			LOGGER.warn("{}: SkillTree is not defined for getMinLevelForNewSkill!", getClass().getSimpleName());
 		}
 		else
 		{
@@ -1312,22 +1312,22 @@ public final class SkillTreesData implements IXmlReader
 		}
 		
 		final String className = getClass().getSimpleName();
-		LOGGER.info(className + ": Loaded " + classSkillTreeCount + " Class Skills for " + _classSkillTrees.size() + " Class Skill Trees.");
-		LOGGER.info(className + ": Loaded " + _subClassSkillTree.size() + " Sub-Class Skills.");
-		LOGGER.info(className + ": Loaded " + trasferSkillTreeCount + " Transfer Skills for " + _transferSkillTrees.size() + " Transfer Skill Trees.");
-		LOGGER.info(className + ": Loaded " + _fishingSkillTree.size() + " Fishing Skills, " + dwarvenOnlyFishingSkillCount + " Dwarven only Fishing Skills.");
-		LOGGER.info(className + ": Loaded " + _collectSkillTree.size() + " Collect Skills.");
-		LOGGER.info(className + ": Loaded " + _pledgeSkillTree.size() + " Pledge Skills, " + (_pledgeSkillTree.size() - resSkillCount) + " for Pledge and " + resSkillCount + " Residential.");
-		LOGGER.info(className + ": Loaded " + _subPledgeSkillTree.size() + " Sub-Pledge Skills.");
-		LOGGER.info(className + ": Loaded " + _transformSkillTree.size() + " Transform Skills.");
-		LOGGER.info(className + ": Loaded " + _nobleSkillTree.size() + " Noble Skills.");
-		LOGGER.info(className + ": Loaded " + _heroSkillTree.size() + " Hero Skills.");
-		LOGGER.info(className + ": Loaded " + _gameMasterSkillTree.size() + " Game Master Skills.");
-		LOGGER.info(className + ": Loaded " + _gameMasterAuraSkillTree.size() + " Game Master Aura Skills.");
+		LOGGER.info("{}: Loaded {} Class Skills for {} Class Skill Trees.", className, classSkillTreeCount, _classSkillTrees.size());
+		LOGGER.info("{}: Loaded {} Sub-Class Skills.", className, _subClassSkillTree.size());
+		LOGGER.info("{}: Loaded {} Transfer Skills for {} Transfer Skill Trees.", className, trasferSkillTreeCount, _transferSkillTrees.size());
+		LOGGER.info("{}: Loaded {} Fishing Skills, {} Dwarven only Fishing Skills.", className, _fishingSkillTree.size(), dwarvenOnlyFishingSkillCount);
+		LOGGER.info("{}: Loaded {} Collect Skills.", className, _collectSkillTree.size());
+		LOGGER.info("{}: Loaded {} Pledge Skills, {} for Pledge and {} Residential.", className, _pledgeSkillTree.size(), (_pledgeSkillTree.size() - resSkillCount), resSkillCount);
+		LOGGER.info("{}: Loaded {} Sub-Pledge Skills.", className, _subPledgeSkillTree.size());
+		LOGGER.info("{}: Loaded {} Transform Skills.", className, _transformSkillTree.size());
+		LOGGER.info("{}: Loaded {} Noble Skills.", className, _nobleSkillTree.size());
+		LOGGER.info("{}: Loaded {} Hero Skills.", className, _heroSkillTree.size());
+		LOGGER.info("{}: Loaded {} Game Master Skills.", className, _gameMasterSkillTree.size());
+		LOGGER.info("{}: Loaded {} Game Master Aura Skills.", className, _gameMasterAuraSkillTree.size());
 		final int commonSkills = _commonSkillTree.size();
 		if (commonSkills > 0)
 		{
-			LOGGER.info(className + ": Loaded " + commonSkills + " Common Skills to all classes.");
+			LOGGER.info("{}: Loaded {} Common Skills to all classes.", className, commonSkills);
 		}
 	}
 	

+ 1 - 1
L2J_Server/java/com/l2jserver/gameserver/data/xml/impl/StaticObjectData.java

@@ -52,7 +52,7 @@ public final class StaticObjectData implements IXmlReader
 	{
 		_staticObjects.clear();
 		parseDatapackFile("data/staticObjects.xml");
-		LOGGER.info(getClass().getSimpleName() + ": Loaded " + _staticObjects.size() + " static object templates.");
+		LOGGER.info("{}: Loaded {} static object templates.", getClass().getSimpleName(), _staticObjects.size());
 	}
 	
 	@Override

+ 2 - 2
L2J_Server/java/com/l2jserver/gameserver/data/xml/impl/TransformData.java

@@ -20,7 +20,6 @@ package com.l2jserver.gameserver.data.xml.impl;
 
 import java.util.HashMap;
 import java.util.Map;
-import java.util.logging.Level;
 
 import org.w3c.dom.Document;
 import org.w3c.dom.NamedNodeMap;
@@ -38,6 +37,7 @@ import com.l2jserver.gameserver.network.serverpackets.ExBasicActionList;
 import com.l2jserver.util.data.xml.IXmlReader;
 
 /**
+ * Transformation data.
  * @author UnAfraid
  */
 public final class TransformData implements IXmlReader
@@ -54,7 +54,7 @@ public final class TransformData implements IXmlReader
 	{
 		_transformData.clear();
 		parseDatapackDirectory("data/stats/transformations", false);
-		LOGGER.log(Level.INFO, getClass().getSimpleName() + ": Loaded: " + _transformData.size() + " transform templates.");
+		LOGGER.info("{}: Loaded: {} transform templates.", getClass().getSimpleName(), _transformData.size());
 	}
 	
 	@Override

+ 1 - 4
L2J_Server/java/com/l2jserver/gameserver/data/xml/impl/UIData.java

@@ -22,7 +22,6 @@ import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
-import java.util.logging.Logger;
 
 import org.w3c.dom.Document;
 import org.w3c.dom.Node;
@@ -36,8 +35,6 @@ import com.l2jserver.util.data.xml.IXmlReader;
  */
 public class UIData implements IXmlReader
 {
-	private static final Logger LOGGER = Logger.getLogger(UIData.class.getName());
-	
 	private final Map<Integer, List<ActionKey>> _storedKeys = new HashMap<>();
 	private final Map<Integer, List<Integer>> _storedCategories = new HashMap<>();
 	
@@ -52,7 +49,7 @@ public class UIData implements IXmlReader
 		_storedKeys.clear();
 		_storedCategories.clear();
 		parseDatapackFile("data/ui/ui_en.xml");
-		LOGGER.info(getClass().getSimpleName() + ": Loaded " + _storedKeys.size() + " keys " + _storedCategories.size() + " categories.");
+		LOGGER.info("{}: Loaded {} keys {} categories.", getClass().getSimpleName(), _storedKeys.size(), _storedCategories.size());
 	}
 	
 	@Override

+ 10 - 15
L2J_Server/java/com/l2jserver/gameserver/datatables/SpawnTable.java

@@ -28,8 +28,6 @@ import java.util.Map;
 import java.util.Set;
 import java.util.concurrent.ConcurrentHashMap;
 import java.util.function.Function;
-import java.util.logging.Level;
-import java.util.logging.Logger;
 
 import org.w3c.dom.Document;
 import org.w3c.dom.NamedNodeMap;
@@ -51,7 +49,6 @@ import com.l2jserver.util.data.xml.IXmlReader;
  */
 public final class SpawnTable implements IXmlReader
 {
-	private static final Logger LOGGER = Logger.getLogger(SpawnTable.class.getName());
 	// SQL
 	private static final String SELECT_SPAWNS = "SELECT count, npc_templateid, locx, locy, locz, heading, respawn_delay, respawn_random, loc_id, periodOfDay FROM spawnlist";
 	private static final String SELECT_CUSTOM_SPAWNS = "SELECT count, npc_templateid, locx, locy, locz, heading, respawn_delay, respawn_random, loc_id, periodOfDay FROM custom_spawnlist";
@@ -70,30 +67,30 @@ public final class SpawnTable implements IXmlReader
 		{
 			fillSpawnTable(false);
 			final int spawnCount = _spawnTable.size();
-			LOGGER.info(getClass().getSimpleName() + ": Loaded " + spawnCount + " npc spawns.");
+			LOGGER.info("{}: Loaded " + spawnCount + " npc spawns.", getClass().getSimpleName());
 			if (Config.CUSTOM_SPAWNLIST_TABLE)
 			{
 				fillSpawnTable(true);
-				LOGGER.info(getClass().getSimpleName() + ": Loaded " + (_spawnTable.size() - spawnCount) + " custom npc spawns.");
+				LOGGER.info("{}: Loaded " + (_spawnTable.size() - spawnCount) + " custom npc spawns.", getClass().getSimpleName());
 			}
 			
 			// Load XML list
 			parseDatapackDirectory("data/spawnlist", false);
-			LOGGER.info(getClass().getSimpleName() + ": Loaded " + _xmlSpawnCount + " npc spawns from XML.");
+			LOGGER.info("{}: Loaded " + _xmlSpawnCount + " npc spawns from XML.", getClass().getSimpleName());
 		}
 	}
 	
 	/**
 	 * Verifies if the template exists and it's spawnable.
 	 * @param npcId the NPC ID
-	 * @return {@code true} if the NPC ID belongs to an spawnable tempalte, {@code false} otherwise
+	 * @return {@code true} if the NPC ID belongs to an spawnable template, {@code false} otherwise
 	 */
 	private boolean checkTemplate(int npcId)
 	{
 		L2NpcTemplate npcTemplate = NpcData.getInstance().getTemplate(npcId);
 		if (npcTemplate == null)
 		{
-			LOGGER.warning(getClass().getSimpleName() + ": Data missing in NPC table for ID: " + npcId + ".");
+			LOGGER.warn("{}: Data missing in NPC table for ID: {}.", getClass().getSimpleName(), npcId);
 			return false;
 		}
 		
@@ -194,7 +191,7 @@ public final class SpawnTable implements IXmlReader
 								
 								if ((x == 0) && (y == 0) && (territoryName == null)) // Both coordinates and zone are unspecified
 								{
-									LOGGER.warning("XML Spawnlist: Spawn could not be initialized, both coordinates and zone are unspecified for ID " + templateId);
+									LOGGER.warn("{}: Spawn could not be initialized, both coordinates and zone are unspecified for ID {}", getClass().getSimpleName(), templateId);
 									continue;
 								}
 								
@@ -285,7 +282,7 @@ public final class SpawnTable implements IXmlReader
 		}
 		catch (Exception e)
 		{
-			LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Spawn could not be initialized: " + e.getMessage(), e);
+			LOGGER.warn("{}: Spawn could not be initialized!", getClass().getSimpleName(), e);
 		}
 		return npcSpawnCount;
 	}
@@ -342,10 +339,8 @@ public final class SpawnTable implements IXmlReader
 		}
 		catch (Exception e)
 		{
-			// problem with initializing spawn, go to next one
-			LOGGER.log(Level.WARNING, "Spawn could not be initialized: " + e.getMessage(), e);
+			LOGGER.warn("{}: Spawn could not be initialized!", getClass().getSimpleName(), e);
 		}
-		
 		return ret;
 	}
 	
@@ -426,7 +421,7 @@ public final class SpawnTable implements IXmlReader
 			}
 			catch (Exception e)
 			{
-				LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Could not store spawn in the DB:" + e.getMessage(), e);
+				LOGGER.warn("{}: Could not store spawn in the DB!", getClass().getSimpleName(), e);
 			}
 		}
 	}
@@ -457,7 +452,7 @@ public final class SpawnTable implements IXmlReader
 			}
 			catch (Exception e)
 			{
-				LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Spawn " + spawn + " could not be removed from DB: " + e.getMessage(), e);
+				LOGGER.warn("{}: Spawn {} could not be removed from DB!", getClass().getSimpleName(), spawn, e);
 			}
 		}
 	}

+ 14 - 14
L2J_Server/java/com/l2jserver/gameserver/instancemanager/CastleManorManager.java

@@ -110,13 +110,13 @@ public final class CastleManorManager implements IXmlReader, IStorable
 			// Send debug message
 			if (Config.DEBUG)
 			{
-				LOGGER.info(getClass().getSimpleName() + ": Current mode " + _mode.toString());
+				LOGGER.info("{}: Current mode {}", getClass().getSimpleName(), _mode.toString());
 			}
 		}
 		else
 		{
 			_mode = ManorMode.DISABLED;
-			LOGGER.info(getClass().getSimpleName() + ": Manor system is deactivated.");
+			LOGGER.info("{}: Manor system is deactivated.", getClass().getSimpleName());
 		}
 	}
 	
@@ -124,7 +124,7 @@ public final class CastleManorManager implements IXmlReader, IStorable
 	public final void load()
 	{
 		parseDatapackFile("data/seeds.xml");
-		LOGGER.info(getClass().getSimpleName() + ": Loaded " + _seeds.size() + " seeds.");
+		LOGGER.info("{}: Loaded {} seeds.", getClass().getSimpleName(), _seeds.size());
 	}
 	
 	@Override
@@ -201,7 +201,7 @@ public final class CastleManorManager implements IXmlReader, IStorable
 						}
 						else
 						{
-							LOGGER.warning(getClass().getSimpleName() + ": Unknown seed id: " + seedId + "!");
+							LOGGER.warn("{}: Unknown seed ID: {}!", getClass().getSimpleName(), seedId);
 						}
 					}
 				}
@@ -232,18 +232,18 @@ public final class CastleManorManager implements IXmlReader, IStorable
 						}
 						else
 						{
-							LOGGER.warning(getClass().getSimpleName() + ": Unknown crop id: " + cropId + "!");
+							LOGGER.warn("{}: Unknown crop ID: {}!", getClass().getSimpleName(), cropId);
 						}
 					}
 				}
 				_procure.put(castleId, current);
 				_procureNext.put(castleId, next);
 			}
-			LOGGER.info(getClass().getSimpleName() + ": Manor data loaded.");
+			LOGGER.info("{}: Manor data loaded.", getClass().getSimpleName());
 		}
 		catch (Exception e)
 		{
-			LOGGER.warning(getClass().getSimpleName() + ": Unable to load manor data! " + e.getMessage());
+			LOGGER.warn("{}: Unable to load manor data!", getClass().getSimpleName(), e);
 		}
 	}
 	
@@ -429,7 +429,7 @@ public final class CastleManorManager implements IXmlReader, IStorable
 		scheduleModeChange();
 		if (Config.DEBUG)
 		{
-			LOGGER.info(getClass().getName() + ": Manor mode changed to " + _mode.toString() + "!");
+			LOGGER.info("{}: Manor mode changed to {}!", getClass().getSimpleName(), _mode);
 		}
 	}
 	
@@ -464,7 +464,7 @@ public final class CastleManorManager implements IXmlReader, IStorable
 			}
 			catch (Exception e)
 			{
-				LOGGER.severe(getClass().getSimpleName() + ": Unable to store manor data! " + e.getMessage());
+				LOGGER.error("{}: Unable to store manor data!", getClass().getSimpleName(), e);
 			}
 		}
 	}
@@ -501,7 +501,7 @@ public final class CastleManorManager implements IXmlReader, IStorable
 			}
 			catch (Exception e)
 			{
-				LOGGER.severe(getClass().getSimpleName() + ": Unable to store manor data! " + e.getMessage());
+				LOGGER.error("{}: Unable to store manor data!", getClass().getSimpleName(), e);
 			}
 		}
 	}
@@ -522,7 +522,7 @@ public final class CastleManorManager implements IXmlReader, IStorable
 		}
 		catch (Exception e)
 		{
-			LOGGER.info(getClass().getSimpleName() + ": Unable to store manor data! " + e.getMessage());
+			LOGGER.info("{}: Unable to store manor data!", getClass().getSimpleName(), e);
 		}
 	}
 	
@@ -542,7 +542,7 @@ public final class CastleManorManager implements IXmlReader, IStorable
 		}
 		catch (Exception e)
 		{
-			LOGGER.info(getClass().getSimpleName() + ": Unable to store manor data! " + e.getMessage());
+			LOGGER.info("{}: Unable to store manor data!", getClass().getSimpleName(), e);
 		}
 	}
 	
@@ -685,7 +685,7 @@ public final class CastleManorManager implements IXmlReader, IStorable
 		}
 		catch (Exception e)
 		{
-			LOGGER.severe(getClass().getSimpleName() + ": Unable to store manor data! " + e.getMessage());
+			LOGGER.error("{}: Unable to store manor data!", getClass().getSimpleName(), e);
 			return false;
 		}
 	}
@@ -713,7 +713,7 @@ public final class CastleManorManager implements IXmlReader, IStorable
 			}
 			catch (Exception e)
 			{
-				LOGGER.severe(getClass().getSimpleName() + ": Unable to store manor data! " + e.getMessage());
+				LOGGER.error("{}: Unable to store manor data!", getClass().getSimpleName(), e);
 			}
 		}
 	}

+ 8 - 7
L2J_Server/java/com/l2jserver/gameserver/instancemanager/InstanceManager.java

@@ -36,6 +36,7 @@ import com.l2jserver.gameserver.model.instancezone.InstanceWorld;
 import com.l2jserver.util.data.xml.IXmlReader;
 
 /**
+ * Instance Manager.
  * @author evill33t, GodKratos
  */
 public final class InstanceManager implements IXmlReader
@@ -55,10 +56,10 @@ public final class InstanceManager implements IXmlReader
 	{
 		// Creates the multiverse.
 		INSTANCES.put(-1, new Instance(-1, "multiverse"));
-		LOGGER.info(getClass().getSimpleName() + ": Multiverse Instance created.");
+		LOGGER.info("{}: Multiverse Instance created.", getClass().getSimpleName());
 		// Creates the universe.
 		INSTANCES.put(0, new Instance(0, "universe"));
-		LOGGER.info(getClass().getSimpleName() + ": Universe Instance created.");
+		LOGGER.info("{}: Universe Instance created.", getClass().getSimpleName());
 		load();
 	}
 	
@@ -67,7 +68,7 @@ public final class InstanceManager implements IXmlReader
 	{
 		_instanceIdNames.clear();
 		parseDatapackFile("data/instancenames.xml");
-		LOGGER.info(getClass().getSimpleName() + ": Loaded " + _instanceIdNames.size() + " instance names.");
+		LOGGER.info("{}: Loaded {} instance names.", getClass().getSimpleName(), _instanceIdNames.size());
 	}
 	
 	/**
@@ -125,7 +126,7 @@ public final class InstanceManager implements IXmlReader
 		}
 		catch (Exception e)
 		{
-			LOGGER.warning(getClass().getSimpleName() + ": Could not insert character instance time data: " + e.getMessage());
+			LOGGER.warn("{}: Could not insert character instance time data!", getClass().getSimpleName(), e);
 		}
 	}
 	
@@ -145,7 +146,7 @@ public final class InstanceManager implements IXmlReader
 		}
 		catch (Exception e)
 		{
-			LOGGER.warning(getClass().getSimpleName() + ": Could not delete character instance time data: " + e.getMessage());
+			LOGGER.warn("{}: Could not delete character instance time data!", getClass().getSimpleName(), e);
 		}
 	}
 	
@@ -182,7 +183,7 @@ public final class InstanceManager implements IXmlReader
 		}
 		catch (Exception e)
 		{
-			LOGGER.warning(getClass().getSimpleName() + ": Could not delete character instance time data: " + e.getMessage());
+			LOGGER.warn("{}: Could not delete character instance time data!", getClass().getSimpleName(), e);
 		}
 	}
 	
@@ -359,7 +360,7 @@ public final class InstanceManager implements IXmlReader
 			_dynamic++;
 			if (_dynamic == Integer.MAX_VALUE)
 			{
-				LOGGER.warning(getClass().getSimpleName() + ": More then " + (Integer.MAX_VALUE - 300000) + " instances created");
+				LOGGER.warn("{}: More then {} instances has been created!", getClass().getSimpleName(), (Integer.MAX_VALUE - 300000));
 				_dynamic = 300000;
 			}
 		}

+ 2 - 1
L2J_Server/java/com/l2jserver/gameserver/instancemanager/MapRegionManager.java

@@ -45,6 +45,7 @@ import com.l2jserver.gameserver.model.zone.type.L2RespawnZone;
 import com.l2jserver.util.data.xml.IXmlReader;
 
 /**
+ * Map Region Manager.
  * @author Nyaran
  */
 public final class MapRegionManager implements IXmlReader
@@ -62,7 +63,7 @@ public final class MapRegionManager implements IXmlReader
 	{
 		_regions.clear();
 		parseDatapackDirectory("data/mapregion", false);
-		LOGGER.info(getClass().getSimpleName() + ": Loaded " + _regions.size() + " map regions.");
+		LOGGER.info("{}: Loaded {} map regions.", getClass().getSimpleName(), _regions.size());
 	}
 	
 	@Override

+ 5 - 5
L2J_Server/java/com/l2jserver/gameserver/instancemanager/WalkingManager.java

@@ -75,7 +75,7 @@ public final class WalkingManager implements IXmlReader
 	public final void load()
 	{
 		parseDatapackFile("data/Routes.xml");
-		LOGGER.info(getClass().getSimpleName() + ": Loaded " + _routes.size() + " walking routes.");
+		LOGGER.info("{}: Loaded {} walking routes.", getClass().getSimpleName(), _routes.size());
 	}
 	
 	@Override
@@ -138,7 +138,7 @@ public final class WalkingManager implements IXmlReader
 								npcString = NpcStringId.getNpcStringId(node.getNodeValue());
 								if (npcString == null)
 								{
-									LOGGER.warning(getClass().getSimpleName() + ": Unknown npcString '" + node.getNodeValue() + "' for route '" + routeName + "'");
+									LOGGER.warn("{}: Unknown NPC String {} for route {}!", getClass().getSimpleName(), node.getNodeValue(), routeName);
 									continue;
 								}
 							}
@@ -150,7 +150,7 @@ public final class WalkingManager implements IXmlReader
 									npcString = NpcStringId.getNpcStringId(Integer.parseInt(node.getNodeValue()));
 									if (npcString == null)
 									{
-										LOGGER.warning(getClass().getSimpleName() + ": Unknown npcString '" + node.getNodeValue() + "' for route '" + routeName + "'");
+										LOGGER.warn("{}: Unknown npcString {} for route {}!", getClass().getSimpleName(), node.getNodeValue(), routeName);
 										continue;
 									}
 								}
@@ -175,7 +175,7 @@ public final class WalkingManager implements IXmlReader
 						}
 						catch (Exception e)
 						{
-							LOGGER.warning(getClass().getSimpleName() + ": Error in target definition for route '" + routeName + "'");
+							LOGGER.warn("{}: Error in target definition for route {}!", getClass().getSimpleName(), routeName);
 						}
 					}
 				}
@@ -274,7 +274,7 @@ public final class WalkingManager implements IXmlReader
 					if (!npc.isInsideRadius(node, 3000, true, false))
 					{
 						final String message = "Route '" + routeName + "': NPC (id=" + npc.getId() + ", x=" + npc.getX() + ", y=" + npc.getY() + ", z=" + npc.getZ() + ") is too far from starting point (node x=" + node.getX() + ", y=" + node.getY() + ", z=" + node.getZ() + ", range=" + npc.calculateDistance(node, true, true) + "), walking will not start";
-						LOGGER.warning(getClass().getSimpleName() + ": " + message);
+						LOGGER.warn("{}: {}", getClass().getSimpleName(), message);
 						npc.sendDebugMessage(message);
 						return;
 					}

+ 18 - 22
L2J_Server/java/com/l2jserver/gameserver/instancemanager/ZoneManager.java

@@ -26,7 +26,6 @@ import java.util.HashMap;
 import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
-import java.util.logging.Level;
 
 import org.w3c.dom.Document;
 import org.w3c.dom.NamedNodeMap;
@@ -102,7 +101,7 @@ public final class ZoneManager implements IXmlReader
 			}
 		}
 		GrandBossManager.getInstance().getZones().clear();
-		LOGGER.info(getClass().getSimpleName() + ": Removed zones in " + count + " regions.");
+		LOGGER.info("{}: Removed zones in " + count + " regions.", getClass().getSimpleName());
 		
 		// Load the zones
 		load();
@@ -155,7 +154,7 @@ public final class ZoneManager implements IXmlReader
 						}
 						else
 						{
-							LOGGER.warning("ZoneData: Missing type for zone in file: " + f.getName());
+							LOGGER.warn("ZoneData: Missing type for zone in file {}", f.getName());
 							continue;
 						}
 						
@@ -184,12 +183,12 @@ public final class ZoneManager implements IXmlReader
 						{
 							if (zoneName == null)
 							{
-								LOGGER.warning("ZoneData: Missing name for NpcSpawnTerritory in file: " + f.getName() + ", skipping zone");
+								LOGGER.warn("ZoneData: Missing name for NpcSpawnTerritory in file: {}, skipping zone!", f.getName());
 								continue;
 							}
 							else if (_spawnTerritories.containsKey(zoneName))
 							{
-								LOGGER.warning("ZoneData: Name " + zoneName + " already used for another zone, check file: " + f.getName() + ". Skipping zone");
+								LOGGER.warn("ZoneData: Name {} already used for another zone, check file {}, skipping zone!", zoneName, f.getName());
 								continue;
 							}
 						}
@@ -221,15 +220,12 @@ public final class ZoneManager implements IXmlReader
 							
 							if ((coords == null) || (coords.length == 0))
 							{
-								LOGGER.warning(getClass().getSimpleName() + ": ZoneData: missing data for zone: " + zoneId + " XML file: " + f.getName());
+								LOGGER.warn("{}: ZoneData: missing data for zone: {} XML file {}!", getClass().getSimpleName(), zoneId, f.getName());
 								continue;
 							}
 							
-							// Create this zone. Parsing for cuboids is a
-							// bit different than for other polygons
-							// cuboids need exactly 2 points to be defined.
-							// Other polygons need at least 3 (one per
-							// vertex)
+							// Create this zone. Parsing for cuboids is a bit different than for other polygons cuboids need exactly 2 points to be defined.
+							// Other polygons need at least 3 (one per vertex)
 							if (zoneShape.equalsIgnoreCase("Cuboid"))
 							{
 								if (coords.length == 2)
@@ -238,7 +234,7 @@ public final class ZoneManager implements IXmlReader
 								}
 								else
 								{
-									LOGGER.warning(getClass().getSimpleName() + ": ZoneData: Missing cuboid vertex in sql data for zone: " + zoneId + " in file: " + f.getName());
+									LOGGER.warn("{}: ZoneData: Missing cuboid vertex in sql data for zone: {} in file {}!", getClass().getSimpleName(), zoneId, f.getName());
 									continue;
 								}
 							}
@@ -258,7 +254,7 @@ public final class ZoneManager implements IXmlReader
 								}
 								else
 								{
-									LOGGER.warning(getClass().getSimpleName() + ": ZoneData: Bad data for zone: " + zoneId + " in file: " + f.getName());
+									LOGGER.warn("{}: ZoneData: Bad data for zone: {} in file {}!", getClass().getSimpleName(), zoneId, f.getName());
 									continue;
 								}
 							}
@@ -274,19 +270,19 @@ public final class ZoneManager implements IXmlReader
 								}
 								else
 								{
-									LOGGER.warning(getClass().getSimpleName() + ": ZoneData: Bad data for zone: " + zoneId + " in file: " + f.getName());
+									LOGGER.warn("{}: ZoneData: Bad data for zone: {} in file {}!", getClass().getSimpleName(), zoneId, f.getName());
 									continue;
 								}
 							}
 							else
 							{
-								LOGGER.warning(getClass().getSimpleName() + ": ZoneData: Unknown shape: \"" + zoneShape + "\"  for zone: " + zoneId + " in file: " + f.getName());
+								LOGGER.warn("{}: ZoneData: Unknown shape: {}  for zone {} in file {}", getClass().getSimpleName(), zoneShape, zoneId, f.getName());
 								continue;
 							}
 						}
 						catch (Exception e)
 						{
-							LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": ZoneData: Failed to load zone " + zoneId + " coordinates: " + e.getMessage(), e);
+							LOGGER.warn("{}: ZoneData: Failed to load zone {} coordinates!", getClass().getSimpleName(), zoneId, e);
 						}
 						
 						// No further parameters needed, if NpcSpawnTerritory is loading
@@ -309,7 +305,7 @@ public final class ZoneManager implements IXmlReader
 						}
 						catch (Exception e)
 						{
-							LOGGER.warning(getClass().getSimpleName() + ": ZoneData: No such zone type: " + zoneType + " in file: " + f.getName());
+							LOGGER.warn("{}: ZoneData: No such zone type: {} in file {}!", getClass().getSimpleName(), zoneType, f.getName());
 							continue;
 						}
 						
@@ -342,9 +338,10 @@ public final class ZoneManager implements IXmlReader
 								((L2RespawnZone) temp).addRaceRespawnPoint(race, point);
 							}
 						}
+						
 						if (checkId(zoneId))
 						{
-							LOGGER.config(getClass().getSimpleName() + ": Caution: Zone (" + zoneId + ") from file: " + f.getName() + " overrides previos definition.");
+							LOGGER.debug("{}: Caution: Zone ({}) from file {} overrides previous definition.", getClass().getSimpleName(), zoneId, f.getName());
 						}
 						
 						if ((zoneName != null) && !zoneName.isEmpty())
@@ -354,8 +351,7 @@ public final class ZoneManager implements IXmlReader
 						
 						addZone(zoneId, temp);
 						
-						// Register the zone into any world region it
-						// intersects with...
+						// Register the zone into any world region it intersects with...
 						// currently 11136 test for each zone :>
 						int ax, ay, bx, by;
 						for (int x = 0; x < worldRegions.length; x++)
@@ -386,8 +382,8 @@ public final class ZoneManager implements IXmlReader
 		_spawnTerritories.clear();
 		parseDatapackDirectory("data/zones", false);
 		parseDatapackDirectory("data/zones/npcSpawnTerritories", false);
-		LOGGER.info(getClass().getSimpleName() + ": Loaded " + _classZones.size() + " zone classes and " + getSize() + " zones.");
-		LOGGER.info(getClass().getSimpleName() + ": Loaded " + _spawnTerritories.size() + " NPC spawn territoriers.");
+		LOGGER.info("{}: Loaded {} zone classes and {} zones.", getClass().getSimpleName(), _classZones.size(), getSize());
+		LOGGER.info("{}: Loaded {} NPC spawn territoriers.", getClass().getSimpleName(), _spawnTerritories.size());
 	}
 	
 	/**

+ 6 - 6
L2J_Server/java/com/l2jserver/loginserver/GameServerTable.java

@@ -63,10 +63,10 @@ public final class GameServerTable implements IXmlReader
 		load();
 		
 		loadRegisteredGameServers();
-		LOGGER.info(GameServerTable.class.getSimpleName() + ": Loaded " + GAME_SERVER_TABLE.size() + " registered Game Servers");
+		LOGGER.info("{}: Loaded {} registered Game Servers.", getClass().getSimpleName(), GAME_SERVER_TABLE.size());
 		
 		initRSAKeys();
-		LOGGER.info(GameServerTable.class.getSimpleName() + ": Cached " + _keyPairs.length + " RSA keys for Game Server communication.");
+		LOGGER.info("{}: Cached {} RSA keys for Game Server communication.", getClass().getSimpleName(), _keyPairs.length);
 	}
 	
 	@Override
@@ -74,7 +74,7 @@ public final class GameServerTable implements IXmlReader
 	{
 		SERVER_NAMES.clear();
 		parseDatapackFile("data/servername.xml");
-		LOGGER.info(GameServerTable.class.getSimpleName() + ": Loaded " + SERVER_NAMES.size() + " server names");
+		LOGGER.info("{}: Loaded {} server names.", getClass().getSimpleName(), SERVER_NAMES.size());
 	}
 	
 	@Override
@@ -104,7 +104,7 @@ public final class GameServerTable implements IXmlReader
 		}
 		catch (Exception e)
 		{
-			LOGGER.severe(GameServerTable.class.getSimpleName() + ": Error loading RSA keys for Game Server communication!");
+			LOGGER.error("{}: Error loading RSA keys for Game Server communication!", getClass().getSimpleName(), e);
 		}
 	}
 	
@@ -126,7 +126,7 @@ public final class GameServerTable implements IXmlReader
 		}
 		catch (Exception e)
 		{
-			LOGGER.severe(GameServerTable.class.getSimpleName() + ": Error loading registered game servers!");
+			LOGGER.error("{}: Error loading registered game servers!", getClass().getSimpleName(), e);
 		}
 	}
 	
@@ -230,7 +230,7 @@ public final class GameServerTable implements IXmlReader
 		}
 		catch (Exception e)
 		{
-			LOGGER.severe(GameServerTable.class.getSimpleName() + ": Error while saving gameserver!");
+			LOGGER.error("{}: Error while saving gameserver!", getClass().getSimpleName(), e);
 		}
 	}
 	

+ 9 - 8
L2J_Server/java/com/l2jserver/util/data/xml/IXmlReader.java

@@ -20,11 +20,12 @@ package com.l2jserver.util.data.xml;
 
 import java.io.File;
 import java.io.FileFilter;
-import java.util.logging.Logger;
 
 import javax.xml.parsers.DocumentBuilder;
 import javax.xml.parsers.DocumentBuilderFactory;
 
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 import org.w3c.dom.Document;
 import org.w3c.dom.NamedNodeMap;
 import org.w3c.dom.Node;
@@ -40,7 +41,7 @@ import com.l2jserver.util.file.filter.XMLFilter;
  */
 public interface IXmlReader
 {
-	static final Logger LOGGER = Logger.getLogger(IXmlReader.class.getName());
+	static final Logger LOGGER = LoggerFactory.getLogger(IXmlReader.class.getName());
 	
 	static final String JAXP_SCHEMA_LANGUAGE = "http://java.sun.com/xml/jaxp/properties/schemaLanguage";
 	static final String W3C_XML_SCHEMA = "http://www.w3.org/2001/XMLSchema";
@@ -72,7 +73,7 @@ public interface IXmlReader
 	{
 		if (!getCurrentFileFilter().accept(f))
 		{
-			LOGGER.warning(getClass().getSimpleName() + ": Could not parse " + f.getName() + " is not a file or it doesn't exist!");
+			LOGGER.warn("{}: Could not parse {} is not a file or it doesn't exist!", getClass().getSimpleName(), f.getName());
 			return;
 		}
 		
@@ -89,12 +90,12 @@ public interface IXmlReader
 		}
 		catch (SAXParseException e)
 		{
-			LOGGER.warning(getClass().getSimpleName() + ": Could not parse file " + f.getName() + " at line " + e.getLineNumber() + ", column " + e.getColumnNumber() + ": " + e.getMessage());
+			LOGGER.warn("{}: Could not parse file {} at line {}, column {}", getClass().getSimpleName(), f.getName(), e.getLineNumber(), e.getColumnNumber(), e);
 			return;
 		}
 		catch (Exception e)
 		{
-			LOGGER.warning(getClass().getSimpleName() + ": Could not parse file " + f.getName() + ": " + e.getMessage());
+			LOGGER.warn("{}: Could not parse file {}", getClass().getSimpleName(), f.getName(), e);
 			return;
 		}
 	}
@@ -140,7 +141,7 @@ public interface IXmlReader
 	{
 		if (!dir.exists())
 		{
-			LOGGER.warning(getClass().getSimpleName() + ": Folder " + dir.getAbsolutePath() + " doesn't exist!");
+			LOGGER.warn("{}: Folder {} doesn't exist!", getClass().getSimpleName(), dir.getAbsolutePath());
 			return false;
 		}
 		
@@ -191,7 +192,7 @@ public interface IXmlReader
 	 */
 	default void parseDocument(Document doc)
 	{
-		LOGGER.severe("Parser not implemented!");
+		LOGGER.error("{}: Parser not implemented!", getClass().getSimpleName());
 	}
 	
 	/**
@@ -588,7 +589,7 @@ public interface IXmlReader
 		}
 		catch (IllegalArgumentException e)
 		{
-			LOGGER.warning("Invalid value specified for node: " + node.getNodeName() + " specified value: " + node.getNodeValue() + " should be enum value of \"" + clazz.getSimpleName() + "\" using default value: " + defaultValue);
+			LOGGER.warn("Invalid value specified for node: {} specified value: {} should be enum value of \"{}\" using default value: {}", node.getNodeName(), node.getNodeValue(), clazz.getSimpleName(), defaultValue);
 			return defaultValue;
 		}
 	}