From eb9e83f469a519712fb7402631108d2afb832b2f Mon Sep 17 00:00:00 2001
From: Zoey76 <zoey_76@msn.com>
Date: Sun, 10 Mar 2019 16:29:15 -0300
Subject: [PATCH] Improving logs and fixing XML loading

---
 .settings/org.eclipse.core.resources.prefs    |   1 +
 .../fantasy_isle/HandysBlockCheckerEvent.java |  10 +-
 .../ai/npc/NpcBuffers/NpcBuffersData.java     |   8 +-
 .../RainbowSpringsChateau.java                |  12 +-
 .../handlers/EffectMasterHandler.java         |  10 +-
 .../admincommandhandlers/AdminCHSiege.java    |   4 +-
 .../admincommandhandlers/AdminSiege.java      |   4 +-
 .../instant/HeadquarterCreate.java            |   4 +-
 .../datapack/hellbound/HellboundEngine.java   |  24 +-
 .../hellbound/HellboundPointData.java         |  17 +-
 .../datapack/hellbound/HellboundSpawns.java   |  18 +-
 .../datapack/instances/InstanceLoader.java    |  29 +-
 .../Q00350_EnhanceYourWeapon.java             | 368 ++++++----------
 ...504_CompetitionForTheBanditStronghold.java |   4 +-
 .../Q00655_AGrandPlanForTamingWildBeasts.java |   6 +-
 .../data/ai/npc/buffer}/NpcBuffersData.xml    |   0
 .../data/ai/npc/buffer}/NpcBuffersData.xsd    |   0
 .../data}/hellbound/hellboundSpawns.xml       |   2 +-
 .../{xsd => hellbound}/hellboundSpawns.xsd    |   0
 .../data}/hellbound/hellboundTrustPoints.xml  |   2 +-
 .../hellboundTrustPoints.xsd                  |   0
 src/main/resources/data/scripts.cfg           | 412 +++++++++---------
 22 files changed, 419 insertions(+), 516 deletions(-)
 rename src/main/{java/com/l2jserver/datapack/ai/npc/NpcBuffers => resources/data/ai/npc/buffer}/NpcBuffersData.xml (100%)
 rename src/main/{java/com/l2jserver/datapack/ai/npc/NpcBuffers => resources/data/ai/npc/buffer}/NpcBuffersData.xsd (100%)
 rename src/main/{java/com/l2jserver/datapack => resources/data}/hellbound/hellboundSpawns.xml (96%)
 rename src/main/resources/data/{xsd => hellbound}/hellboundSpawns.xsd (100%)
 rename src/main/{java/com/l2jserver/datapack => resources/data}/hellbound/hellboundTrustPoints.xml (97%)
 rename src/main/resources/data/{xsd => hellbound}/hellboundTrustPoints.xsd (100%)

diff --git a/.settings/org.eclipse.core.resources.prefs b/.settings/org.eclipse.core.resources.prefs
index cf6931b950..703fe8fcb5 100644
--- a/.settings/org.eclipse.core.resources.prefs
+++ b/.settings/org.eclipse.core.resources.prefs
@@ -1,4 +1,5 @@
 eclipse.preferences.version=1
 encoding//src/main/java=UTF-8
 encoding//src/main/resources=UTF-8
+encoding//src/main/resources/data=UTF-8
 encoding/<project>=UTF-8
diff --git a/src/main/java/com/l2jserver/datapack/ai/fantasy_isle/HandysBlockCheckerEvent.java b/src/main/java/com/l2jserver/datapack/ai/fantasy_isle/HandysBlockCheckerEvent.java
index 6068631095..49e7b7e1ce 100644
--- a/src/main/java/com/l2jserver/datapack/ai/fantasy_isle/HandysBlockCheckerEvent.java
+++ b/src/main/java/com/l2jserver/datapack/ai/fantasy_isle/HandysBlockCheckerEvent.java
@@ -18,6 +18,9 @@
  */
 package com.l2jserver.datapack.ai.fantasy_isle;
 
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
 import com.l2jserver.gameserver.config.Config;
 import com.l2jserver.gameserver.instancemanager.HandysBlockCheckerManager;
 import com.l2jserver.gameserver.model.ArenaParticipantsHolder;
@@ -35,6 +38,9 @@ import com.l2jserver.gameserver.network.serverpackets.ExCubeGameTeamList;
  */
 public class HandysBlockCheckerEvent extends Quest
 {
+	
+	private static final Logger LOG = LoggerFactory.getLogger(HandysBlockCheckerEvent.class);
+	
 	// Arena Managers
 	private static final int A_MANAGER_1 = 32521;
 	private static final int A_MANAGER_2 = 32522;
@@ -101,11 +107,11 @@ public class HandysBlockCheckerEvent extends Quest
 		if (Config.ENABLE_BLOCK_CHECKER_EVENT)
 		{
 			new HandysBlockCheckerEvent();
-			_log.info("Handy's Block Checker Event is enabled");
+			LOG.info("Handy's Block Checker event is enabled.");
 		}
 		else
 		{
-			_log.info("Handy's Block Checker Event is disabled");
+			LOG.info("Handy's Block Checker event is disabled.");
 		}
 	}
 }
\ No newline at end of file
diff --git a/src/main/java/com/l2jserver/datapack/ai/npc/NpcBuffers/NpcBuffersData.java b/src/main/java/com/l2jserver/datapack/ai/npc/NpcBuffers/NpcBuffersData.java
index a183dc52bd..b708b7fc36 100644
--- a/src/main/java/com/l2jserver/datapack/ai/npc/NpcBuffers/NpcBuffersData.java
+++ b/src/main/java/com/l2jserver/datapack/ai/npc/NpcBuffers/NpcBuffersData.java
@@ -23,6 +23,8 @@ import java.util.HashMap;
 import java.util.Map;
 import java.util.Set;
 
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 import org.w3c.dom.Document;
 import org.w3c.dom.NamedNodeMap;
 import org.w3c.dom.Node;
