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