@@ -36,6 +38,8 @@ import com.l2jserver.gameserver.util.IXmlReader;
  */
 public class NpcBuffersData implements IXmlReader
 {
+	private static final Logger LOG = LoggerFactory.getLogger(NpcBuffersData.class);
+	
 	private final Map<Integer, NpcBufferData> _npcBuffers = new HashMap<>();
 	
 	protected NpcBuffersData()
@@ -46,8 +50,8 @@ public class NpcBuffersData implements IXmlReader
 	@Override
 	public void load()
 	{
-		parseDatapackFile("data/scripts/ai/npc/NpcBuffers/NpcBuffersData.xml");
-		LOG.info("{}: Loaded: {} buffers data.", getClass().getSimpleName(), _npcBuffers.size());
+		parseDatapackFile("data/ai/npc/buffer/NpcBuffersData.xml");
+		LOG.info("Loaded {} buffers data.", _npcBuffers.size());
 	}
 	
 	@Override
diff --git a/src/main/java/com/l2jserver/datapack/conquerablehalls/RainbowSpringsChateau/RainbowSpringsChateau.java b/src/main/java/com/l2jserver/datapack/conquerablehalls/RainbowSpringsChateau/RainbowSpringsChateau.java
index 47ab0126de..cf4685d236 100644
--- a/src/main/java/com/l2jserver/datapack/conquerablehalls/RainbowSpringsChateau/RainbowSpringsChateau.java
+++ b/src/main/java/com/l2jserver/datapack/conquerablehalls/RainbowSpringsChateau/RainbowSpringsChateau.java
@@ -37,7 +37,7 @@ import com.l2jserver.gameserver.cache.HtmCache;
 import com.l2jserver.gameserver.config.Config;
 import com.l2jserver.gameserver.data.sql.impl.ClanTable;
 import com.l2jserver.gameserver.datatables.SpawnTable;
-import com.l2jserver.gameserver.instancemanager.CHSiegeManager;
+import com.l2jserver.gameserver.instancemanager.ClanHallSiegeManager;
 import com.l2jserver.gameserver.instancemanager.ZoneManager;
 import com.l2jserver.gameserver.model.L2Clan;
 import com.l2jserver.gameserver.model.L2Object;
@@ -72,7 +72,7 @@ public final class RainbowSpringsChateau extends ClanHallSiegeEngine
 		{
 			if (_rainbow == null)
 			{
-				_rainbow = CHSiegeManager.getInstance().getSiegableHall(RAINBOW_SPRINGS);
+				_rainbow = ClanHallSiegeManager.getInstance().getSiegableHall(RAINBOW_SPRINGS);
 			}
 			
 			int spotLeft = 4;
@@ -137,7 +137,7 @@ public final class RainbowSpringsChateau extends ClanHallSiegeEngine
 		{
 			if (_rainbow == null)
 			{
-				_rainbow = CHSiegeManager.getInstance().getSiegableHall(RAINBOW_SPRINGS);
+				_rainbow = ClanHallSiegeManager.getInstance().getSiegableHall(RAINBOW_SPRINGS);
 			}
 			
 			// XXX _rainbow.siegeStarts();
@@ -169,7 +169,7 @@ public final class RainbowSpringsChateau extends ClanHallSiegeEngine
 		{
 			if (_rainbow == null)
 			{
-				_rainbow = CHSiegeManager.getInstance().getSiegableHall(RAINBOW_SPRINGS);
+				_rainbow = ClanHallSiegeManager.getInstance().getSiegableHall(RAINBOW_SPRINGS);
 			}
 			
 			unSpawnGourds();
@@ -283,7 +283,7 @@ public final class RainbowSpringsChateau extends ClanHallSiegeEngine
 		
 		loadAttackers();
 		
-		_rainbow = CHSiegeManager.getInstance().getSiegableHall(RAINBOW_SPRINGS);
+		_rainbow = ClanHallSiegeManager.getInstance().getSiegableHall(RAINBOW_SPRINGS);
 		if (_rainbow != null)
 		{
 			long delay = _rainbow.getNextSiegeTime();
@@ -910,7 +910,7 @@ public final class RainbowSpringsChateau extends ClanHallSiegeEngine
 	{
 		if (_rainbow == null)
 		{
-			_rainbow = CHSiegeManager.getInstance().getSiegableHall(RAINBOW_SPRINGS);
+			_rainbow = ClanHallSiegeManager.getInstance().getSiegableHall(RAINBOW_SPRINGS);
 		}
 		
 		_rainbow.setNextSiegeDate(date);
diff --git a/src/main/java/com/l2jserver/datapack/handlers/EffectMasterHandler.java b/src/main/java/com/l2jserver/datapack/handlers/EffectMasterHandler.java
index fa6ff20a66..89a305db3c 100644
--- a/src/main/java/com/l2jserver/datapack/handlers/EffectMasterHandler.java
+++ b/src/main/java/com/l2jserver/datapack/handlers/EffectMasterHandler.java
@@ -18,7 +18,8 @@
  */
 package com.l2jserver.datapack.handlers;
 
-import java.util.logging.Logger;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 import com.l2jserver.datapack.handlers.effecthandlers.consume.ConsumeChameleonRest;
 import com.l2jserver.datapack.handlers.effecthandlers.consume.ConsumeFakeDeath;
@@ -185,11 +186,12 @@ import com.l2jserver.gameserver.model.effects.AbstractEffect;
 
 /**
  * Effect Master handler.
- * @author BiggBoss, Zoey76
+ * @author BiggBoss
+ * @author Zoey76
  */
 public final class EffectMasterHandler
 {
-	private static final Logger _log = Logger.getLogger(EffectMasterHandler.class.getName());
+	private static final Logger LOG = LoggerFactory.getLogger(EffectMasterHandler.class);
 	
 	private static final Class<?>[] EFFECTS =
 	{
@@ -362,6 +364,6 @@ public final class EffectMasterHandler
 		{
 			EffectHandler.getInstance().registerHandler((Class<? extends AbstractEffect>) c);
 		}
-		_log.info(EffectMasterHandler.class.getSimpleName() + ": Loaded " + EffectHandler.getInstance().size() + " effect handlers.");
+		LOG.info("Loaded {} effect handlers.", EffectHandler.getInstance().size());
 	}
 }
diff --git a/src/main/java/com/l2jserver/datapack/handlers/admincommandhandlers/AdminCHSiege.java b/src/main/java/com/l2jserver/datapack/handlers/admincommandhandlers/AdminCHSiege.java
index 0324abe78d..bc94969f1b 100644
--- a/src/main/java/com/l2jserver/datapack/handlers/admincommandhandlers/AdminCHSiege.java
+++ b/src/main/java/com/l2jserver/datapack/handlers/admincommandhandlers/AdminCHSiege.java
@@ -23,7 +23,7 @@ import java.util.Calendar;
 import com.l2jserver.gameserver.config.Config;
 import com.l2jserver.gameserver.data.sql.impl.ClanTable;
 import com.l2jserver.gameserver.handler.IAdminCommandHandler;
-import com.l2jserver.gameserver.instancemanager.CHSiegeManager;
+import com.l2jserver.gameserver.instancemanager.ClanHallSiegeManager;
 import com.l2jserver.gameserver.model.L2Clan;
 import com.l2jserver.gameserver.model.L2Object;
 import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
@@ -330,7 +330,7 @@ public final class AdminCHSiege implements IAdminCommandHandler
 			return null;
 		}
 		
-		SiegableHall hall = CHSiegeManager.getInstance().getSiegableHall(ch);
+		SiegableHall hall = ClanHallSiegeManager.getInstance().getSiegableHall(ch);
 		
 		if (hall == null)
 		{
diff --git a/src/main/java/com/l2jserver/datapack/handlers/admincommandhandlers/AdminSiege.java b/src/main/java/com/l2jserver/datapack/handlers/admincommandhandlers/AdminSiege.java
index c45c7d3544..0510282924 100644
--- a/src/main/java/com/l2jserver/datapack/handlers/admincommandhandlers/AdminSiege.java
+++ b/src/main/java/com/l2jserver/datapack/handlers/admincommandhandlers/AdminSiege.java
@@ -25,7 +25,7 @@ import com.l2jserver.gameserver.SevenSigns;
 import com.l2jserver.gameserver.data.sql.impl.ClanTable;
 import com.l2jserver.gameserver.handler.IAdminCommandHandler;
 import com.l2jserver.gameserver.instancemanager.AuctionManager;
-import com.l2jserver.gameserver.instancemanager.CHSiegeManager;
+import com.l2jserver.gameserver.instancemanager.ClanHallSiegeManager;
 import com.l2jserver.gameserver.instancemanager.CastleManager;
 import com.l2jserver.gameserver.instancemanager.ClanHallManager;
 import com.l2jserver.gameserver.model.L2Clan;
@@ -364,7 +364,7 @@ public class AdminSiege implements IAdminCommandHandler
 		adminReply.replace("%castles%", cList.toString());
 		cList.setLength(0);
 		i = 0;
-		for (SiegableHall hall : CHSiegeManager.getInstance().getConquerableHalls().values())
+		for (SiegableHall hall : ClanHallSiegeManager.getInstance().getConquerableHalls().values())
 		{
 			if (hall != null)
 			{
diff --git a/src/main/java/com/l2jserver/datapack/handlers/effecthandlers/instant/HeadquarterCreate.java b/src/main/java/com/l2jserver/datapack/handlers/effecthandlers/instant/HeadquarterCreate.java
index 7d58e005de..f98da61068 100644
--- a/src/main/java/com/l2jserver/datapack/handlers/effecthandlers/instant/HeadquarterCreate.java
+++ b/src/main/java/com/l2jserver/datapack/handlers/effecthandlers/instant/HeadquarterCreate.java
@@ -19,7 +19,7 @@
 package com.l2jserver.datapack.handlers.effecthandlers.instant;
 
 import com.l2jserver.gameserver.data.xml.impl.NpcData;
-import com.l2jserver.gameserver.instancemanager.CHSiegeManager;
+import com.l2jserver.gameserver.instancemanager.ClanHallSiegeManager;
 import com.l2jserver.gameserver.instancemanager.CastleManager;
 import com.l2jserver.gameserver.instancemanager.FortManager;
 import com.l2jserver.gameserver.model.StatsSet;
@@ -70,7 +70,7 @@ public final class HeadquarterCreate extends AbstractEffect
 		flag.spawnMe(player.getX(), player.getY(), player.getZ() + 50);
 		final Castle castle = CastleManager.getInstance().getCastle(player);
 		final Fort fort = FortManager.getInstance().getFort(player);
-		final SiegableHall hall = CHSiegeManager.getInstance().getNearbyClanHall(player);
+		final SiegableHall hall = ClanHallSiegeManager.getInstance().getNearbyClanHall(player);
 		if (castle != null)
 		{
 			castle.getSiege().getFlag(player.getClan()).add(flag);
diff --git a/src/main/java/com/l2jserver/datapack/hellbound/HellboundEngine.java b/src/main/java/com/l2jserver/datapack/hellbound/HellboundEngine.java
index 55a14b939f..93dbd8973c 100644
--- a/src/main/java/com/l2jserver/datapack/hellbound/HellboundEngine.java
+++ b/src/main/java/com/l2jserver/datapack/hellbound/HellboundEngine.java
@@ -18,6 +18,9 @@
  */
 package com.l2jserver.datapack.hellbound;
 
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
 import com.l2jserver.datapack.ai.npc.AbstractNpcAI;
 
 import com.l2jserver.gameserver.config.Config;
@@ -35,6 +38,9 @@ import com.l2jserver.gameserver.util.Broadcast;
  */
 public final class HellboundEngine extends AbstractNpcAI
 {
+	
+	private static final Logger LOG = LoggerFactory.getLogger(HellboundEngine.class);
+	
 	// @formatter:off
 	private static final int[][] DOOR_LIST =
 	{
@@ -66,9 +72,9 @@ public final class HellboundEngine extends AbstractNpcAI
 		
 		startQuestTimer(UPDATE_EVENT, 1000, null, null);
 		
-		_log.info(HellboundEngine.class.getSimpleName() + ": Level: " + getLevel());
-		_log.info(HellboundEngine.class.getSimpleName() + ": Trust: " + getTrust());
-		_log.info(HellboundEngine.class.getSimpleName() + ": Status: " + (isLocked() ? "locked." : "unlocked."));
+		LOG.info("Level {}.", getLevel());
+		LOG.info("Trust {}.", getTrust());
+		LOG.info("Status {}.", (isLocked() ? "locked" : "unlocked"));
 	}
 	
 	@Override
@@ -148,11 +154,11 @@ public final class HellboundEngine extends AbstractNpcAI
 		
 		if (added > 0)
 		{
-			_log.info(getClass().getSimpleName() + ": Spawned " + added + " NPCs.");
+			LOG.info("Spawned {} NPCs.", added);
 		}
 		if (deleted > 0)
 		{
-			_log.info(getClass().getSimpleName() + ": Removed " + deleted + " NPCs.");
+			LOG.info("Removed {} NPCs.", deleted);
 		}
 	}
 	
@@ -176,7 +182,7 @@ public final class HellboundEngine extends AbstractNpcAI
 			return;
 		}
 		
-		_log.info(HellboundEngine.class.getSimpleName() + ": Changing level from " + getLevel() + " to " + lvl + ".");
+		LOG.info("Changing level from {} to {}.", getLevel(), lvl);
 		
 		GlobalVariablesManager.getInstance().set("HBLevel", lvl);
 	}
@@ -284,16 +290,16 @@ public final class HellboundEngine extends AbstractNpcAI
 					}
 				}
 			}
-			catch (Exception e)
+			catch (Exception ex)
 			{
-				_log.warning(getClass().getSimpleName() + " : Doors problem!" + e.getMessage());
+				LOG.warn("Doors problem!", ex);
 			}
 		}
 		
 		if (_cachedLevel > 0)
 		{
 			Broadcast.toAllOnlinePlayers(ANNOUNCEMENT.replace("%lvl%", String.valueOf(newLevel)));
-			_log.info(HellboundEngine.class.getSimpleName() + ": New level: " + newLevel);
+			LOG.info("New level {}.", newLevel);
 		}
 		_cachedLevel = newLevel;
 	}
diff --git a/src/main/java/com/l2jserver/datapack/hellbound/HellboundPointData.java b/src/main/java/com/l2jserver/datapack/hellbound/HellboundPointData.java
index 11253cff2b..ef379623bc 100644
--- a/src/main/java/com/l2jserver/datapack/hellbound/HellboundPointData.java
+++ b/src/main/java/com/l2jserver/datapack/hellbound/HellboundPointData.java
@@ -21,6 +21,8 @@ package com.l2jserver.datapack.hellbound;
 import java.util.HashMap;
 import java.util.Map;
 
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 import org.w3c.dom.Document;
 import org.w3c.dom.NamedNodeMap;
 import org.w3c.dom.Node;
@@ -33,6 +35,9 @@ import com.l2jserver.gameserver.util.IXmlReader;
  */
 public final class HellboundPointData implements IXmlReader
 {
+
+	private static final Logger LOG = LoggerFactory.getLogger(HellboundPointData.class);
+	
 	private final Map<Integer, int[]> _pointsInfo = new HashMap<>();
 	
 	public HellboundPointData()
@@ -44,8 +49,8 @@ public final class HellboundPointData implements IXmlReader
 	public void load()
 	{
 		_pointsInfo.clear();
-		parseDatapackFile("data/scripts/hellbound/hellboundTrustPoints.xml");
-		LOG.info("{}: Loaded {} trust point reward data.", getClass().getSimpleName(), _pointsInfo.size());
+		parseDatapackFile("data/hellbound/hellboundTrustPoints.xml");
+		LOG.info("Loaded {} trust point reward data.", _pointsInfo.size());
 	}
 	
 	@Override
@@ -75,7 +80,7 @@ public final class HellboundPointData implements IXmlReader
 			Node att = attrs.getNamedItem("id");
 			if (att == null)
 			{
-				LOG.error("{}: Missing NPC ID, skipping record!", getClass().getSimpleName());
+				LOG.warn("Missing NPC Id, skipping record!");
 				return;
 			}
 			
@@ -83,7 +88,7 @@ public final class HellboundPointData implements IXmlReader
 			att = attrs.getNamedItem("points");
 			if (att == null)
 			{
-				LOG.error("{}: Missing reward point info for NPC ID {}, skipping record", getClass().getSimpleName(), npcId);
+				LOG.warn("Missing reward point info for NPC Id {}, skipping record", npcId);
 				return;
 			}
 			
@@ -91,7 +96,7 @@ public final class HellboundPointData implements IXmlReader
 			att = attrs.getNamedItem("minHellboundLvl");
 			if (att == null)
 			{
-				LOG.error("{}: Missing minHellboundLvl info for NPC ID {}, skipping record!", getClass().getSimpleName());
+				LOG.warn("Missing minHellboundLvl info for NPC Id {}, skipping record!");
 				return;
 			}
 			
@@ -99,7 +104,7 @@ public final class HellboundPointData implements IXmlReader
 			att = attrs.getNamedItem("maxHellboundLvl");
 			if (att == null)
 			{
-				LOG.error("{}: Missing maxHellboundLvl info for NPC ID {}, skipping record!", getClass().getSimpleName(), npcId);
+				LOG.warn("Missing maxHellboundLvl info for NPC Id {}, skipping record!", npcId);
 				return;
 			}
 			
diff --git a/src/main/java/com/l2jserver/datapack/hellbound/HellboundSpawns.java b/src/main/java/com/l2jserver/datapack/hellbound/HellboundSpawns.java
index d2fdc76bbb..2d6d0c22a0 100644
--- a/src/main/java/com/l2jserver/datapack/hellbound/HellboundSpawns.java
+++ b/src/main/java/com/l2jserver/datapack/hellbound/HellboundSpawns.java
@@ -23,6 +23,8 @@ import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 import org.w3c.dom.Document;
 import org.w3c.dom.NamedNodeMap;
 import org.w3c.dom.Node;
@@ -38,7 +40,11 @@ import com.l2jserver.gameserver.util.IXmlReader;
  */
 public final class HellboundSpawns implements IXmlReader
 {
+
+	private static final Logger LOG = LoggerFactory.getLogger(HellboundSpawns.class);
+	
 	private final List<L2Spawn> _spawns = new ArrayList<>();
+	
 	private final Map<Integer, int[]> _spawnLevels = new HashMap<>();
 	
 	public HellboundSpawns()
@@ -51,8 +57,8 @@ public final class HellboundSpawns implements IXmlReader
 	{
 		_spawns.clear();
 		_spawnLevels.clear();
-		parseDatapackFile("data/scripts/hellbound/hellboundSpawns.xml");
-		LOG.info("{}: Loaded {} Hellbound spawns.", getClass().getSimpleName(), _spawns.size());
+		parseDatapackFile("data/hellbound/hellboundSpawns.xml");
+		LOG.info("Loaded {} Hellbound spawns.", _spawns.size());
 	}
 	
 	@Override
@@ -81,7 +87,7 @@ public final class HellboundSpawns implements IXmlReader
 			final Node id = npc.getAttributes().getNamedItem("id");
 			if (id == null)
 			{
-				LOG.error("{}:  Missing NPC ID, skipping record!", getClass().getSimpleName());
+				LOG.warn("Missing NPC Id, skipping record!");
 				return;
 			}
 			
@@ -124,7 +130,7 @@ public final class HellboundSpawns implements IXmlReader
 				spawn.setAmount(1);
 				if (loc == null)
 				{
-					LOG.warn("{}: Hellbound spawn location is null!", getClass().getSimpleName());
+					LOG.warn("Hellbound spawn location is null!");
 				}
 				spawn.setLocation(loc);
 				spawn.setRespawnDelay(delay, randomInterval);
@@ -136,9 +142,9 @@ public final class HellboundSpawns implements IXmlReader
 				SpawnTable.getInstance().addNewSpawn(spawn, false);
 				_spawns.add(spawn);
 			}
-			catch (SecurityException | ClassNotFoundException | NoSuchMethodException e)
+			catch (Exception ex)
 			{
-				LOG.warn("{}: Couldn't load spawns!", getClass().getSimpleName(), e);
+				LOG.warn("Couldn't load spawns!", ex);
 			}
 		}
 	}
diff --git a/src/main/java/com/l2jserver/datapack/instances/InstanceLoader.java b/src/main/java/com/l2jserver/datapack/instances/InstanceLoader.java
index 3f5a5f43f4..5640e3b21b 100644
--- a/src/main/java/com/l2jserver/datapack/instances/InstanceLoader.java
+++ b/src/main/java/com/l2jserver/datapack/instances/InstanceLoader.java
@@ -18,8 +18,8 @@
  */
 package com.l2jserver.datapack.instances;
 
-import java.util.logging.Level;
-import java.util.logging.Logger;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 import com.l2jserver.datapack.instances.CastleDungeon.CastleDungeon;
 import com.l2jserver.datapack.instances.CavernOfThePirateCaptain.CavernOfThePirateCaptain;
@@ -56,12 +56,10 @@ import com.l2jserver.datapack.instances.SecretAreaInTheKeucereusFortress1.Secret
  * Instance class-loader.
  * @author FallenAngel
  */
-public final class InstanceLoader
-{
-	private static final Logger _log = Logger.getLogger(InstanceLoader.class.getName());
+public final class InstanceLoader {
+	private static final Logger LOG = LoggerFactory.getLogger(InstanceLoader.class);
 	
-	private static final Class<?>[] SCRIPTS =
-	{
+	private static final Class<?>[] SCRIPTS = {
 		CastleDungeon.class,
 		CavernOfThePirateCaptain.class,
 		CrystalCaverns.class,
@@ -94,18 +92,13 @@ public final class InstanceLoader
 		SecretAreaInTheKeucereusFortress1.class,
 	};
 	
-	public static void main(String[] args)
-	{
-		_log.info(InstanceLoader.class.getSimpleName() + ": Loading Instances scripts.");
-		for (Class<?> script : SCRIPTS)
-		{
-			try
-			{
+	public static void main(String[] args) {
+		LOG.info("Loading Instances scripts.");
+		for (Class<?> script : SCRIPTS) {
+			try {
 				script.getDeclaredConstructor().newInstance();
-			}
-			catch (Exception e)
-			{
-				_log.log(Level.SEVERE, InstanceLoader.class.getSimpleName() + ": Failed loading " + script.getSimpleName() + ":", e);
+			} catch (Exception ex) {
+				LOG.warn("Failed loading {}!", script.getSimpleName(), ex);
 			}
 		}
 	}
diff --git a/src/main/java/com/l2jserver/datapack/quests/Q00350_EnhanceYourWeapon/Q00350_EnhanceYourWeapon.java b/src/main/java/com/l2jserver/datapack/quests/Q00350_EnhanceYourWeapon/Q00350_EnhanceYourWeapon.java
index ad3ca06231..1b14e4458e 100644
--- a/src/main/java/com/l2jserver/datapack/quests/Q00350_EnhanceYourWeapon/Q00350_EnhanceYourWeapon.java
+++ b/src/main/java/com/l2jserver/datapack/quests/Q00350_EnhanceYourWeapon/Q00350_EnhanceYourWeapon.java
@@ -28,6 +28,8 @@ import java.util.logging.Level;
 
 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;
@@ -51,77 +53,67 @@ import com.l2jserver.gameserver.network.serverpackets.SystemMessage;
  * Enhance Your Weapon (350)
  * @author Gigiikun
  */
-public class Q00350_EnhanceYourWeapon extends Quest
-{
-	private static enum AbsorbCrystalType
-	{
+public class Q00350_EnhanceYourWeapon extends Quest {
+	
+	private static final Logger LOG = LoggerFactory.getLogger(Q00350_EnhanceYourWeapon.class);
+	
+	private static enum AbsorbCrystalType {
 		LAST_HIT,
 		FULL_PARTY,
 		PARTY_ONE_RANDOM,
 		PARTY_RANDOM
 	}
 	
-	private static final class LevelingInfo
-	{
+	private static final class LevelingInfo {
 		private final AbsorbCrystalType _absorbCrystalType;
 		private final boolean _isSkillNeeded;
 		private final int _chance;
 		
-		public LevelingInfo(AbsorbCrystalType absorbCrystalType, boolean isSkillNeeded, int chance)
-		{
+		public LevelingInfo(AbsorbCrystalType absorbCrystalType, boolean isSkillNeeded, int chance) {
 			_absorbCrystalType = absorbCrystalType;
 			_isSkillNeeded = isSkillNeeded;
 			_chance = chance;
 		}
 		
-		public final AbsorbCrystalType getAbsorbCrystalType()
-		{
+		public final AbsorbCrystalType getAbsorbCrystalType() {
 			return _absorbCrystalType;
 		}
 		
-		public final int getChance()
-		{
+		public final int getChance() {
 			return _chance;
 		}
 		
-		public final boolean isSkillNeeded()
-		{
+		public final boolean isSkillNeeded() {
 			return _isSkillNeeded;
 		}
 	}
 	
-	private static final class SoulCrystal
-	{
+	private static final class SoulCrystal {
 		private final int _level;
 		private final int _itemId;
 		private final int _leveledItemId;
 		
-		public SoulCrystal(int level, int itemId, int leveledItemId)
-		{
+		public SoulCrystal(int level, int itemId, int leveledItemId) {
 			_level = level;
 			_itemId = itemId;
 			_leveledItemId = leveledItemId;
 		}
 		
-		public final int getItemId()
-		{
+		public final int getItemId() {
 			return _itemId;
 		}
 		
-		public final int getLevel()
-		{
+		public final int getLevel() {
 			return _level;
 		}
 		
-		public final int getLeveledItemId()
-		{
+		public final int getLeveledItemId() {
 			return _leveledItemId;
 		}
 	}
 	
 	// NPCs
-	private static final int[] STARTING_NPCS =
-	{
+	private static final int[] STARTING_NPCS = {
 		30115,
 		30856,
 		30194
@@ -135,52 +127,38 @@ public class Q00350_EnhanceYourWeapon extends Quest
 	// <npcid, <level, LevelingInfo>>
 	private static final Map<Integer, Map<Integer, LevelingInfo>> NPC_LEVELING_INFO = new HashMap<>();
 	
-	public Q00350_EnhanceYourWeapon()
-	{
+	public Q00350_EnhanceYourWeapon() {
 		super(350, Q00350_EnhanceYourWeapon.class.getSimpleName(), "Enhance Your Weapon");
 		addStartNpc(STARTING_NPCS);
 		addTalkId(STARTING_NPCS);
 		load();
-		for (int npcId : NPC_LEVELING_INFO.keySet())
-		{
+		for (int npcId : NPC_LEVELING_INFO.keySet()) {
 			addSkillSeeId(npcId);
 			addKillId(npcId);
 		}
 	}
 	
 	@Override
-	public String onAdvEvent(String event, L2Npc npc, L2PcInstance player)
-	{
+	public String onAdvEvent(String event, L2Npc npc, L2PcInstance player) {
 		String htmltext = event;
 		QuestState st = getQuestState(player, false);
-		if (event.endsWith("-04.htm"))
-		{
+		if (event.endsWith("-04.htm")) {
 			st.startQuest();
-		}
-		else if (event.endsWith("-09.htm"))
-		{
+		} else if (event.endsWith("-09.htm")) {
 			st.giveItems(RED_SOUL_CRYSTAL0_ID, 1);
-		}
-		else if (event.endsWith("-10.htm"))
-		{
+		} else if (event.endsWith("-10.htm")) {
 			st.giveItems(GREEN_SOUL_CRYSTAL0_ID, 1);
-		}
-		else if (event.endsWith("-11.htm"))
-		{
+		} else if (event.endsWith("-11.htm")) {
 			st.giveItems(BLUE_SOUL_CRYSTAL0_ID, 1);
-		}
-		else if (event.equalsIgnoreCase("exit.htm"))
-		{
+		} else if (event.equalsIgnoreCase("exit.htm")) {
 			st.exitQuest(true);
 		}
 		return htmltext;
 	}
 	
 	@Override
-	public String onKill(L2Npc npc, L2PcInstance killer, boolean isSummon)
-	{
-		if (npc.isAttackable() && NPC_LEVELING_INFO.containsKey(npc.getId()))
-		{
+	public String onKill(L2Npc npc, L2PcInstance killer, boolean isSummon) {
+		if (npc.isAttackable() && NPC_LEVELING_INFO.containsKey(npc.getId())) {
 			levelSoulCrystals((L2Attackable) npc, killer);
 		}
 		
@@ -188,75 +166,55 @@ public class Q00350_EnhanceYourWeapon extends Quest
 	}
 	
 	@Override
-	public String onSkillSee(L2Npc npc, L2PcInstance caster, Skill skill, L2Object[] targets, boolean isSummon)
-	{
+	public String onSkillSee(L2Npc npc, L2PcInstance caster, Skill skill, L2Object[] targets, boolean isSummon) {
 		super.onSkillSee(npc, caster, skill, targets, isSummon);
 		
-		if ((skill == null) || (skill.getId() != 2096))
-		{
+		if ((skill == null) || (skill.getId() != 2096)) {
 			return null;
-		}
-		else if ((caster == null) || caster.isDead())
-		{
+		} else if ((caster == null) || caster.isDead()) {
 			return null;
 		}
-		if (!npc.isAttackable() || npc.isDead() || !NPC_LEVELING_INFO.containsKey(npc.getId()))
-		{
+		if (!npc.isAttackable() || npc.isDead() || !NPC_LEVELING_INFO.containsKey(npc.getId())) {
 			return null;
 		}
 		
-		try
-		{
+		try {
 			((L2Attackable) npc).addAbsorber(caster);
-		}
-		catch (Exception e)
-		{
+		} catch (Exception e) {
 			_log.log(Level.SEVERE, "", e);
 		}
 		return null;
 	}
 	
 	@Override
-	public String onTalk(L2Npc npc, L2PcInstance player)
-	{
+	public String onTalk(L2Npc npc, L2PcInstance player) {
 		String htmltext = getNoQuestMsg(player);
 		final QuestState st = getQuestState(player, true);
-		if (st.getState() == State.CREATED)
-		{
+		if (st.getState() == State.CREATED) {
 			st.set("cond", "0");
 		}
-		if (st.getInt("cond") == 0)
-		{
+		if (st.getInt("cond") == 0) {
 			htmltext = npc.getId() + "-01.htm";
-		}
-		else if (check(st))
-		{
+		} else if (check(st)) {
 			htmltext = npc.getId() + "-03.htm";
-		}
-		else if (!st.hasQuestItems(RED_SOUL_CRYSTAL0_ID) && !st.hasQuestItems(GREEN_SOUL_CRYSTAL0_ID) && !st.hasQuestItems(BLUE_SOUL_CRYSTAL0_ID))
-		{
+		} else if (!st.hasQuestItems(RED_SOUL_CRYSTAL0_ID) && !st.hasQuestItems(GREEN_SOUL_CRYSTAL0_ID) && !st.hasQuestItems(BLUE_SOUL_CRYSTAL0_ID)) {
 			htmltext = npc.getId() + "-21.htm";
 		}
 		return htmltext;
 	}
 	
-	private static boolean check(QuestState st)
-	{
-		for (int i = 4629; i < 4665; i++)
-		{
-			if (st.hasQuestItems(i))
-			{
+	private static boolean check(QuestState st) {
+		for (int i = 4629; i < 4665; i++) {
+			if (st.hasQuestItems(i)) {
 				return true;
 			}
 		}
 		return false;
 	}
 	
-	private static void exchangeCrystal(L2PcInstance player, L2Attackable mob, int takeid, int giveid, boolean broke)
-	{
+	private static void exchangeCrystal(L2PcInstance player, L2Attackable mob, int takeid, int giveid, boolean broke) {
 		L2ItemInstance Item = player.getInventory().destroyItemByItemId("SoulCrystal", takeid, 1, player, mob);
-		if (Item != null)
-		{
+		if (Item != null) {
 			// Prepare inventory update packet
 			InventoryUpdate playerIU = new InventoryUpdate();
 			playerIU.addRemovedItem(Item);
@@ -266,12 +224,9 @@ public class Q00350_EnhanceYourWeapon extends Quest
 			playerIU.addItem(Item);
 			
 			// Send a sound event and text message to the player
-			if (broke)
-			{
+			if (broke) {
 				player.sendPacket(SystemMessageId.SOUL_CRYSTAL_BROKE);
-			}
-			else
-			{
+			} else {
 				player.sendPacket(SystemMessageId.SOUL_CRYSTAL_ABSORBING_SUCCEEDED);
 			}
 			
@@ -285,26 +240,21 @@ public class Q00350_EnhanceYourWeapon extends Quest
 		}
 	}
 	
-	private static SoulCrystal getSCForPlayer(L2PcInstance player)
-	{
+	private static SoulCrystal getSCForPlayer(L2PcInstance player) {
 		final QuestState st = player.getQuestState(Q00350_EnhanceYourWeapon.class.getSimpleName());
-		if ((st == null) || !st.isStarted())
-		{
+		if ((st == null) || !st.isStarted()) {
 			return null;
 		}
 		
 		L2ItemInstance[] inv = player.getInventory().getItems();
 		SoulCrystal ret = null;
-		for (L2ItemInstance item : inv)
-		{
+		for (L2ItemInstance item : inv) {
 			int itemId = item.getId();
-			if (!SOUL_CRYSTALS.containsKey(itemId))
-			{
+			if (!SOUL_CRYSTALS.containsKey(itemId)) {
 				continue;
 			}
 			
-			if (ret != null)
-			{
+			if (ret != null) {
 				return null;
 			}
 			ret = SOUL_CRYSTALS.get(itemId);
@@ -312,38 +262,29 @@ public class Q00350_EnhanceYourWeapon extends Quest
 		return ret;
 	}
 	
-	private static boolean isPartyLevelingMonster(int npcId)
-	{
-		for (LevelingInfo li : NPC_LEVELING_INFO.get(npcId).values())
-		{
-			if (li.getAbsorbCrystalType() != AbsorbCrystalType.LAST_HIT)
-			{
+	private static boolean isPartyLevelingMonster(int npcId) {
+		for (LevelingInfo li : NPC_LEVELING_INFO.get(npcId).values()) {
+			if (li.getAbsorbCrystalType() != AbsorbCrystalType.LAST_HIT) {
 				return true;
 			}
 		}
 		return false;
 	}
 	
-	private static void levelCrystal(L2PcInstance player, SoulCrystal sc, L2Attackable mob)
-	{
-		if ((sc == null) || !NPC_LEVELING_INFO.containsKey(mob.getId()))
-		{
+	private static void levelCrystal(L2PcInstance player, SoulCrystal sc, L2Attackable mob) {
+		if ((sc == null) || !NPC_LEVELING_INFO.containsKey(mob.getId())) {
 			return;
 		}
 		
 		// If the crystal level is way too high for this mob, say that we can't increase it
-		if (!NPC_LEVELING_INFO.get(mob.getId()).containsKey(sc.getLevel()))
-		{
+		if (!NPC_LEVELING_INFO.get(mob.getId()).containsKey(sc.getLevel())) {
 			player.sendPacket(SystemMessageId.SOUL_CRYSTAL_ABSORBING_REFUSED);
 			return;
 		}
 		
-		if (getRandom(100) <= NPC_LEVELING_INFO.get(mob.getId()).get(sc.getLevel()).getChance())
-		{
+		if (getRandom(100) <= NPC_LEVELING_INFO.get(mob.getId()).get(sc.getLevel()).getChance()) {
 			exchangeCrystal(player, mob, sc.getItemId(), sc.getLeveledItemId(), false);
-		}
-		else
-		{
+		} else {
 			player.sendPacket(SystemMessageId.SOUL_CRYSTAL_ABSORBING_FAILED);
 		}
 	}
@@ -353,11 +294,9 @@ public class Q00350_EnhanceYourWeapon extends Quest
 	 * @param mob
 	 * @param killer The player that last killed this L2Attackable $ Rewrite 06.12.06 - Yesod $ Rewrite 08.01.10 - Gigiikun
 	 */
-	public static void levelSoulCrystals(L2Attackable mob, L2PcInstance killer)
-	{
+	public static void levelSoulCrystals(L2Attackable mob, L2PcInstance killer) {
 		// Only L2PcInstance can absorb a soul
-		if (killer == null)
-		{
+		if (killer == null) {
 			mob.resetAbsorbList();
 			return;
 		}
@@ -366,37 +305,28 @@ public class Q00350_EnhanceYourWeapon extends Quest
 		int maxSCLevel = 0;
 		
 		// TODO: what if mob support last_hit + party?
-		if (isPartyLevelingMonster(mob.getId()) && (killer.getParty() != null))
-		{
+		if (isPartyLevelingMonster(mob.getId()) && (killer.getParty() != null)) {
 			// firts get the list of players who has one Soul Cry and the quest
-			for (L2PcInstance pl : killer.getParty().getMembers())
-			{
-				if (pl == null)
-				{
+			for (L2PcInstance pl : killer.getParty().getMembers()) {
+				if (pl == null) {
 					continue;
 				}
 				
 				SoulCrystal sc = getSCForPlayer(pl);
-				if (sc == null)
-				{
+				if (sc == null) {
 					continue;
 				}
 				
 				players.put(pl, sc);
-				if ((maxSCLevel < sc.getLevel()) && NPC_LEVELING_INFO.get(mob.getId()).containsKey(sc.getLevel()))
-				{
+				if ((maxSCLevel < sc.getLevel()) && NPC_LEVELING_INFO.get(mob.getId()).containsKey(sc.getLevel())) {
 					maxSCLevel = sc.getLevel();
 				}
 			}
-		}
-		else
-		{
+		} else {
 			SoulCrystal sc = getSCForPlayer(killer);
-			if (sc != null)
-			{
+			if (sc != null) {
 				players.put(killer, sc);
-				if ((maxSCLevel < sc.getLevel()) && NPC_LEVELING_INFO.get(mob.getId()).containsKey(sc.getLevel()))
-				{
+				if ((maxSCLevel < sc.getLevel()) && NPC_LEVELING_INFO.get(mob.getId()).containsKey(sc.getLevel())) {
 					maxSCLevel = sc.getLevel();
 				}
 			}
@@ -404,18 +334,15 @@ public class Q00350_EnhanceYourWeapon extends Quest
 		// Init some useful vars
 		LevelingInfo mainlvlInfo = NPC_LEVELING_INFO.get(mob.getId()).get(maxSCLevel);
 		
-		if (mainlvlInfo == null)
-		{
+		if (mainlvlInfo == null) {
 			/* throw new NullPointerException("Target: "+mob+ " player: "+killer+" level: "+maxSCLevel); */
 			return;
 		}
 		
 		// If this mob is not require skill, then skip some checkings
-		if (mainlvlInfo.isSkillNeeded())
-		{
+		if (mainlvlInfo.isSkillNeeded()) {
 			// Fail if this L2Attackable isn't absorbed or there's no one in its _absorbersList
-			if (!mob.isAbsorbed() /* || _absorbersList == null */)
-			{
+			if (!mob.isAbsorbed() /* || _absorbersList == null */) {
 				mob.resetAbsorbList();
 				return;
 			}
@@ -423,69 +350,53 @@ public class Q00350_EnhanceYourWeapon extends Quest
 			// Fail if the killer isn't in the _absorbersList of this L2Attackable and mob is not boss
 			AbsorberInfo ai = mob.getAbsorbersList().get(killer.getObjectId());
 			boolean isSuccess = true;
-			if ((ai == null) || (ai.getObjectId() != killer.getObjectId()))
-			{
+			if ((ai == null) || (ai.getObjectId() != killer.getObjectId())) {
 				isSuccess = false;
 			}
 			
 			// Check if the soul crystal was used when HP of this L2Attackable wasn't higher than half of it
-			if ((ai != null) && (ai.getAbsorbedHp() > (mob.getMaxHp() / 2.0)))
-			{
+			if ((ai != null) && (ai.getAbsorbedHp() > (mob.getMaxHp() / 2.0))) {
 				isSuccess = false;
 			}
 			
-			if (!isSuccess)
-			{
+			if (!isSuccess) {
 				mob.resetAbsorbList();
 				return;
 			}
 		}
 		
-		switch (mainlvlInfo.getAbsorbCrystalType())
-		{
+		switch (mainlvlInfo.getAbsorbCrystalType()) {
 			case PARTY_ONE_RANDOM:
 				// This is a naive method for selecting a random member. It gets any random party member and
 				// then checks if the member has a valid crystal. It does not select the random party member
 				// among those who have crystals, only. However, this might actually be correct (same as retail).
-				if (killer.getParty() != null)
-				{
+				if (killer.getParty() != null) {
 					L2PcInstance lucky = killer.getParty().getMembers().get(getRandom(killer.getParty().getMemberCount()));
 					levelCrystal(lucky, players.get(lucky), mob);
-				}
-				else
-				{
+				} else {
 					levelCrystal(killer, players.get(killer), mob);
 				}
 				break;
 			case PARTY_RANDOM:
-				if (killer.getParty() != null)
-				{
+				if (killer.getParty() != null) {
 					List<L2PcInstance> luckyParty = new ArrayList<>();
 					luckyParty.addAll(killer.getParty().getMembers());
-					while ((getRandom(100) < 33) && !luckyParty.isEmpty())
-					{
+					while ((getRandom(100) < 33) && !luckyParty.isEmpty()) {
 						L2PcInstance lucky = luckyParty.remove(getRandom(luckyParty.size()));
-						if (players.containsKey(lucky))
-						{
+						if (players.containsKey(lucky)) {
 							levelCrystal(lucky, players.get(lucky), mob);
 						}
 					}
-				}
-				else if (getRandom(100) < 33)
-				{
+				} else if (getRandom(100) < 33) {
 					levelCrystal(killer, players.get(killer), mob);
 				}
 				break;
 			case FULL_PARTY:
-				if (killer.getParty() != null)
-				{
-					for (L2PcInstance pl : killer.getParty().getMembers())
-					{
+				if (killer.getParty() != null) {
+					for (L2PcInstance pl : killer.getParty().getMembers()) {
 						levelCrystal(pl, players.get(pl), mob);
 					}
-				}
-				else
-				{
+				} else {
 					levelCrystal(killer, players.get(killer), mob);
 				}
 				break;
@@ -498,54 +409,43 @@ public class Q00350_EnhanceYourWeapon extends Quest
 	/**
 	 * TODO: Implement using DocumentParser.
 	 */
-	private static void load()
-	{
-		try
-		{
+	private static void load() {
+		try {
 			DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
 			factory.setValidating(false);
 			factory.setIgnoringComments(true);
 			
 			File file = new File(Config.DATAPACK_ROOT, "data/levelUpCrystalData.xml");
-			if (!file.exists())
-			{
-				_log.severe("[EnhanceYourWeapon] Missing levelUpCrystalData.xml. The quest wont work without it!");
+			if (!file.exists()) {
+				LOG.error("Missing levelUpCrystalData.xml. The quest wont work without it!");
 				return;
 			}
 			
 			Document doc = factory.newDocumentBuilder().parse(file);
 			Node first = doc.getFirstChild();
-			if ((first != null) && "list".equalsIgnoreCase(first.getNodeName()))
-			{
-				for (Node n = first.getFirstChild(); n != null; n = n.getNextSibling())
-				{
-					if ("crystal".equalsIgnoreCase(n.getNodeName()))
-					{
-						for (Node d = n.getFirstChild(); d != null; d = d.getNextSibling())
-						{
-							if ("item".equalsIgnoreCase(d.getNodeName()))
-							{
+			if ((first != null) && "list".equalsIgnoreCase(first.getNodeName())) {
+				for (Node n = first.getFirstChild(); n != null; n = n.getNextSibling()) {
+					if ("crystal".equalsIgnoreCase(n.getNodeName())) {
+						for (Node d = n.getFirstChild(); d != null; d = d.getNextSibling()) {
+							if ("item".equalsIgnoreCase(d.getNodeName())) {
 								NamedNodeMap attrs = d.getAttributes();
 								Node att = attrs.getNamedItem("itemId");
-								if (att == null)
-								{
-									_log.severe("[EnhanceYourWeapon] Missing itemId in Crystal List, skipping");
+								if (att == null) {
+									LOG.error("Missing itemId in Crystal List, skipping!");
 									continue;
 								}
 								int itemId = Integer.parseInt(attrs.getNamedItem("itemId").getNodeValue());
 								
 								att = attrs.getNamedItem("level");
-								if (att == null)
-								{
-									_log.severe("[EnhanceYourWeapon] Missing level in Crystal List itemId: " + itemId + ", skipping");
+								if (att == null) {
+									LOG.error("Missing level in Crystal List item Id {}, skipping!", itemId);
 									continue;
 								}
 								int level = Integer.parseInt(attrs.getNamedItem("level").getNodeValue());
 								
 								att = attrs.getNamedItem("leveledItemId");
-								if (att == null)
-								{
-									_log.severe("[EnhanceYourWeapon] Missing leveledItemId in Crystal List itemId: " + itemId + ", skipping");
+								if (att == null) {
+									LOG.error("Missing leveledItemId in Crystal List item Id {}, skipping!", itemId);
 									continue;
 								}
 								int leveledItemId = Integer.parseInt(attrs.getNamedItem("leveledItemId").getNodeValue());
@@ -553,77 +453,60 @@ public class Q00350_EnhanceYourWeapon extends Quest
 								SOUL_CRYSTALS.put(itemId, new SoulCrystal(level, itemId, leveledItemId));
 							}
 						}
-					}
-					else if ("npc".equalsIgnoreCase(n.getNodeName()))
-					{
-						for (Node d = n.getFirstChild(); d != null; d = d.getNextSibling())
-						{
-							if ("item".equalsIgnoreCase(d.getNodeName()))
-							{
+					} else if ("npc".equalsIgnoreCase(n.getNodeName())) {
+						for (Node d = n.getFirstChild(); d != null; d = d.getNextSibling()) {
+							if ("item".equalsIgnoreCase(d.getNodeName())) {
 								NamedNodeMap attrs = d.getAttributes();
 								Node att = attrs.getNamedItem("npcId");
-								if (att == null)
-								{
-									_log.severe("[EnhanceYourWeapon] Missing npcId in NPC List, skipping");
+								if (att == null) {
+									LOG.error("Missing npc Id in NPC List, skipping!");
 									continue;
 								}
 								
 								int npcId = Integer.parseInt(att.getNodeValue());
 								Map<Integer, LevelingInfo> temp = new HashMap<>();
-								for (Node cd = d.getFirstChild(); cd != null; cd = cd.getNextSibling())
-								{
+								for (Node cd = d.getFirstChild(); cd != null; cd = cd.getNextSibling()) {
 									boolean isSkillNeeded = false;
 									int chance = 5;
 									AbsorbCrystalType absorbType = AbsorbCrystalType.LAST_HIT;
 									
-									if ("detail".equalsIgnoreCase(cd.getNodeName()))
-									{
+									if ("detail".equalsIgnoreCase(cd.getNodeName())) {
 										attrs = cd.getAttributes();
 										
 										att = attrs.getNamedItem("absorbType");
-										if (att != null)
-										{
+										if (att != null) {
 											absorbType = Enum.valueOf(AbsorbCrystalType.class, att.getNodeValue());
 										}
 										
 										att = attrs.getNamedItem("chance");
-										if (att != null)
-										{
+										if (att != null) {
 											chance = Integer.parseInt(att.getNodeValue());
 										}
 										
 										att = attrs.getNamedItem("skill");
-										if (att != null)
-										{
+										if (att != null) {
 											isSkillNeeded = Boolean.parseBoolean(att.getNodeValue());
 										}
 										
 										Node att1 = attrs.getNamedItem("maxLevel");
 										Node att2 = attrs.getNamedItem("levelList");
-										if ((att1 == null) && (att2 == null))
-										{
-											_log.severe("[EnhanceYourWeapon] Missing maxlevel/levelList in NPC List npcId: " + npcId + ", skipping");
+										if ((att1 == null) && (att2 == null)) {
+											LOG.error("Missing maxlevel/levelList in NPC List npc Id {}, skipping!", npcId);
 											continue;
 										}
 										LevelingInfo info = new LevelingInfo(absorbType, isSkillNeeded, chance);
-										if (att1 != null)
-										{
+										if (att1 != null) {
 											int maxLevel = Integer.parseInt(att1.getNodeValue());
-											for (int i = 0; i <= maxLevel; i++)
-											{
+											for (int i = 0; i <= maxLevel; i++) {
 												temp.put(i, info);
 											}
-										}
-										else if (att2 != null)
-										{
+										} else if (att2 != null) {
 											StringTokenizer st = new StringTokenizer(att2.getNodeValue(), ",");
 											int tokenCount = st.countTokens();
-											for (int i = 0; i < tokenCount; i++)
-											{
+											for (int i = 0; i < tokenCount; i++) {
 												Integer value = Integer.decode(st.nextToken().trim());
-												if (value == null)
-												{
-													_log.severe("[EnhanceYourWeapon] Bad Level value!! npcId: " + npcId + " token: " + i);
+												if (value == null) {
+													LOG.error("Bad Level value!! npc Id {}, token {}!", npcId, i);
 													value = 0;
 												}
 												temp.put(value, info);
@@ -632,9 +515,8 @@ public class Q00350_EnhanceYourWeapon extends Quest
 									}
 								}
 								
-								if (temp.isEmpty())
-								{
-									_log.severe("[EnhanceYourWeapon] No leveling info for npcId: " + npcId + ", skipping");
+								if (temp.isEmpty()) {
+									LOG.error("No leveling info for npc Id {}, skipping!", npcId);
 									continue;
 								}
 								NPC_LEVELING_INFO.put(npcId, temp);
@@ -643,12 +525,10 @@ public class Q00350_EnhanceYourWeapon extends Quest
 					}
 				}
 			}
+		} catch (Exception ex) {
+			LOG.warn("Could not parse levelUpCrystalData.xml file!", ex);
 		}
-		catch (Exception e)
-		{
-			_log.log(Level.WARNING, "[EnhanceYourWeapon] Could not parse levelUpCrystalData.xml file: " + e.getMessage(), e);
-		}
-		_log.info("[EnhanceYourWeapon] Loaded " + SOUL_CRYSTALS.size() + " Soul Crystal data.");
-		_log.info("[EnhanceYourWeapon] Loaded " + NPC_LEVELING_INFO.size() + " npc Leveling info data.");
+		LOG.info("Loaded {} soul crystal data.", SOUL_CRYSTALS.size());
+		LOG.info("Loaded {} npc leveling data.", NPC_LEVELING_INFO.size());
 	}
 }
diff --git a/src/main/java/com/l2jserver/datapack/quests/Q00504_CompetitionForTheBanditStronghold/Q00504_CompetitionForTheBanditStronghold.java b/src/main/java/com/l2jserver/datapack/quests/Q00504_CompetitionForTheBanditStronghold/Q00504_CompetitionForTheBanditStronghold.java
index bf36980635..d8f36501d6 100644
--- a/src/main/java/com/l2jserver/datapack/quests/Q00504_CompetitionForTheBanditStronghold/Q00504_CompetitionForTheBanditStronghold.java
+++ b/src/main/java/com/l2jserver/datapack/quests/Q00504_CompetitionForTheBanditStronghold/Q00504_CompetitionForTheBanditStronghold.java
@@ -23,7 +23,7 @@ import java.util.HashMap;
 import java.util.Map;
 
 import com.l2jserver.gameserver.enums.audio.Sound;
-import com.l2jserver.gameserver.instancemanager.CHSiegeManager;
+import com.l2jserver.gameserver.instancemanager.ClanHallSiegeManager;
 import com.l2jserver.gameserver.model.L2Clan;
 import com.l2jserver.gameserver.model.actor.L2Npc;
 import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
@@ -39,7 +39,7 @@ import com.l2jserver.gameserver.model.quest.State;
 public final class Q00504_CompetitionForTheBanditStronghold extends Quest
 {
 	// Misc
-	private static final SiegableHall BANDIT_STRONGHOLD = CHSiegeManager.getInstance().getSiegableHall(35);
+	private static final SiegableHall BANDIT_STRONGHOLD = ClanHallSiegeManager.getInstance().getSiegableHall(35);
 	// NPC
 	private static final int MESSENGER = 35437;
 	// Monsters
diff --git a/src/main/java/com/l2jserver/datapack/quests/Q00655_AGrandPlanForTamingWildBeasts/Q00655_AGrandPlanForTamingWildBeasts.java b/src/main/java/com/l2jserver/datapack/quests/Q00655_AGrandPlanForTamingWildBeasts/Q00655_AGrandPlanForTamingWildBeasts.java
index ca132e1ac2..baed9d6d16 100644
--- a/src/main/java/com/l2jserver/datapack/quests/Q00655_AGrandPlanForTamingWildBeasts/Q00655_AGrandPlanForTamingWildBeasts.java
+++ b/src/main/java/com/l2jserver/datapack/quests/Q00655_AGrandPlanForTamingWildBeasts/Q00655_AGrandPlanForTamingWildBeasts.java
@@ -23,7 +23,7 @@ import java.util.Calendar;
 
 import com.l2jserver.gameserver.cache.HtmCache;
 import com.l2jserver.gameserver.enums.audio.Sound;
-import com.l2jserver.gameserver.instancemanager.CHSiegeManager;
+import com.l2jserver.gameserver.instancemanager.ClanHallSiegeManager;
 import com.l2jserver.gameserver.model.L2Clan;
 import com.l2jserver.gameserver.model.actor.L2Npc;
 import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
@@ -199,7 +199,7 @@ public final class Q00655_AGrandPlanForTamingWildBeasts extends Quest
 	 */
 	private static String getSiegeDate()
 	{
-		final SiegableHall hall = CHSiegeManager.getInstance().getSiegableHall(ClanHallSiegeEngine.BEAST_FARM);
+		final SiegableHall hall = ClanHallSiegeManager.getInstance().getSiegableHall(ClanHallSiegeEngine.BEAST_FARM);
 		if (hall != null)
 		{
 			final SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
@@ -214,7 +214,7 @@ public final class Q00655_AGrandPlanForTamingWildBeasts extends Quest
 	 */
 	private static long getMinutesToSiege()
 	{
-		final SiegableHall hall = CHSiegeManager.getInstance().getSiegableHall(ClanHallSiegeEngine.BEAST_FARM);
+		final SiegableHall hall = ClanHallSiegeManager.getInstance().getSiegableHall(ClanHallSiegeEngine.BEAST_FARM);
 		if (hall != null)
 		{
 			return (hall.getNextSiegeTime() - Calendar.getInstance().getTimeInMillis()) / 3600;
diff --git a/src/main/java/com/l2jserver/datapack/ai/npc/NpcBuffers/NpcBuffersData.xml b/src/main/resources/data/ai/npc/buffer/NpcBuffersData.xml
similarity index 100%
rename from src/main/java/com/l2jserver/datapack/ai/npc/NpcBuffers/NpcBuffersData.xml
rename to src/main/resources/data/ai/npc/buffer/NpcBuffersData.xml
diff --git a/src/main/java/com/l2jserver/datapack/ai/npc/NpcBuffers/NpcBuffersData.xsd b/src/main/resources/data/ai/npc/buffer/NpcBuffersData.xsd
similarity index 100%
rename from src/main/java/com/l2jserver/datapack/ai/npc/NpcBuffers/NpcBuffersData.xsd
rename to src/main/resources/data/ai/npc/buffer/NpcBuffersData.xsd
diff --git a/src/main/java/com/l2jserver/datapack/hellbound/hellboundSpawns.xml b/src/main/resources/data/hellbound/hellboundSpawns.xml
similarity index 96%
rename from src/main/java/com/l2jserver/datapack/hellbound/hellboundSpawns.xml
rename to src/main/resources/data/hellbound/hellboundSpawns.xml
index 9cfb9d038c..ffba6a7aac 100644
--- a/src/main/java/com/l2jserver/datapack/hellbound/hellboundSpawns.xml
+++ b/src/main/resources/data/hellbound/hellboundSpawns.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<list xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../xsd/hellboundSpawns.xsd">
+<list xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="hellboundSpawns.xsd">
 	<npc id="32352">
 		<location x="-19648" y="249424" z="-3232" heading="16384" />
 		<respawn delay="60" />
diff --git a/src/main/resources/data/xsd/hellboundSpawns.xsd b/src/main/resources/data/hellbound/hellboundSpawns.xsd
similarity index 100%
rename from src/main/resources/data/xsd/hellboundSpawns.xsd
rename to src/main/resources/data/hellbound/hellboundSpawns.xsd
diff --git a/src/main/java/com/l2jserver/datapack/hellbound/hellboundTrustPoints.xml b/src/main/resources/data/hellbound/hellboundTrustPoints.xml
similarity index 97%
rename from src/main/java/com/l2jserver/datapack/hellbound/hellboundTrustPoints.xml
rename to src/main/resources/data/hellbound/hellboundTrustPoints.xml
index c73418448b..63bc2d1858 100644
--- a/src/main/java/com/l2jserver/datapack/hellbound/hellboundTrustPoints.xml
+++ b/src/main/resources/data/hellbound/hellboundTrustPoints.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<list xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../xsd/hellboundTrustPoints.xsd">
+<list xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="hellboundTrustPoints.xsd">
 	<npc id="18463" points="5" minHellboundLvl="2" maxHellboundLvl="2" /> <!-- Remnant Diabolist -->
 	<npc id="18464" points="5" minHellboundLvl="2" maxHellboundLvl="2" /> <!-- Remnant Diviner -->
 	<npc id="18465" points="10000" minHellboundLvl="4" maxHellboundLvl="4" /> <!-- Derek -->
diff --git a/src/main/resources/data/xsd/hellboundTrustPoints.xsd b/src/main/resources/data/hellbound/hellboundTrustPoints.xsd
similarity index 100%
rename from src/main/resources/data/xsd/hellboundTrustPoints.xsd
rename to src/main/resources/data/hellbound/hellboundTrustPoints.xsd
diff --git a/src/main/resources/data/scripts.cfg b/src/main/resources/data/scripts.cfg
index 9b0613539d..9f06aaa296 100644
--- a/src/main/resources/data/scripts.cfg
+++ b/src/main/resources/data/scripts.cfg
@@ -1,247 +1,247 @@
 # This file contains a list of scripts that should be loaded by the GameServer
 # The path is relative to the scripts folder, for example scripts/event/Event.java
 # would require the following entry:
-# event/Event.java
+# com/l2jserver/datapack/event/Event.java
 #
 # Note: You can also load an script during server runtime using the Admin Panel
 
 # Load Handlers
-handlers/MasterHandler.java
+com/l2jserver/datapack/handlers/MasterHandler.java
 
 # AI Section
 
 # Npc
-ai/npc/Abercrombie/Abercrombie.java
-ai/npc/Alarm/Alarm.java
-ai/npc/Alexandria/Alexandria.java
-ai/npc/ArenaManager/ArenaManager.java
-ai/npc/Asamah/Asamah.java
-ai/npc/AvantGarde/AvantGarde.java
-ai/npc/BlackJudge/BlackJudge.java
-ai/npc/BlackMarketeerOfMammon/BlackMarketeerOfMammon.java
-ai/npc/CastleAmbassador/CastleAmbassador.java
-ai/npc/CastleBlacksmith/CastleBlacksmith.java
-ai/npc/CastleCourtMagician/CastleCourtMagician.java
-ai/npc/CastleChamberlain/CastleChamberlain.java
-ai/npc/CastleMercenaryManager/CastleMercenaryManager.java
-ai/npc/CastleSiegeManager/CastleSiegeManager.java
-ai/npc/CastleTeleporter/CastleTeleporter.java
-ai/npc/CastleWarehouse/CastleWarehouse.java
-ai/npc/ClanTrader/ClanTrader.java
-ai/npc/ClassMaster/ClassMaster.java
-ai/npc/Dorian/Dorian.java
-ai/npc/DragonVortex/DragonVortex.java
-ai/npc/EchoCrystals/EchoCrystals.java
-ai/npc/FameManager/FameManager.java
-ai/npc/Fisherman/Fisherman.java
-ai/npc/ForgeOfTheGods/ForgeOfTheGods.java
-ai/npc/ForgeOfTheGods/Rooney.java
-ai/npc/ForgeOfTheGods/TarBeetle.java
-ai/npc/FortressArcherCaptain/FortressArcherCaptain.java
-ai/npc/FortressSiegeManager/FortressSiegeManager.java
-ai/npc/FreyasSteward/FreyasSteward.java
-ai/npc/Jinia/Jinia.java
-ai/npc/Katenar/Katenar.java
-ai/npc/KetraOrcSupport/KetraOrcSupport.java
-ai/npc/Kier/Kier.java
-ai/npc/ManorManager/ManorManager.java
-ai/npc/MercenaryCaptain/MercenaryCaptain.java
-ai/npc/Minigame/Minigame.java
-ai/npc/MonumentOfHeroes/MonumentOfHeroes.java
-ai/npc/NevitsHerald/NevitsHerald.java
-ai/npc/NpcBuffers/NpcBuffers.java
-ai/npc/NpcBuffers/impl/CabaleBuffer.java
-ai/npc/PriestOfBlessing/PriestOfBlessing.java
-ai/npc/Rignos/Rignos.java
-ai/npc/Rafforty/Rafforty.java
-ai/npc/Selina/Selina.java
-ai/npc/Sirra/Sirra.java
-ai/npc/SubclassCertification/SubclassCertification.java
-ai/npc/Summons/MerchantGolem/GolemTrader.java
-ai/npc/Summons/Pets/BabyPets.java
-ai/npc/Summons/Pets/ImprovedBabyPets.java
-ai/npc/Summons/Servitors/Servitors.java
-ai/npc/SupportUnitCaptain/SupportUnitCaptain.java
-ai/npc/SymbolMaker/SymbolMaker.java
-ai/npc/Teleports/Asher/Asher.java
-ai/npc/Teleports/CrumaTower/CrumaTower.java
-ai/npc/Teleports/DelusionTeleport/DelusionTeleport.java
-ai/npc/Teleports/ElrokiTeleporters/ElrokiTeleporters.java
-ai/npc/Teleports/GatekeeperSpirit/GatekeeperSpirit.java
-ai/npc/Teleports/GhostChamberlainOfElmoreden/GhostChamberlainOfElmoreden.java
-ai/npc/Teleports/GrandBossTeleporters/GrandBossTeleporters.java
-ai/npc/Teleports/HuntingGroundsTeleport/HuntingGroundsTeleport.java
-ai/npc/Teleports/Klemis/Klemis.java
-ai/npc/Teleports/MithrilMinesTeleporter/MithrilMinesTeleporter.java
-ai/npc/Teleports/NewbieGuide/NewbieGuide.java
-ai/npc/Teleports/NoblesseTeleport/NoblesseTeleport.java
-ai/npc/Teleports/OracleTeleport/OracleTeleport.java
-ai/npc/Teleports/PaganTeleporters/PaganTeleporters.java
-ai/npc/Teleports/SeparatedSoul/SeparatedSoul.java
-ai/npc/Teleports/StakatoNestTeleporter/StakatoNestTeleporter.java
-ai/npc/Teleports/SteelCitadelTeleport/SteelCitadelTeleport.java
-ai/npc/Teleports/StrongholdsTeleports/StrongholdsTeleports.java
-ai/npc/Teleports/Survivor/Survivor.java
-ai/npc/Teleports/TeleportToFantasy/TeleportToFantasy.java
-ai/npc/Teleports/TeleportToRaceTrack/TeleportToRaceTrack.java
-ai/npc/Teleports/TeleportToUndergroundColiseum/TeleportToUndergroundColiseum.java
-ai/npc/Teleports/TeleportWithCharm/TeleportWithCharm.java
-ai/npc/Teleports/ToIVortex/ToIVortex.java
-ai/npc/TerritoryManagers/TerritoryManagers.java
-ai/npc/TownPets/TownPets.java
-ai/npc/Trainers/HealerTrainer/HealerTrainer.java
-ai/npc/Tunatun/Tunatun.java
-ai/npc/VarkaSilenosSupport/VarkaSilenosSupport.java
-ai/npc/VillageMasters/FirstClassTransferTalk/FirstClassTransferTalk.java
-ai/npc/WeaverOlf/WeaverOlf.java
-ai/npc/WyvernManager/WyvernManager.java
+com/l2jserver/datapack/ai/npc/Abercrombie/Abercrombie.java
+com/l2jserver/datapack/ai/npc/Alarm/Alarm.java
+com/l2jserver/datapack/ai/npc/Alexandria/Alexandria.java
+com/l2jserver/datapack/ai/npc/ArenaManager/ArenaManager.java
+com/l2jserver/datapack/ai/npc/Asamah/Asamah.java
+com/l2jserver/datapack/ai/npc/AvantGarde/AvantGarde.java
+com/l2jserver/datapack/ai/npc/BlackJudge/BlackJudge.java
+com/l2jserver/datapack/ai/npc/BlackMarketeerOfMammon/BlackMarketeerOfMammon.java
+com/l2jserver/datapack/ai/npc/CastleAmbassador/CastleAmbassador.java
+com/l2jserver/datapack/ai/npc/CastleBlacksmith/CastleBlacksmith.java
+com/l2jserver/datapack/ai/npc/CastleCourtMagician/CastleCourtMagician.java
+com/l2jserver/datapack/ai/npc/CastleChamberlain/CastleChamberlain.java
+com/l2jserver/datapack/ai/npc/CastleMercenaryManager/CastleMercenaryManager.java
+com/l2jserver/datapack/ai/npc/CastleSiegeManager/CastleSiegeManager.java
+com/l2jserver/datapack/ai/npc/CastleTeleporter/CastleTeleporter.java
+com/l2jserver/datapack/ai/npc/CastleWarehouse/CastleWarehouse.java
+com/l2jserver/datapack/ai/npc/ClanTrader/ClanTrader.java
+com/l2jserver/datapack/ai/npc/ClassMaster/ClassMaster.java
+com/l2jserver/datapack/ai/npc/Dorian/Dorian.java
+com/l2jserver/datapack/ai/npc/DragonVortex/DragonVortex.java
+com/l2jserver/datapack/ai/npc/EchoCrystals/EchoCrystals.java
+com/l2jserver/datapack/ai/npc/FameManager/FameManager.java
+com/l2jserver/datapack/ai/npc/Fisherman/Fisherman.java
+com/l2jserver/datapack/ai/npc/ForgeOfTheGods/ForgeOfTheGods.java
+com/l2jserver/datapack/ai/npc/ForgeOfTheGods/Rooney.java
+com/l2jserver/datapack/ai/npc/ForgeOfTheGods/TarBeetle.java
+com/l2jserver/datapack/ai/npc/FortressArcherCaptain/FortressArcherCaptain.java
+com/l2jserver/datapack/ai/npc/FortressSiegeManager/FortressSiegeManager.java
+com/l2jserver/datapack/ai/npc/FreyasSteward/FreyasSteward.java
+com/l2jserver/datapack/ai/npc/Jinia/Jinia.java
+com/l2jserver/datapack/ai/npc/Katenar/Katenar.java
+com/l2jserver/datapack/ai/npc/KetraOrcSupport/KetraOrcSupport.java
+com/l2jserver/datapack/ai/npc/Kier/Kier.java
+com/l2jserver/datapack/ai/npc/ManorManager/ManorManager.java
+com/l2jserver/datapack/ai/npc/MercenaryCaptain/MercenaryCaptain.java
+com/l2jserver/datapack/ai/npc/Minigame/Minigame.java
+com/l2jserver/datapack/ai/npc/MonumentOfHeroes/MonumentOfHeroes.java
+com/l2jserver/datapack/ai/npc/NevitsHerald/NevitsHerald.java
+com/l2jserver/datapack/ai/npc/NpcBuffers/NpcBuffers.java
+com/l2jserver/datapack/ai/npc/NpcBuffers/impl/CabaleBuffer.java
+com/l2jserver/datapack/ai/npc/PriestOfBlessing/PriestOfBlessing.java
+com/l2jserver/datapack/ai/npc/Rignos/Rignos.java
+com/l2jserver/datapack/ai/npc/Rafforty/Rafforty.java
+com/l2jserver/datapack/ai/npc/Selina/Selina.java
+com/l2jserver/datapack/ai/npc/Sirra/Sirra.java
+com/l2jserver/datapack/ai/npc/SubclassCertification/SubclassCertification.java
+com/l2jserver/datapack/ai/npc/Summons/MerchantGolem/GolemTrader.java
+com/l2jserver/datapack/ai/npc/Summons/Pets/BabyPets.java
+com/l2jserver/datapack/ai/npc/Summons/Pets/ImprovedBabyPets.java
+com/l2jserver/datapack/ai/npc/Summons/Servitors/Servitors.java
+com/l2jserver/datapack/ai/npc/SupportUnitCaptain/SupportUnitCaptain.java
+com/l2jserver/datapack/ai/npc/SymbolMaker/SymbolMaker.java
+com/l2jserver/datapack/ai/npc/Teleports/Asher/Asher.java
+com/l2jserver/datapack/ai/npc/Teleports/CrumaTower/CrumaTower.java
+com/l2jserver/datapack/ai/npc/Teleports/DelusionTeleport/DelusionTeleport.java
+com/l2jserver/datapack/ai/npc/Teleports/ElrokiTeleporters/ElrokiTeleporters.java
+com/l2jserver/datapack/ai/npc/Teleports/GatekeeperSpirit/GatekeeperSpirit.java
+com/l2jserver/datapack/ai/npc/Teleports/GhostChamberlainOfElmoreden/GhostChamberlainOfElmoreden.java
+com/l2jserver/datapack/ai/npc/Teleports/GrandBossTeleporters/GrandBossTeleporters.java
+com/l2jserver/datapack/ai/npc/Teleports/HuntingGroundsTeleport/HuntingGroundsTeleport.java
+com/l2jserver/datapack/ai/npc/Teleports/Klemis/Klemis.java
+com/l2jserver/datapack/ai/npc/Teleports/MithrilMinesTeleporter/MithrilMinesTeleporter.java
+com/l2jserver/datapack/ai/npc/Teleports/NewbieGuide/NewbieGuide.java
+com/l2jserver/datapack/ai/npc/Teleports/NoblesseTeleport/NoblesseTeleport.java
+com/l2jserver/datapack/ai/npc/Teleports/OracleTeleport/OracleTeleport.java
+com/l2jserver/datapack/ai/npc/Teleports/PaganTeleporters/PaganTeleporters.java
+com/l2jserver/datapack/ai/npc/Teleports/SeparatedSoul/SeparatedSoul.java
+com/l2jserver/datapack/ai/npc/Teleports/StakatoNestTeleporter/StakatoNestTeleporter.java
+com/l2jserver/datapack/ai/npc/Teleports/SteelCitadelTeleport/SteelCitadelTeleport.java
+com/l2jserver/datapack/ai/npc/Teleports/StrongholdsTeleports/StrongholdsTeleports.java
+com/l2jserver/datapack/ai/npc/Teleports/Survivor/Survivor.java
+com/l2jserver/datapack/ai/npc/Teleports/TeleportToFantasy/TeleportToFantasy.java
+com/l2jserver/datapack/ai/npc/Teleports/TeleportToRaceTrack/TeleportToRaceTrack.java
+com/l2jserver/datapack/ai/npc/Teleports/TeleportToUndergroundColiseum/TeleportToUndergroundColiseum.java
+com/l2jserver/datapack/ai/npc/Teleports/TeleportWithCharm/TeleportWithCharm.java
+com/l2jserver/datapack/ai/npc/Teleports/ToIVortex/ToIVortex.java
+com/l2jserver/datapack/ai/npc/TerritoryManagers/TerritoryManagers.java
+com/l2jserver/datapack/ai/npc/TownPets/TownPets.java
+com/l2jserver/datapack/ai/npc/Trainers/HealerTrainer/HealerTrainer.java
+com/l2jserver/datapack/ai/npc/Tunatun/Tunatun.java
+com/l2jserver/datapack/ai/npc/VarkaSilenosSupport/VarkaSilenosSupport.java
+com/l2jserver/datapack/ai/npc/VillageMasters/FirstClassTransferTalk/FirstClassTransferTalk.java
+com/l2jserver/datapack/ai/npc/WeaverOlf/WeaverOlf.java
+com/l2jserver/datapack/ai/npc/WyvernManager/WyvernManager.java
 
 # Fantasy Isle
-ai/fantasy_isle/MC_Show.java
-ai/fantasy_isle/HandysBlockCheckerEvent.java
+com/l2jserver/datapack/ai/fantasy_isle/MC_Show.java
+com/l2jserver/datapack/ai/fantasy_isle/HandysBlockCheckerEvent.java
 
 # Group Template
-ai/group_template/AltarsOfSacrifice.java
-ai/group_template/BeastFarm.java
-ai/group_template/DenOfEvil.java
-ai/group_template/DragonValley.java
-ai/group_template/FairyTrees.java
-ai/group_template/FeedableBeasts.java
-ai/group_template/FleeMonsters.java
-ai/group_template/FrozenLabyrinth.java
-ai/group_template/GiantsCave.java
-ai/group_template/HotSprings.java
-ai/group_template/IsleOfPrayer.java
-ai/group_template/LairOfAntharas.java
-ai/group_template/MinionSpawnManager.java
-ai/group_template/MonasteryOfSilence.java
-ai/group_template/NonLethalableNpcs.java
-ai/group_template/NonTalkingNpcs.java
-ai/group_template/PavelArchaic.java
-ai/group_template/PlainsOfDion.java
-ai/group_template/PlainsOfLizardman.java
-ai/group_template/PolymorphingAngel.java
-ai/group_template/PolymorphingOnAttack.java
-ai/group_template/PrimevalIsle.java
-ai/group_template/PrisonGuards.java
-ai/group_template/RaidBossCancel.java
-ai/group_template/RandomSpawn.java
-ai/group_template/RangeGuard.java
-ai/group_template/Remnants.java
-ai/group_template/Sandstorms.java
-ai/group_template/SeeThroughSilentMove.java
-ai/group_template/SelMahumDrill.java
-ai/group_template/SelMahumSquad.java
-ai/group_template/SilentValley.java
-ai/group_template/StakatoNest.java
-ai/group_template/SummonPc.java
-ai/group_template/TurekOrcs.java
-ai/group_template/VarkaKetra.java
-ai/group_template/WarriorFishingBlock.java
+com/l2jserver/datapack/ai/group_template/AltarsOfSacrifice.java
+com/l2jserver/datapack/ai/group_template/BeastFarm.java
+com/l2jserver/datapack/ai/group_template/DenOfEvil.java
+com/l2jserver/datapack/ai/group_template/DragonValley.java
+com/l2jserver/datapack/ai/group_template/FairyTrees.java
+com/l2jserver/datapack/ai/group_template/FeedableBeasts.java
+com/l2jserver/datapack/ai/group_template/FleeMonsters.java
+com/l2jserver/datapack/ai/group_template/FrozenLabyrinth.java
+com/l2jserver/datapack/ai/group_template/GiantsCave.java
+com/l2jserver/datapack/ai/group_template/HotSprings.java
+com/l2jserver/datapack/ai/group_template/IsleOfPrayer.java
+com/l2jserver/datapack/ai/group_template/LairOfAntharas.java
+com/l2jserver/datapack/ai/group_template/MinionSpawnManager.java
+com/l2jserver/datapack/ai/group_template/MonasteryOfSilence.java
+com/l2jserver/datapack/ai/group_template/NonLethalableNpcs.java
+com/l2jserver/datapack/ai/group_template/NonTalkingNpcs.java
+com/l2jserver/datapack/ai/group_template/PavelArchaic.java
+com/l2jserver/datapack/ai/group_template/PlainsOfDion.java
+com/l2jserver/datapack/ai/group_template/PlainsOfLizardman.java
+com/l2jserver/datapack/ai/group_template/PolymorphingAngel.java
+com/l2jserver/datapack/ai/group_template/PolymorphingOnAttack.java
+com/l2jserver/datapack/ai/group_template/PrimevalIsle.java
+com/l2jserver/datapack/ai/group_template/PrisonGuards.java
+com/l2jserver/datapack/ai/group_template/RaidBossCancel.java
+com/l2jserver/datapack/ai/group_template/RandomSpawn.java
+com/l2jserver/datapack/ai/group_template/RangeGuard.java
+com/l2jserver/datapack/ai/group_template/Remnants.java
+com/l2jserver/datapack/ai/group_template/Sandstorms.java
+com/l2jserver/datapack/ai/group_template/SeeThroughSilentMove.java
+com/l2jserver/datapack/ai/group_template/SelMahumDrill.java
+com/l2jserver/datapack/ai/group_template/SelMahumSquad.java
+com/l2jserver/datapack/ai/group_template/SilentValley.java
+com/l2jserver/datapack/ai/group_template/StakatoNest.java
+com/l2jserver/datapack/ai/group_template/SummonPc.java
+com/l2jserver/datapack/ai/group_template/TurekOrcs.java
+com/l2jserver/datapack/ai/group_template/VarkaKetra.java
+com/l2jserver/datapack/ai/group_template/WarriorFishingBlock.java
 
 # Individual
-ai/individual/Antharas/Antharas.java
-ai/individual/Baium/Baium.java
-ai/individual/Sailren/Sailren.java
-ai/individual/Venom/Venom.java
-ai/individual/Anais.java
-ai/individual/Ballista.java
-ai/individual/Beleth.java
-ai/individual/BlackdaggerWing.java
-ai/individual/BleedingFly.java
-ai/individual/CrimsonHatuOtis.java
-ai/individual/Core.java
-ai/individual/DarkWaterDragon.java
-ai/individual/DivineBeast.java
-ai/individual/DrakosWarrior.java
-ai/individual/DrChaos.java
-ai/individual/DustRider.java
-ai/individual/EmeraldHorn.java
-ai/individual/Epidos.java
-ai/individual/EvasGiftBox.java
-ai/individual/FrightenedRagnaOrc.java
-ai/individual/Gordon.java
-ai/individual/GraveRobbers.java
-ai/individual/MuscleBomber.java
-ai/individual/Orfen.java
-ai/individual/QueenAnt.java
-ai/individual/QueenShyeed.java
-ai/individual/RagnaOrcCommander.java
-ai/individual/RagnaOrcHero.java
-ai/individual/RagnaOrcSeer.java
-ai/individual/NecromancerOfTheValley.java
-ai/individual/ShadowSummoner.java
-ai/individual/SinEater.java
-ai/individual/SinWardens.java
-ai/individual/Valakas.java
+com/l2jserver/datapack/ai/individual/Antharas/Antharas.java
+com/l2jserver/datapack/ai/individual/Baium/Baium.java
+com/l2jserver/datapack/ai/individual/Sailren/Sailren.java
+com/l2jserver/datapack/ai/individual/Venom/Venom.java
+com/l2jserver/datapack/ai/individual/Anais.java
+com/l2jserver/datapack/ai/individual/Ballista.java
+com/l2jserver/datapack/ai/individual/Beleth.java
+com/l2jserver/datapack/ai/individual/BlackdaggerWing.java
+com/l2jserver/datapack/ai/individual/BleedingFly.java
+com/l2jserver/datapack/ai/individual/CrimsonHatuOtis.java
+com/l2jserver/datapack/ai/individual/Core.java
+com/l2jserver/datapack/ai/individual/DarkWaterDragon.java
+com/l2jserver/datapack/ai/individual/DivineBeast.java
+com/l2jserver/datapack/ai/individual/DrakosWarrior.java
+com/l2jserver/datapack/ai/individual/DrChaos.java
+com/l2jserver/datapack/ai/individual/DustRider.java
+com/l2jserver/datapack/ai/individual/EmeraldHorn.java
+com/l2jserver/datapack/ai/individual/Epidos.java
+com/l2jserver/datapack/ai/individual/EvasGiftBox.java
+com/l2jserver/datapack/ai/individual/FrightenedRagnaOrc.java
+com/l2jserver/datapack/ai/individual/Gordon.java
+com/l2jserver/datapack/ai/individual/GraveRobbers.java
+com/l2jserver/datapack/ai/individual/MuscleBomber.java
+com/l2jserver/datapack/ai/individual/Orfen.java
+com/l2jserver/datapack/ai/individual/QueenAnt.java
+com/l2jserver/datapack/ai/individual/QueenShyeed.java
+com/l2jserver/datapack/ai/individual/RagnaOrcCommander.java
+com/l2jserver/datapack/ai/individual/RagnaOrcHero.java
+com/l2jserver/datapack/ai/individual/RagnaOrcSeer.java
+com/l2jserver/datapack/ai/individual/NecromancerOfTheValley.java
+com/l2jserver/datapack/ai/individual/ShadowSummoner.java
+com/l2jserver/datapack/ai/individual/SinEater.java
+com/l2jserver/datapack/ai/individual/SinWardens.java
+com/l2jserver/datapack/ai/individual/Valakas.java
 
 # Village Master
-village_master/Clan/Clan.java
-village_master/Alliance/Alliance.java
-village_master/DarkElfChange1/DarkElfChange1.java
-village_master/DarkElfChange2/DarkElfChange2.java
-village_master/DwarfBlacksmithChange1/DwarfBlacksmithChange1.java
-village_master/DwarfBlacksmithChange2/DwarfBlacksmithChange2.java
-village_master/DwarfWarehouseChange1/DwarfWarehouseChange1.java
-village_master/DwarfWarehouseChange2/DwarfWarehouseChange2.java
-village_master/ElfHumanClericChange2/ElfHumanClericChange2.java
-village_master/ElfHumanFighterChange1/ElfHumanFighterChange1.java
-village_master/ElfHumanFighterChange2/ElfHumanFighterChange2.java
-village_master/ElfHumanWizardChange1/ElfHumanWizardChange1.java
-village_master/ElfHumanWizardChange2/ElfHumanWizardChange2.java
-village_master/KamaelChange1/KamaelChange1.java
-village_master/KamaelChange2/KamaelChange2.java
-village_master/OrcChange1/OrcChange1.java
-village_master/OrcChange2/OrcChange2.java
+com/l2jserver/datapack/village_master/Clan/Clan.java
+com/l2jserver/datapack/village_master/Alliance/Alliance.java
+com/l2jserver/datapack/village_master/DarkElfChange1/DarkElfChange1.java
+com/l2jserver/datapack/village_master/DarkElfChange2/DarkElfChange2.java
+com/l2jserver/datapack/village_master/DwarfBlacksmithChange1/DwarfBlacksmithChange1.java
+com/l2jserver/datapack/village_master/DwarfBlacksmithChange2/DwarfBlacksmithChange2.java
+com/l2jserver/datapack/village_master/DwarfWarehouseChange1/DwarfWarehouseChange1.java
+com/l2jserver/datapack/village_master/DwarfWarehouseChange2/DwarfWarehouseChange2.java
+com/l2jserver/datapack/village_master/ElfHumanClericChange2/ElfHumanClericChange2.java
+com/l2jserver/datapack/village_master/ElfHumanFighterChange1/ElfHumanFighterChange1.java
+com/l2jserver/datapack/village_master/ElfHumanFighterChange2/ElfHumanFighterChange2.java
+com/l2jserver/datapack/village_master/ElfHumanWizardChange1/ElfHumanWizardChange1.java
+com/l2jserver/datapack/village_master/ElfHumanWizardChange2/ElfHumanWizardChange2.java
+com/l2jserver/datapack/village_master/KamaelChange1/KamaelChange1.java
+com/l2jserver/datapack/village_master/KamaelChange2/KamaelChange2.java
+com/l2jserver/datapack/village_master/OrcChange1/OrcChange1.java
+com/l2jserver/datapack/village_master/OrcChange2/OrcChange2.java
 
 # Instance Section
-instances/InstanceLoader.java
+com/l2jserver/datapack/instances/InstanceLoader.java
 
 # Gracia Section
-gracia/GraciaLoader.java
+com/l2jserver/datapack/gracia/GraciaLoader.java
 
 # Hellbound Section
-hellbound/HellboundLoader.java
+com/l2jserver/datapack/hellbound/HellboundLoader.java
 
 # Quests Section
-quests/QuestMasterHandler.java
-quests/TerritoryWarScripts/TerritoryWarSuperClass.java
+com/l2jserver/datapack/quests/QuestMasterHandler.java
+com/l2jserver/datapack/quests/TerritoryWarScripts/TerritoryWarSuperClass.java
 
 # Features
-features/SkillTransfer/SkillTransfer.java
+com/l2jserver/datapack/features/SkillTransfer/SkillTransfer.java
 
 # Custom
-custom/Validators/SubClassSkills.java
+com/l2jserver/datapack/custom/Validators/SubClassSkills.java
 
 # Custom Events
-custom/events/Elpies/Elpies.java
-custom/events/Rabbits/Rabbits.java
-custom/events/Race/Race.java
-custom/events/TvT/TvTManager/TvTManager.java
-custom/events/Wedding/Wedding.java
+com/l2jserver/datapack/custom/events/Elpies/Elpies.java
+com/l2jserver/datapack/custom/events/Rabbits/Rabbits.java
+com/l2jserver/datapack/custom/events/Race/Race.java
+com/l2jserver/datapack/custom/events/TvT/TvTManager/TvTManager.java
+com/l2jserver/datapack/custom/events/Wedding/Wedding.java
 
 # Vehicles
-vehicles/BoatTalkingGludin.java
-vehicles/BoatGiranTalking.java
-vehicles/BoatInnadrilTour.java
-vehicles/BoatGludinRune.java
-vehicles/BoatRunePrimeval.java
+com/l2jserver/datapack/vehicles/BoatTalkingGludin.java
+com/l2jserver/datapack/vehicles/BoatGiranTalking.java
+com/l2jserver/datapack/vehicles/BoatInnadrilTour.java
+com/l2jserver/datapack/vehicles/BoatGludinRune.java
+com/l2jserver/datapack/vehicles/BoatRunePrimeval.java
 
 # Conquerable Clan Halls
-conquerablehalls/flagwar/BanditStronghold/BanditStronghold.java
-conquerablehalls/flagwar/WildBeastReserve/WildBeastReserve.java
-conquerablehalls/DevastatedCastle/DevastatedCastle.java
-conquerablehalls/FortressOfResistance/FortressOfResistance.java
-conquerablehalls/FortressOfTheDead/FortressOfTheDead.java
-conquerablehalls/RainbowSpringsChateau/RainbowSpringsChateau.java
+com/l2jserver/datapack/conquerablehalls/flagwar/BanditStronghold/BanditStronghold.java
+com/l2jserver/datapack/conquerablehalls/flagwar/WildBeastReserve/WildBeastReserve.java
+com/l2jserver/datapack/conquerablehalls/DevastatedCastle/DevastatedCastle.java
+com/l2jserver/datapack/conquerablehalls/FortressOfResistance/FortressOfResistance.java
+com/l2jserver/datapack/conquerablehalls/FortressOfTheDead/FortressOfTheDead.java
+com/l2jserver/datapack/conquerablehalls/RainbowSpringsChateau/RainbowSpringsChateau.java
 
 # Events
-events/CharacterBirthday/CharacterBirthday.java
+com/l2jserver/datapack/events/CharacterBirthday/CharacterBirthday.java
 
 # Disabled by default events
-#events/GiftOfVitality/GiftOfVitality.java
-#events/HeavyMedal/HeavyMedal.java
-#events/TheValentineEvent/TheValentineEvent.java
-#events/FreyaCelebration/FreyaCelebration.java
-#events/MasterOfEnchanting/MasterOfEnchanting.java
-#events/LoveYourGatekeeper/LoveYourGatekeeper.java
+#com/l2jserver/datapack/events/GiftOfVitality/GiftOfVitality.java
+#com/l2jserver/datapack/events/HeavyMedal/HeavyMedal.java
+#com/l2jserver/datapack/events/TheValentineEvent/TheValentineEvent.java
+#com/l2jserver/datapack/events/FreyaCelebration/FreyaCelebration.java
+#com/l2jserver/datapack/events/MasterOfEnchanting/MasterOfEnchanting.java
+#com/l2jserver/datapack/events/LoveYourGatekeeper/LoveYourGatekeeper.java
-- 
GitLab