Просмотр исходного кода

Adding a new constructor to L2Spawn to use NPC ID.

Zoey76 10 лет назад
Родитель
Сommit
1b2092f80c
20 измененных файлов с 245 добавлено и 515 удалено
  1. 2 8
      L2J_Server/java/com/l2jserver/gameserver/SevenSignsFestival.java
  2. 1 1
      L2J_Server/java/com/l2jserver/gameserver/datatables/SpawnTable.java
  3. 2 11
      L2J_Server/java/com/l2jserver/gameserver/instancemanager/DimensionalRiftManager.java
  4. 10 20
      L2J_Server/java/com/l2jserver/gameserver/instancemanager/FortSiegeGuardManager.java
  5. 89 195
      L2J_Server/java/com/l2jserver/gameserver/instancemanager/FourSepulchersManager.java
  6. 9 42
      L2J_Server/java/com/l2jserver/gameserver/instancemanager/RaidBossSpawnManager.java
  7. 10 22
      L2J_Server/java/com/l2jserver/gameserver/instancemanager/SiegeGuardManager.java
  8. 12 22
      L2J_Server/java/com/l2jserver/gameserver/instancemanager/TerritoryWarManager.java
  9. 1 11
      L2J_Server/java/com/l2jserver/gameserver/model/AutoSpawnHandler.java
  10. 14 0
      L2J_Server/java/com/l2jserver/gameserver/model/L2Spawn.java
  11. 10 0
      L2J_Server/java/com/l2jserver/gameserver/model/actor/L2Npc.java
  12. 2 7
      L2J_Server/java/com/l2jserver/gameserver/model/entity/BlockCheckerEngine.java
  13. 37 80
      L2J_Server/java/com/l2jserver/gameserver/model/entity/Fort.java
  14. 10 22
      L2J_Server/java/com/l2jserver/gameserver/model/entity/FortSiege.java
  15. 30 41
      L2J_Server/java/com/l2jserver/gameserver/model/entity/Instance.java
  16. 1 6
      L2J_Server/java/com/l2jserver/gameserver/model/entity/L2Event.java
  17. 2 3
      L2J_Server/java/com/l2jserver/gameserver/model/entity/Siege.java
  18. 1 11
      L2J_Server/java/com/l2jserver/gameserver/model/entity/TvTEvent.java
  19. 1 5
      L2J_Server/java/com/l2jserver/gameserver/model/entity/clanhall/ClanHallSiegeEngine.java
  20. 1 8
      L2J_Server/java/com/l2jserver/gameserver/model/events/AbstractScript.java

+ 2 - 8
L2J_Server/java/com/l2jserver/gameserver/SevenSignsFestival.java

@@ -39,7 +39,6 @@ import com.l2jserver.gameserver.ai.CtrlIntention;
 import com.l2jserver.gameserver.data.sql.impl.CharNameTable;
 import com.l2jserver.gameserver.data.sql.impl.ClanTable;
 import com.l2jserver.gameserver.data.xml.impl.ExperienceData;
-import com.l2jserver.gameserver.data.xml.impl.NpcData;
 import com.l2jserver.gameserver.datatables.SpawnTable;
 import com.l2jserver.gameserver.model.L2Clan;
 import com.l2jserver.gameserver.model.L2Party;
@@ -53,7 +52,6 @@ import com.l2jserver.gameserver.model.TeleportWhereType;
 import com.l2jserver.gameserver.model.actor.L2Npc;
 import com.l2jserver.gameserver.model.actor.instance.L2FestivalMonsterInstance;
 import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
-import com.l2jserver.gameserver.model.actor.templates.L2NpcTemplate;
 import com.l2jserver.gameserver.model.items.instance.L2ItemInstance;
 import com.l2jserver.gameserver.network.NpcStringId;
 import com.l2jserver.gameserver.network.SystemMessageId;
@@ -2152,12 +2150,10 @@ public class SevenSignsFestival implements SpawnListener
 				}
 			}
 			
-			L2NpcTemplate witchTemplate = NpcData.getInstance().getTemplate(_witchSpawn._npcId);
-			
 			// Spawn the festival witch for this arena
 			try
 			{
-				L2Spawn npcSpawn = new L2Spawn(witchTemplate);
+				L2Spawn npcSpawn = new L2Spawn(_witchSpawn._npcId);
 				
 				npcSpawn.setX(_witchSpawn._x);
 				npcSpawn.setY(_witchSpawn._y);
@@ -2277,11 +2273,9 @@ public class SevenSignsFestival implements SpawnListener
 					continue;
 				}
 				
-				L2NpcTemplate npcTemplate = NpcData.getInstance().getTemplate(currSpawn._npcId);
-				
 				try
 				{
-					L2Spawn npcSpawn = new L2Spawn(npcTemplate);
+					L2Spawn npcSpawn = new L2Spawn(currSpawn._npcId);
 					
 					npcSpawn.setX(currSpawn._x);
 					npcSpawn.setY(currSpawn._y);

+ 1 - 1
L2J_Server/java/com/l2jserver/gameserver/datatables/SpawnTable.java

@@ -302,7 +302,7 @@ public final class SpawnTable implements IXmlReader
 		int ret = 0;
 		try
 		{
-			spawnDat = new L2Spawn(NpcData.getInstance().getTemplate(spawnInfo.getInt("npcTemplateid")));
+			spawnDat = new L2Spawn(spawnInfo.getInt("npcTemplateid"));
 			spawnDat.setAmount(spawnInfo.getInt("count", 1));
 			spawnDat.setX(spawnInfo.getInt("x", 0));
 			spawnDat.setY(spawnInfo.getInt("y", 0));

+ 2 - 11
L2J_Server/java/com/l2jserver/gameserver/instancemanager/DimensionalRiftManager.java

@@ -37,13 +37,11 @@ import org.w3c.dom.Node;
 
 import com.l2jserver.Config;
 import com.l2jserver.L2DatabaseFactory;
-import com.l2jserver.gameserver.data.xml.impl.NpcData;
 import com.l2jserver.gameserver.datatables.SpawnTable;
 import com.l2jserver.gameserver.model.DimensionalRiftRoom;
 import com.l2jserver.gameserver.model.L2Spawn;
 import com.l2jserver.gameserver.model.actor.L2Npc;
 import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
-import com.l2jserver.gameserver.model.actor.templates.L2NpcTemplate;
 import com.l2jserver.gameserver.model.entity.DimensionalRift;
 import com.l2jserver.gameserver.model.items.instance.L2ItemInstance;
 import com.l2jserver.gameserver.network.serverpackets.NpcHtmlMessage;
@@ -144,8 +142,6 @@ public final class DimensionalRiftManager
 			NamedNodeMap attrs;
 			byte type, roomId;
 			int mobId, x, y, z, delay, count;
-			L2Spawn spawnDat;
-			L2NpcTemplate template;
 			
 			for (Node rift = doc.getFirstChild(); rift != null; rift = rift.getNextSibling())
 			{
@@ -174,11 +170,6 @@ public final class DimensionalRiftManager
 											delay = Integer.parseInt(attrs.getNamedItem("delay").getNodeValue());
 											count = Integer.parseInt(attrs.getNamedItem("count").getNodeValue());
 											
-											template = NpcData.getInstance().getTemplate(mobId);
-											if (template == null)
-											{
-												_log.warning("Template " + mobId + " not found!");
-											}
 											if (!_rooms.containsKey(type))
 											{
 												_log.warning("Type " + type + " not found!");
@@ -195,9 +186,9 @@ public final class DimensionalRiftManager
 												y = riftRoom.getRandomY();
 												z = riftRoom.getTeleportCoorinates().getZ();
 												
-												if ((template != null) && _rooms.containsKey(type) && _rooms.get(type).containsKey(roomId))
+												if (_rooms.containsKey(type) && _rooms.get(type).containsKey(roomId))
 												{
-													spawnDat = new L2Spawn(template);
+													final L2Spawn spawnDat = new L2Spawn(mobId);
 													spawnDat.setAmount(1);
 													spawnDat.setX(x);
 													spawnDat.setY(y);

+ 10 - 20
L2J_Server/java/com/l2jserver/gameserver/instancemanager/FortSiegeGuardManager.java

@@ -28,9 +28,7 @@ import javolution.util.FastList;
 import javolution.util.FastMap;
 
 import com.l2jserver.L2DatabaseFactory;
-import com.l2jserver.gameserver.data.xml.impl.NpcData;
 import com.l2jserver.gameserver.model.L2Spawn;
-import com.l2jserver.gameserver.model.actor.templates.L2NpcTemplate;
 import com.l2jserver.gameserver.model.entity.Fort;
 
 public final class FortSiegeGuardManager
@@ -118,24 +116,16 @@ public final class FortSiegeGuardManager
 				FastList<L2Spawn> siegeGuardSpawns = new FastList<>();
 				while (rs.next())
 				{
-					L2NpcTemplate template = NpcData.getInstance().getTemplate(rs.getInt("npcId"));
-					if (template != null)
-					{
-						L2Spawn spawn = new L2Spawn(template);
-						spawn.setAmount(1);
-						spawn.setX(rs.getInt("x"));
-						spawn.setY(rs.getInt("y"));
-						spawn.setZ(rs.getInt("z"));
-						spawn.setHeading(rs.getInt("heading"));
-						spawn.setRespawnDelay(rs.getInt("respawnDelay"));
-						spawn.setLocationId(0);
-						
-						siegeGuardSpawns.add(spawn);
-					}
-					else
-					{
-						_log.warning("Missing npc data in npc table for ID: " + rs.getInt("npcId"));
-					}
+					final L2Spawn spawn = new L2Spawn(rs.getInt("npcId"));
+					spawn.setAmount(1);
+					spawn.setX(rs.getInt("x"));
+					spawn.setY(rs.getInt("y"));
+					spawn.setZ(rs.getInt("z"));
+					spawn.setHeading(rs.getInt("heading"));
+					spawn.setRespawnDelay(rs.getInt("respawnDelay"));
+					spawn.setLocationId(0);
+					
+					siegeGuardSpawns.add(spawn);
 				}
 				_siegeGuards.put(fortId, siegeGuardSpawns);
 			}

+ 89 - 195
L2J_Server/java/com/l2jserver/gameserver/instancemanager/FourSepulchersManager.java

@@ -38,7 +38,6 @@ import com.l2jserver.Config;
 import com.l2jserver.L2DatabaseFactory;
 import com.l2jserver.gameserver.ThreadPoolManager;
 import com.l2jserver.gameserver.data.xml.impl.DoorData;
-import com.l2jserver.gameserver.data.xml.impl.NpcData;
 import com.l2jserver.gameserver.datatables.SpawnTable;
 import com.l2jserver.gameserver.instancemanager.tasks.FourSepulchersChangeAttackTimeTask;
 import com.l2jserver.gameserver.instancemanager.tasks.FourSepulchersChangeCoolDownTimeTask;
@@ -50,7 +49,6 @@ import com.l2jserver.gameserver.model.actor.instance.L2DoorInstance;
 import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
 import com.l2jserver.gameserver.model.actor.instance.L2SepulcherMonsterInstance;
 import com.l2jserver.gameserver.model.actor.instance.L2SepulcherNpcInstance;
-import com.l2jserver.gameserver.model.actor.templates.L2NpcTemplate;
 import com.l2jserver.gameserver.model.items.instance.L2ItemInstance;
 import com.l2jserver.gameserver.model.quest.Quest;
 import com.l2jserver.gameserver.model.quest.QuestState;
@@ -278,25 +276,14 @@ public final class FourSepulchersManager
 	{
 		_managers = new FastList<>();
 		
-		int i = 31921;
-		for (L2Spawn spawnDat; i <= 31924; i++)
+		for (int npcId = 31921; npcId <= 31924; npcId++)
 		{
-			if ((i < 31921) || (i > 31924))
-			{
-				continue;
-			}
-			L2NpcTemplate template1 = NpcData.getInstance().getTemplate(i);
-			if (template1 == null)
-			{
-				continue;
-			}
 			try
 			{
-				spawnDat = new L2Spawn(template1);
-				
+				final L2Spawn spawnDat = new L2Spawn(npcId);
 				spawnDat.setAmount(1);
 				spawnDat.setRespawnDelay(60);
-				switch (i)
+				switch (npcId)
 				{
 					case 31921: // conquerors
 						spawnDat.setX(181061);
@@ -429,29 +416,18 @@ public final class FourSepulchersManager
 			ps.setInt(1, 0);
 			try (ResultSet rs = ps.executeQuery())
 			{
-				
-				L2Spawn spawnDat;
-				L2NpcTemplate template1;
 				while (rs.next())
 				{
-					template1 = NpcData.getInstance().getTemplate(rs.getInt("npc_templateid"));
-					if (template1 != null)
-					{
-						spawnDat = new L2Spawn(template1);
-						spawnDat.setAmount(rs.getInt("count"));
-						spawnDat.setX(rs.getInt("locx"));
-						spawnDat.setY(rs.getInt("locy"));
-						spawnDat.setZ(rs.getInt("locz"));
-						spawnDat.setHeading(rs.getInt("heading"));
-						spawnDat.setRespawnDelay(rs.getInt("respawn_delay"));
-						SpawnTable.getInstance().addNewSpawn(spawnDat, false);
-						int keyNpcId = rs.getInt("key_npc_id");
-						_mysteriousBoxSpawns.put(keyNpcId, spawnDat);
-					}
-					else
-					{
-						_log.warning("FourSepulchersManager.LoadMysteriousBox: Data missing in NPC table for ID: " + rs.getInt("npc_templateid") + ".");
-					}
+					final L2Spawn spawnDat = new L2Spawn(rs.getInt("npc_templateid"));
+					spawnDat.setAmount(rs.getInt("count"));
+					spawnDat.setX(rs.getInt("locx"));
+					spawnDat.setY(rs.getInt("locy"));
+					spawnDat.setZ(rs.getInt("locz"));
+					spawnDat.setHeading(rs.getInt("heading"));
+					spawnDat.setRespawnDelay(rs.getInt("respawn_delay"));
+					SpawnTable.getInstance().addNewSpawn(spawnDat, false);
+					int keyNpcId = rs.getInt("key_npc_id");
+					_mysteriousBoxSpawns.put(keyNpcId, spawnDat);
 				}
 			}
 			_log.info(getClass().getSimpleName() + ": loaded " + _mysteriousBoxSpawns.size() + " Mysterious-Box spawns.");
@@ -465,29 +441,19 @@ public final class FourSepulchersManager
 	
 	private void initKeyBoxSpawns()
 	{
-		L2Spawn spawnDat;
-		L2NpcTemplate template;
 		for (Entry<Integer, Integer> keyNpc : _keyBoxNpc.entrySet())
 		{
 			try
 			{
-				template = NpcData.getInstance().getTemplate(keyNpc.getValue());
-				if (template != null)
-				{
-					spawnDat = new L2Spawn(template);
-					spawnDat.setAmount(1);
-					spawnDat.setX(0);
-					spawnDat.setY(0);
-					spawnDat.setZ(0);
-					spawnDat.setHeading(0);
-					spawnDat.setRespawnDelay(3600);
-					SpawnTable.getInstance().addNewSpawn(spawnDat, false);
-					_keyBoxSpawns.put(keyNpc.getKey(), spawnDat);
-				}
-				else
-				{
-					_log.warning("FourSepulchersManager.InitKeyBoxSpawns: Data missing in NPC table for ID: " + keyNpc.getValue() + ".");
-				}
+				final L2Spawn spawnDat = new L2Spawn(keyNpc.getValue());
+				spawnDat.setAmount(1);
+				spawnDat.setX(0);
+				spawnDat.setY(0);
+				spawnDat.setZ(0);
+				spawnDat.setHeading(0);
+				spawnDat.setRespawnDelay(3600);
+				SpawnTable.getInstance().addNewSpawn(spawnDat, false);
+				_keyBoxSpawns.put(keyNpc.getKey(), spawnDat);
 			}
 			catch (Exception e)
 			{
@@ -508,8 +474,6 @@ public final class FourSepulchersManager
 			try (ResultSet rs1 = ps1.executeQuery();
 				PreparedStatement ps2 = con.prepareStatement("SELECT id, count, npc_templateid, locx, locy, locz, heading, respawn_delay, key_npc_id FROM four_sepulchers_spawnlist Where key_npc_id = ? and spawntype = ? ORDER BY id"))
 			{
-				L2Spawn spawnDat;
-				L2NpcTemplate template1;
 				while (rs1.next())
 				{
 					int keyNpcId = rs1.getInt("key_npc_id");
@@ -521,24 +485,16 @@ public final class FourSepulchersManager
 						_physicalSpawns = new FastList<>();
 						while (rs2.next())
 						{
-							template1 = NpcData.getInstance().getTemplate(rs2.getInt("npc_templateid"));
-							if (template1 != null)
-							{
-								spawnDat = new L2Spawn(template1);
-								spawnDat.setAmount(rs2.getInt("count"));
-								spawnDat.setX(rs2.getInt("locx"));
-								spawnDat.setY(rs2.getInt("locy"));
-								spawnDat.setZ(rs2.getInt("locz"));
-								spawnDat.setHeading(rs2.getInt("heading"));
-								spawnDat.setRespawnDelay(rs2.getInt("respawn_delay"));
-								SpawnTable.getInstance().addNewSpawn(spawnDat, false);
-								_physicalSpawns.add(spawnDat);
-								loaded++;
-							}
-							else
-							{
-								_log.warning("FourSepulchersManager.LoadPhysicalMonsters: Data missing in NPC table for ID: " + rs2.getInt("npc_templateid") + ".");
-							}
+							final L2Spawn spawnDat = new L2Spawn(rs2.getInt("npc_templateid"));
+							spawnDat.setAmount(rs2.getInt("count"));
+							spawnDat.setX(rs2.getInt("locx"));
+							spawnDat.setY(rs2.getInt("locy"));
+							spawnDat.setZ(rs2.getInt("locz"));
+							spawnDat.setHeading(rs2.getInt("heading"));
+							spawnDat.setRespawnDelay(rs2.getInt("respawn_delay"));
+							SpawnTable.getInstance().addNewSpawn(spawnDat, false);
+							_physicalSpawns.add(spawnDat);
+							loaded++;
 						}
 					}
 					ps2.clearParameters();
@@ -565,8 +521,6 @@ public final class FourSepulchersManager
 			try (ResultSet rs1 = ps1.executeQuery();
 				PreparedStatement ps2 = con.prepareStatement("SELECT id, count, npc_templateid, locx, locy, locz, heading, respawn_delay, key_npc_id FROM four_sepulchers_spawnlist WHERE key_npc_id = ? AND spawntype = ? ORDER BY id"))
 			{
-				L2Spawn spawnDat;
-				L2NpcTemplate template1;
 				while (rs1.next())
 				{
 					int keyNpcId = rs1.getInt("key_npc_id");
@@ -579,24 +533,16 @@ public final class FourSepulchersManager
 						
 						while (rset2.next())
 						{
-							template1 = NpcData.getInstance().getTemplate(rset2.getInt("npc_templateid"));
-							if (template1 != null)
-							{
-								spawnDat = new L2Spawn(template1);
-								spawnDat.setAmount(rset2.getInt("count"));
-								spawnDat.setX(rset2.getInt("locx"));
-								spawnDat.setY(rset2.getInt("locy"));
-								spawnDat.setZ(rset2.getInt("locz"));
-								spawnDat.setHeading(rset2.getInt("heading"));
-								spawnDat.setRespawnDelay(rset2.getInt("respawn_delay"));
-								SpawnTable.getInstance().addNewSpawn(spawnDat, false);
-								_magicalSpawns.add(spawnDat);
-								loaded++;
-							}
-							else
-							{
-								_log.warning("FourSepulchersManager.LoadMagicalMonsters: Data missing in NPC table for ID: " + rset2.getInt("npc_templateid") + ".");
-							}
+							final L2Spawn spawnDat = new L2Spawn(rset2.getInt("npc_templateid"));
+							spawnDat.setAmount(rset2.getInt("count"));
+							spawnDat.setX(rset2.getInt("locx"));
+							spawnDat.setY(rset2.getInt("locy"));
+							spawnDat.setZ(rset2.getInt("locz"));
+							spawnDat.setHeading(rset2.getInt("heading"));
+							spawnDat.setRespawnDelay(rset2.getInt("respawn_delay"));
+							SpawnTable.getInstance().addNewSpawn(spawnDat, false);
+							_magicalSpawns.add(spawnDat);
+							loaded++;
 						}
 					}
 					ps2.clearParameters();
@@ -624,8 +570,6 @@ public final class FourSepulchersManager
 			try (ResultSet rs1 = ps1.executeQuery();
 				PreparedStatement ps2 = con.prepareStatement("SELECT id, count, npc_templateid, locx, locy, locz, heading, respawn_delay, key_npc_id FROM four_sepulchers_spawnlist WHERE key_npc_id = ? AND spawntype = ? ORDER BY id"))
 			{
-				L2Spawn spawnDat;
-				L2NpcTemplate template1;
 				while (rs1.next())
 				{
 					int keyNpcId = rs1.getInt("key_npc_id");
@@ -640,24 +584,16 @@ public final class FourSepulchersManager
 						
 						while (rset2.next())
 						{
-							template1 = NpcData.getInstance().getTemplate(rset2.getInt("npc_templateid"));
-							if (template1 != null)
-							{
-								spawnDat = new L2Spawn(template1);
-								spawnDat.setAmount(rset2.getInt("count"));
-								spawnDat.setX(rset2.getInt("locx"));
-								spawnDat.setY(rset2.getInt("locy"));
-								spawnDat.setZ(rset2.getInt("locz"));
-								spawnDat.setHeading(rset2.getInt("heading"));
-								spawnDat.setRespawnDelay(rset2.getInt("respawn_delay"));
-								SpawnTable.getInstance().addNewSpawn(spawnDat, false);
-								_dukeFinalSpawns.add(spawnDat);
-								loaded++;
-							}
-							else
-							{
-								_log.warning("FourSepulchersManager.LoadDukeMonsters: Data missing in NPC table for ID: " + rset2.getInt("npc_templateid") + ".");
-							}
+							final L2Spawn spawnDat = new L2Spawn(rset2.getInt("npc_templateid"));
+							spawnDat.setAmount(rset2.getInt("count"));
+							spawnDat.setX(rset2.getInt("locx"));
+							spawnDat.setY(rset2.getInt("locy"));
+							spawnDat.setZ(rset2.getInt("locz"));
+							spawnDat.setHeading(rset2.getInt("heading"));
+							spawnDat.setRespawnDelay(rset2.getInt("respawn_delay"));
+							SpawnTable.getInstance().addNewSpawn(spawnDat, false);
+							_dukeFinalSpawns.add(spawnDat);
+							loaded++;
 						}
 					}
 					ps2.clearParameters();
@@ -685,8 +621,6 @@ public final class FourSepulchersManager
 			try (ResultSet rs1 = ps1.executeQuery();
 				PreparedStatement ps2 = con.prepareStatement("SELECT id, count, npc_templateid, locx, locy, locz, heading, respawn_delay, key_npc_id FROM four_sepulchers_spawnlist WHERE key_npc_id = ? and spawntype = ? ORDER BY id"))
 			{
-				L2Spawn spawnDat;
-				L2NpcTemplate template1;
 				while (rs1.next())
 				{
 					int keyNpcId = rs1.getInt("key_npc_id");
@@ -699,24 +633,16 @@ public final class FourSepulchersManager
 						
 						while (rs2.next())
 						{
-							template1 = NpcData.getInstance().getTemplate(rs2.getInt("npc_templateid"));
-							if (template1 != null)
-							{
-								spawnDat = new L2Spawn(template1);
-								spawnDat.setAmount(rs2.getInt("count"));
-								spawnDat.setX(rs2.getInt("locx"));
-								spawnDat.setY(rs2.getInt("locy"));
-								spawnDat.setZ(rs2.getInt("locz"));
-								spawnDat.setHeading(rs2.getInt("heading"));
-								spawnDat.setRespawnDelay(rs2.getInt("respawn_delay"));
-								SpawnTable.getInstance().addNewSpawn(spawnDat, false);
-								_emperorsGraveSpawns.add(spawnDat);
-								loaded++;
-							}
-							else
-							{
-								_log.warning("FourSepulchersManager.LoadEmperorsGraveMonsters: Data missing in NPC table for ID: " + rs2.getInt("npc_templateid") + ".");
-							}
+							final L2Spawn spawnDat = new L2Spawn(rs2.getInt("npc_templateid"));
+							spawnDat.setAmount(rs2.getInt("count"));
+							spawnDat.setX(rs2.getInt("locx"));
+							spawnDat.setY(rs2.getInt("locy"));
+							spawnDat.setZ(rs2.getInt("locz"));
+							spawnDat.setHeading(rs2.getInt("heading"));
+							spawnDat.setRespawnDelay(rs2.getInt("respawn_delay"));
+							SpawnTable.getInstance().addNewSpawn(spawnDat, false);
+							_emperorsGraveSpawns.add(spawnDat);
+							loaded++;
 						}
 					}
 					ps2.clearParameters();
@@ -742,66 +668,43 @@ public final class FourSepulchersManager
 			31944
 		};
 		
-		L2Spawn spawnDat;
-		L2NpcTemplate template;
-		
 		_shadowSpawns.clear();
 		
 		for (int i = 0; i <= 3; i++)
 		{
-			template = NpcData.getInstance().getTemplate(_shadowSpawnLoc[locNo][i][0]);
-			if (template != null)
+			try
 			{
-				try
-				{
-					spawnDat = new L2Spawn(template);
-					spawnDat.setAmount(1);
-					spawnDat.setX(_shadowSpawnLoc[locNo][i][1]);
-					spawnDat.setY(_shadowSpawnLoc[locNo][i][2]);
-					spawnDat.setZ(_shadowSpawnLoc[locNo][i][3]);
-					spawnDat.setHeading(_shadowSpawnLoc[locNo][i][4]);
-					SpawnTable.getInstance().addNewSpawn(spawnDat, false);
-					int keyNpcId = gateKeeper[i];
-					_shadowSpawns.put(keyNpcId, spawnDat);
-				}
-				catch (Exception e)
-				{
-					_log.log(Level.SEVERE, "Error on InitLocationShadowSpawns", e);
-				}
+				final L2Spawn spawnDat = new L2Spawn(_shadowSpawnLoc[locNo][i][0]);
+				spawnDat.setAmount(1);
+				spawnDat.setX(_shadowSpawnLoc[locNo][i][1]);
+				spawnDat.setY(_shadowSpawnLoc[locNo][i][2]);
+				spawnDat.setZ(_shadowSpawnLoc[locNo][i][3]);
+				spawnDat.setHeading(_shadowSpawnLoc[locNo][i][4]);
+				SpawnTable.getInstance().addNewSpawn(spawnDat, false);
+				_shadowSpawns.put(gateKeeper[i], spawnDat);
 			}
-			else
+			catch (Exception e)
 			{
-				_log.warning("FourSepulchersManager.InitLocationShadowSpawns: Data missing in NPC table for ID: " + _shadowSpawnLoc[locNo][i][0] + ".");
+				_log.log(Level.SEVERE, "Error on InitLocationShadowSpawns", e);
 			}
 		}
 	}
 	
 	protected void initExecutionerSpawns()
 	{
-		L2Spawn spawnDat;
-		L2NpcTemplate template;
-		
 		for (int keyNpcId : _victim.keySet())
 		{
 			try
 			{
-				template = NpcData.getInstance().getTemplate(_victim.get(keyNpcId));
-				if (template != null)
-				{
-					spawnDat = new L2Spawn(template);
-					spawnDat.setAmount(1);
-					spawnDat.setX(0);
-					spawnDat.setY(0);
-					spawnDat.setZ(0);
-					spawnDat.setHeading(0);
-					spawnDat.setRespawnDelay(3600);
-					SpawnTable.getInstance().addNewSpawn(spawnDat, false);
-					_executionerSpawns.put(keyNpcId, spawnDat);
-				}
-				else
-				{
-					_log.warning("FourSepulchersManager.InitExecutionerSpawns: Data missing in NPC table for ID: " + _victim.get(keyNpcId) + ".");
-				}
+				final L2Spawn spawnDat = new L2Spawn(_victim.get(keyNpcId));
+				spawnDat.setAmount(1);
+				spawnDat.setX(0);
+				spawnDat.setY(0);
+				spawnDat.setZ(0);
+				spawnDat.setHeading(0);
+				spawnDat.setRespawnDelay(3600);
+				SpawnTable.getInstance().addNewSpawn(spawnDat, false);
+				_executionerSpawns.put(keyNpcId, spawnDat);
 			}
 			catch (Exception e)
 			{
@@ -1185,7 +1088,6 @@ public final class FourSepulchersManager
 		
 		List<L2Spawn> monsterList;
 		List<L2SepulcherMonsterInstance> mobs = new FastList<>();
-		L2Spawn keyBoxMobSpawn;
 		
 		if (Rnd.get(2) == 0)
 		{
@@ -1231,21 +1133,13 @@ public final class FourSepulchersManager
 				{
 					try
 					{
-						L2NpcTemplate template = NpcData.getInstance().getTemplate(18149);
-						if (template != null)
-						{
-							keyBoxMobSpawn = new L2Spawn(template);
-							keyBoxMobSpawn.setAmount(1);
-							keyBoxMobSpawn.setLocation(spawnDat.getLocation());
-							keyBoxMobSpawn.setRespawnDelay(3600);
-							SpawnTable.getInstance().addNewSpawn(keyBoxMobSpawn, false);
-							mob = (L2SepulcherMonsterInstance) keyBoxMobSpawn.doSpawn();
-							keyBoxMobSpawn.stopRespawn();
-						}
-						else
-						{
-							_log.warning("FourSepulchersManager.SpawnMonster: Data missing in NPC table for ID: 18149");
-						}
+						final L2Spawn keyBoxMobSpawn = new L2Spawn(18149);
+						keyBoxMobSpawn.setAmount(1);
+						keyBoxMobSpawn.setLocation(spawnDat.getLocation());
+						keyBoxMobSpawn.setRespawnDelay(3600);
+						SpawnTable.getInstance().addNewSpawn(keyBoxMobSpawn, false);
+						mob = (L2SepulcherMonsterInstance) keyBoxMobSpawn.doSpawn();
+						keyBoxMobSpawn.stopRespawn();
 					}
 					catch (Exception e)
 					{

+ 9 - 42
L2J_Server/java/com/l2jserver/gameserver/instancemanager/RaidBossSpawnManager.java

@@ -33,12 +33,10 @@ import javolution.util.FastMap;
 import com.l2jserver.Config;
 import com.l2jserver.L2DatabaseFactory;
 import com.l2jserver.gameserver.ThreadPoolManager;
-import com.l2jserver.gameserver.data.xml.impl.NpcData;
 import com.l2jserver.gameserver.datatables.SpawnTable;
 import com.l2jserver.gameserver.model.L2Spawn;
 import com.l2jserver.gameserver.model.StatsSet;
 import com.l2jserver.gameserver.model.actor.instance.L2RaidBossInstance;
-import com.l2jserver.gameserver.model.actor.templates.L2NpcTemplate;
 import com.l2jserver.util.Rnd;
 
 /**
@@ -83,29 +81,17 @@ public class RaidBossSpawnManager
 			PreparedStatement statement = con.prepareStatement("SELECT * FROM raidboss_spawnlist ORDER BY boss_id");
 			ResultSet rset = statement.executeQuery())
 		{
-			L2Spawn spawnDat;
-			L2NpcTemplate template;
-			long respawnTime;
 			while (rset.next())
 			{
-				template = getValidTemplate(rset.getInt("boss_id"));
-				if (template != null)
-				{
-					spawnDat = new L2Spawn(template);
-					spawnDat.setX(rset.getInt("loc_x"));
-					spawnDat.setY(rset.getInt("loc_y"));
-					spawnDat.setZ(rset.getInt("loc_z"));
-					spawnDat.setAmount(rset.getInt("amount"));
-					spawnDat.setHeading(rset.getInt("heading"));
-					spawnDat.setRespawnDelay(rset.getInt("respawn_delay"), rset.getInt("respawn_random"));
-					respawnTime = rset.getLong("respawn_time");
-					
-					addNewSpawn(spawnDat, respawnTime, rset.getDouble("currentHP"), rset.getDouble("currentMP"), false);
-				}
-				else
-				{
-					_log.warning(getClass().getSimpleName() + ": Could not load raidboss #" + rset.getInt("boss_id") + " from DB");
-				}
+				final L2Spawn spawnDat = new L2Spawn(rset.getInt("boss_id"));
+				spawnDat.setX(rset.getInt("loc_x"));
+				spawnDat.setY(rset.getInt("loc_y"));
+				spawnDat.setZ(rset.getInt("loc_z"));
+				spawnDat.setAmount(rset.getInt("amount"));
+				spawnDat.setHeading(rset.getInt("heading"));
+				spawnDat.setRespawnDelay(rset.getInt("respawn_delay"), rset.getInt("respawn_random"));
+				
+				addNewSpawn(spawnDat, rset.getLong("respawn_time"), rset.getDouble("currentHP"), rset.getDouble("currentMP"), false);
 			}
 			
 			_log.info(getClass().getSimpleName() + ": Loaded " + _bosses.size() + " Instances");
@@ -482,25 +468,6 @@ public class RaidBossSpawnManager
 		}
 	}
 	
-	/**
-	 * Gets the valid template.
-	 * @param bossId the boss id
-	 * @return the valid template
-	 */
-	public L2NpcTemplate getValidTemplate(int bossId)
-	{
-		final L2NpcTemplate template = NpcData.getInstance().getTemplate(bossId);
-		if (template == null)
-		{
-			return null;
-		}
-		if (!template.isType("L2RaidBoss"))
-		{
-			return null;
-		}
-		return template;
-	}
-	
 	/**
 	 * Notify spawn night boss.
 	 * @param raidboss the raidboss

+ 10 - 22
L2J_Server/java/com/l2jserver/gameserver/instancemanager/SiegeGuardManager.java

@@ -28,10 +28,8 @@ import java.util.logging.Logger;
 import javolution.util.FastList;
 
 import com.l2jserver.L2DatabaseFactory;
-import com.l2jserver.gameserver.data.xml.impl.NpcData;
 import com.l2jserver.gameserver.model.L2Spawn;
 import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
-import com.l2jserver.gameserver.model.actor.templates.L2NpcTemplate;
 import com.l2jserver.gameserver.model.entity.Castle;
 
 public final class SiegeGuardManager
@@ -209,28 +207,18 @@ public final class SiegeGuardManager
 			}
 			try (ResultSet rs = ps.executeQuery())
 			{
-				L2Spawn spawn1;
-				L2NpcTemplate template1;
 				while (rs.next())
 				{
-					template1 = NpcData.getInstance().getTemplate(rs.getInt("npcId"));
-					if (template1 != null)
-					{
-						spawn1 = new L2Spawn(template1);
-						spawn1.setAmount(1);
-						spawn1.setX(rs.getInt("x"));
-						spawn1.setY(rs.getInt("y"));
-						spawn1.setZ(rs.getInt("z"));
-						spawn1.setHeading(rs.getInt("heading"));
-						spawn1.setRespawnDelay(rs.getInt("respawnDelay"));
-						spawn1.setLocationId(0);
-						
-						_siegeGuardSpawn.add(spawn1);
-					}
-					else
-					{
-						_log.warning(getClass().getSimpleName() + ": Missing npc data in npc table for id: " + rs.getInt("npcId"));
-					}
+					final L2Spawn spawn = new L2Spawn(rs.getInt("npcId"));
+					spawn.setAmount(1);
+					spawn.setX(rs.getInt("x"));
+					spawn.setY(rs.getInt("y"));
+					spawn.setZ(rs.getInt("z"));
+					spawn.setHeading(rs.getInt("heading"));
+					spawn.setRespawnDelay(rs.getInt("respawnDelay"));
+					spawn.setLocationId(0);
+					
+					_siegeGuardSpawn.add(spawn);
 				}
 			}
 		}

+ 12 - 22
L2J_Server/java/com/l2jserver/gameserver/instancemanager/TerritoryWarManager.java

@@ -37,7 +37,6 @@ import com.l2jserver.Config;
 import com.l2jserver.L2DatabaseFactory;
 import com.l2jserver.gameserver.ThreadPoolManager;
 import com.l2jserver.gameserver.data.sql.impl.ClanTable;
-import com.l2jserver.gameserver.data.xml.impl.NpcData;
 import com.l2jserver.gameserver.data.xml.impl.SkillTreesData;
 import com.l2jserver.gameserver.datatables.SkillData;
 import com.l2jserver.gameserver.model.L2Clan;
@@ -51,7 +50,6 @@ import com.l2jserver.gameserver.model.actor.L2Npc;
 import com.l2jserver.gameserver.model.actor.instance.L2DoorInstance;
 import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
 import com.l2jserver.gameserver.model.actor.instance.L2SiegeFlagInstance;
-import com.l2jserver.gameserver.model.actor.templates.L2NpcTemplate;
 import com.l2jserver.gameserver.model.entity.Castle;
 import com.l2jserver.gameserver.model.entity.Fort;
 import com.l2jserver.gameserver.model.entity.Siegable;
@@ -769,29 +767,21 @@ public final class TerritoryWarManager implements Siegable
 	
 	public L2Npc spawnNPC(int npcId, Location loc)
 	{
-		L2NpcTemplate template = NpcData.getInstance().getTemplate(npcId);
-		if (template != null)
+		L2Spawn spawnDat;
+		try
 		{
-			L2Spawn spawnDat;
-			try
-			{
-				spawnDat = new L2Spawn(template);
-				spawnDat.setAmount(1);
-				spawnDat.setX(loc.getX());
-				spawnDat.setY(loc.getY());
-				spawnDat.setZ(loc.getZ());
-				spawnDat.setHeading(loc.getHeading());
-				spawnDat.stopRespawn();
-				return spawnDat.spawnOne(false);
-			}
-			catch (Exception e)
-			{
-				_log.log(Level.WARNING, getClass().getSimpleName() + ": " + e.getMessage(), e);
-			}
+			spawnDat = new L2Spawn(npcId);
+			spawnDat.setAmount(1);
+			spawnDat.setX(loc.getX());
+			spawnDat.setY(loc.getY());
+			spawnDat.setZ(loc.getZ());
+			spawnDat.setHeading(loc.getHeading());
+			spawnDat.stopRespawn();
+			return spawnDat.spawnOne(false);
 		}
-		else
+		catch (Exception e)
 		{
-			_log.warning(getClass().getSimpleName() + ": Data missing in NPC table for ID: " + npcId + ".");
+			_log.log(Level.WARNING, getClass().getSimpleName() + ": " + e.getMessage(), e);
 		}
 		return null;
 	}

+ 1 - 11
L2J_Server/java/com/l2jserver/gameserver/model/AutoSpawnHandler.java

@@ -34,12 +34,10 @@ import javolution.util.FastMap;
 
 import com.l2jserver.L2DatabaseFactory;
 import com.l2jserver.gameserver.ThreadPoolManager;
-import com.l2jserver.gameserver.data.xml.impl.NpcData;
 import com.l2jserver.gameserver.datatables.SpawnTable;
 import com.l2jserver.gameserver.idfactory.IdFactory;
 import com.l2jserver.gameserver.instancemanager.MapRegionManager;
 import com.l2jserver.gameserver.model.actor.L2Npc;
-import com.l2jserver.gameserver.model.actor.templates.L2NpcTemplate;
 import com.l2jserver.gameserver.model.interfaces.IIdentifiable;
 import com.l2jserver.gameserver.util.Broadcast;
 import com.l2jserver.util.Rnd;
@@ -466,15 +464,7 @@ public class AutoSpawnHandler
 				final int z = locationList[locationIndex].getZ();
 				final int heading = locationList[locationIndex].getHeading();
 				
-				// Fetch the template for this NPC ID and create a new spawn.
-				L2NpcTemplate npcTemp = NpcData.getInstance().getTemplate(spawnInst.getId());
-				if (npcTemp == null)
-				{
-					_log.warning("Couldnt find NPC id" + spawnInst.getId() + " Try to update your DP");
-					return;
-				}
-				
-				L2Spawn newSpawn = new L2Spawn(npcTemp);
+				final L2Spawn newSpawn = new L2Spawn(spawnInst.getId());
 				newSpawn.setX(x);
 				newSpawn.setY(y);
 				newSpawn.setZ(z);

+ 14 - 0
L2J_Server/java/com/l2jserver/gameserver/model/L2Spawn.java

@@ -31,6 +31,7 @@ import com.l2jserver.Config;
 import com.l2jserver.gameserver.GeoData;
 import com.l2jserver.gameserver.ThreadPoolManager;
 import com.l2jserver.gameserver.data.sql.impl.TerritoryTable;
+import com.l2jserver.gameserver.data.xml.impl.NpcData;
 import com.l2jserver.gameserver.datatables.NpcPersonalAIData;
 import com.l2jserver.gameserver.model.actor.L2Attackable;
 import com.l2jserver.gameserver.model.actor.L2Npc;
@@ -147,6 +148,19 @@ public class L2Spawn implements IPositionable, IIdentifiable, INamable
 		_constructor = Class.forName(className).asSubclass(L2Npc.class).getConstructor(L2NpcTemplate.class);
 	}
 	
+	/**
+	 * Creates a spawn.
+	 * @param npcId the NPC ID
+	 * @throws ClassCastException
+	 * @throws NoSuchMethodException
+	 * @throws ClassNotFoundException
+	 * @throws SecurityException
+	 */
+	public L2Spawn(int npcId) throws SecurityException, ClassNotFoundException, NoSuchMethodException, ClassCastException
+	{
+		this(NpcData.getInstance().getTemplate(npcId));
+	}
+	
 	/**
 	 * @return the maximum number of L2NpcInstance that this L2Spawn can manage.
 	 */

+ 10 - 0
L2J_Server/java/com/l2jserver/gameserver/model/actor/L2Npc.java

@@ -34,6 +34,7 @@ import com.l2jserver.gameserver.SevenSigns;
 import com.l2jserver.gameserver.SevenSignsFestival;
 import com.l2jserver.gameserver.ThreadPoolManager;
 import com.l2jserver.gameserver.cache.HtmCache;
+import com.l2jserver.gameserver.data.xml.impl.NpcData;
 import com.l2jserver.gameserver.datatables.ItemTable;
 import com.l2jserver.gameserver.datatables.NpcPersonalAIData;
 import com.l2jserver.gameserver.enums.AISkillScope;
@@ -174,6 +175,15 @@ public class L2Npc extends L2Character
 		setIsFlying(template.isFlying());
 	}
 	
+	/**
+	 * Creates a NPC.
+	 * @param npcId the NPC ID
+	 */
+	public L2Npc(int npcId)
+	{
+		this(NpcData.getInstance().getTemplate(npcId));
+	}
+	
 	public int getSoulShotChance()
 	{
 		return getTemplate().getSoulShotChance();

+ 2 - 7
L2J_Server/java/com/l2jserver/gameserver/model/entity/BlockCheckerEngine.java

@@ -28,7 +28,6 @@ import javolution.util.FastMap;
 
 import com.l2jserver.Config;
 import com.l2jserver.gameserver.ThreadPoolManager;
-import com.l2jserver.gameserver.data.xml.impl.NpcData;
 import com.l2jserver.gameserver.datatables.SkillData;
 import com.l2jserver.gameserver.datatables.SpawnTable;
 import com.l2jserver.gameserver.enums.Team;
@@ -38,7 +37,6 @@ import com.l2jserver.gameserver.model.L2Spawn;
 import com.l2jserver.gameserver.model.L2World;
 import com.l2jserver.gameserver.model.actor.instance.L2BlockInstance;
 import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
-import com.l2jserver.gameserver.model.actor.templates.L2NpcTemplate;
 import com.l2jserver.gameserver.model.itemcontainer.PcInventory;
 import com.l2jserver.gameserver.model.items.instance.L2ItemInstance;
 import com.l2jserver.gameserver.model.skills.Skill;
@@ -477,15 +475,13 @@ public final class BlockCheckerEngine
 			// random % 2, if == 0 will spawn a red block
 			// if != 0, will spawn a blue block
 			byte random = 2;
-			// common template
-			final L2NpcTemplate template = NpcData.getInstance().getTemplate(18672);
 			// Spawn blocks
 			try
 			{
 				// Creates 50 new blocks
 				for (int i = 0; i < _numOfBoxes; i++)
 				{
-					L2Spawn spawn = new L2Spawn(template);
+					final L2Spawn spawn = new L2Spawn(18672);
 					spawn.setX(_arenaCoordinates[_arena][4] + Rnd.get(-400, 400));
 					spawn.setY(_arenaCoordinates[_arena][5] + Rnd.get(-400, 400));
 					spawn.setZ(_zCoord);
@@ -518,10 +514,9 @@ public final class BlockCheckerEngine
 			// Spawn the block carrying girl
 			if ((_round == 1) || (_round == 2))
 			{
-				L2NpcTemplate girl = NpcData.getInstance().getTemplate(18676);
 				try
 				{
-					final L2Spawn girlSpawn = new L2Spawn(girl);
+					final L2Spawn girlSpawn = new L2Spawn(18676);
 					girlSpawn.setX(_arenaCoordinates[_arena][4] + Rnd.get(-400, 400));
 					girlSpawn.setY(_arenaCoordinates[_arena][5] + Rnd.get(-400, 400));
 					girlSpawn.setZ(_zCoord);

+ 37 - 80
L2J_Server/java/com/l2jserver/gameserver/model/entity/Fort.java

@@ -43,7 +43,6 @@ import com.l2jserver.gameserver.FortUpdater.UpdaterType;
 import com.l2jserver.gameserver.ThreadPoolManager;
 import com.l2jserver.gameserver.data.sql.impl.ClanTable;
 import com.l2jserver.gameserver.data.xml.impl.DoorData;
-import com.l2jserver.gameserver.data.xml.impl.NpcData;
 import com.l2jserver.gameserver.data.xml.impl.StaticObjectData;
 import com.l2jserver.gameserver.datatables.SpawnTable;
 import com.l2jserver.gameserver.enums.MountType;
@@ -57,7 +56,6 @@ import com.l2jserver.gameserver.model.L2World;
 import com.l2jserver.gameserver.model.actor.instance.L2DoorInstance;
 import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
 import com.l2jserver.gameserver.model.actor.instance.L2StaticObjectInstance;
-import com.l2jserver.gameserver.model.actor.templates.L2NpcTemplate;
 import com.l2jserver.gameserver.model.itemcontainer.Inventory;
 import com.l2jserver.gameserver.model.zone.type.L2FortZone;
 import com.l2jserver.gameserver.model.zone.type.L2SiegeZone;
@@ -1171,28 +1169,18 @@ public final class Fort extends AbstractResidence
 			ps.setInt(2, 0);
 			try (ResultSet rs = ps.executeQuery())
 			{
-				L2Spawn spawnDat;
-				L2NpcTemplate template;
 				while (rs.next())
 				{
-					template = NpcData.getInstance().getTemplate(rs.getInt("npcId"));
-					if (template != null)
-					{
-						spawnDat = new L2Spawn(template);
-						spawnDat.setAmount(1);
-						spawnDat.setX(rs.getInt("x"));
-						spawnDat.setY(rs.getInt("y"));
-						spawnDat.setZ(rs.getInt("z"));
-						spawnDat.setHeading(rs.getInt("heading"));
-						spawnDat.setRespawnDelay(60);
-						SpawnTable.getInstance().addNewSpawn(spawnDat, false);
-						spawnDat.doSpawn();
-						spawnDat.startRespawn();
-					}
-					else
-					{
-						_log.warning("Fort " + getResidenceId() + " initNpcs: Data missing in NPC table for ID: " + rs.getInt("npcId") + ".");
-					}
+					L2Spawn spawnDat = new L2Spawn(rs.getInt("npcId"));
+					spawnDat.setAmount(1);
+					spawnDat.setX(rs.getInt("x"));
+					spawnDat.setY(rs.getInt("y"));
+					spawnDat.setZ(rs.getInt("z"));
+					spawnDat.setHeading(rs.getInt("heading"));
+					spawnDat.setRespawnDelay(60);
+					SpawnTable.getInstance().addNewSpawn(spawnDat, false);
+					spawnDat.doSpawn();
+					spawnDat.startRespawn();
 				}
 			}
 		}
@@ -1212,26 +1200,16 @@ public final class Fort extends AbstractResidence
 			ps.setInt(2, 2);
 			try (ResultSet rs = ps.executeQuery())
 			{
-				L2Spawn spawnDat;
-				L2NpcTemplate template;
 				while (rs.next())
 				{
-					template = NpcData.getInstance().getTemplate(rs.getInt("npcId"));
-					if (template != null)
-					{
-						spawnDat = new L2Spawn(template);
-						spawnDat.setAmount(1);
-						spawnDat.setX(rs.getInt("x"));
-						spawnDat.setY(rs.getInt("y"));
-						spawnDat.setZ(rs.getInt("z"));
-						spawnDat.setHeading(rs.getInt("heading"));
-						spawnDat.setRespawnDelay(60);
-						_siegeNpcs.add(spawnDat);
-					}
-					else
-					{
-						_log.warning("Fort " + getResidenceId() + " initSiegeNpcs: Data missing in NPC table for ID: " + rs.getInt("npcId") + ".");
-					}
+					final L2Spawn spawnDat = new L2Spawn(rs.getInt("npcId"));
+					spawnDat.setAmount(1);
+					spawnDat.setX(rs.getInt("x"));
+					spawnDat.setY(rs.getInt("y"));
+					spawnDat.setZ(rs.getInt("z"));
+					spawnDat.setHeading(rs.getInt("heading"));
+					spawnDat.setRespawnDelay(60);
+					_siegeNpcs.add(spawnDat);
 				}
 			}
 		}
@@ -1251,26 +1229,16 @@ public final class Fort extends AbstractResidence
 			ps.setInt(2, 1);
 			try (ResultSet rs = ps.executeQuery())
 			{
-				L2Spawn spawnDat;
-				L2NpcTemplate template;
 				while (rs.next())
 				{
-					template = NpcData.getInstance().getTemplate(rs.getInt("npcId"));
-					if (template != null)
-					{
-						spawnDat = new L2Spawn(template);
-						spawnDat.setAmount(1);
-						spawnDat.setX(rs.getInt("x"));
-						spawnDat.setY(rs.getInt("y"));
-						spawnDat.setZ(rs.getInt("z"));
-						spawnDat.setHeading(rs.getInt("heading"));
-						spawnDat.setRespawnDelay(60);
-						_npcCommanders.add(spawnDat);
-					}
-					else
-					{
-						_log.warning("Fort " + getResidenceId() + " initNpcCommanders: Data missing in NPC table for ID: " + rs.getInt("npcId") + ".");
-					}
+					final L2Spawn spawnDat = new L2Spawn(rs.getInt("npcId"));
+					spawnDat.setAmount(1);
+					spawnDat.setX(rs.getInt("x"));
+					spawnDat.setY(rs.getInt("y"));
+					spawnDat.setZ(rs.getInt("z"));
+					spawnDat.setHeading(rs.getInt("heading"));
+					spawnDat.setRespawnDelay(60);
+					_npcCommanders.add(spawnDat);
 				}
 			}
 		}
@@ -1293,30 +1261,19 @@ public final class Fort extends AbstractResidence
 			ps.setInt(2, 3);
 			try (ResultSet rs = ps.executeQuery())
 			{
-				L2Spawn spawnDat;
-				L2NpcTemplate template;
 				while (rs.next())
 				{
-					int castleId = rs.getInt("castleId");
-					int npcId = rs.getInt("npcId");
-					template = NpcData.getInstance().getTemplate(npcId);
-					if (template != null)
-					{
-						spawnDat = new L2Spawn(template);
-						spawnDat.setAmount(1);
-						spawnDat.setX(rs.getInt("x"));
-						spawnDat.setY(rs.getInt("y"));
-						spawnDat.setZ(rs.getInt("z"));
-						spawnDat.setHeading(rs.getInt("heading"));
-						spawnDat.setRespawnDelay(60);
-						_specialEnvoys.add(spawnDat);
-						_envoyCastles.put(npcId, castleId);
-						_availableCastles.add(castleId);
-					}
-					else
-					{
-						_log.warning("Fort " + getResidenceId() + " initSpecialEnvoys: Data missing in NPC table for ID: " + rs.getInt("npcId") + ".");
-					}
+					final int castleId = rs.getInt("castleId");
+					final L2Spawn spawnDat = new L2Spawn(rs.getInt("npcId"));
+					spawnDat.setAmount(1);
+					spawnDat.setX(rs.getInt("x"));
+					spawnDat.setY(rs.getInt("y"));
+					spawnDat.setZ(rs.getInt("z"));
+					spawnDat.setHeading(rs.getInt("heading"));
+					spawnDat.setRespawnDelay(60);
+					_specialEnvoys.add(spawnDat);
+					_envoyCastles.put(spawnDat.getId(), castleId);
+					_availableCastles.add(castleId);
 				}
 			}
 		}

+ 10 - 22
L2J_Server/java/com/l2jserver/gameserver/model/entity/FortSiege.java

@@ -33,7 +33,6 @@ import com.l2jserver.Config;
 import com.l2jserver.L2DatabaseFactory;
 import com.l2jserver.gameserver.ThreadPoolManager;
 import com.l2jserver.gameserver.data.sql.impl.ClanTable;
-import com.l2jserver.gameserver.data.xml.impl.NpcData;
 import com.l2jserver.gameserver.enums.FortTeleportWhoType;
 import com.l2jserver.gameserver.instancemanager.FortManager;
 import com.l2jserver.gameserver.instancemanager.FortSiegeGuardManager;
@@ -52,7 +51,6 @@ import com.l2jserver.gameserver.model.actor.L2Npc;
 import com.l2jserver.gameserver.model.actor.instance.L2DoorInstance;
 import com.l2jserver.gameserver.model.actor.instance.L2FortCommanderInstance;
 import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
-import com.l2jserver.gameserver.model.actor.templates.L2NpcTemplate;
 import com.l2jserver.gameserver.model.events.EventDispatcher;
 import com.l2jserver.gameserver.model.events.impl.sieges.fort.OnFortSiegeFinish;
 import com.l2jserver.gameserver.model.events.impl.sieges.fort.OnFortSiegeStart;
@@ -1110,28 +1108,18 @@ public class FortSiege implements Siegable
 		try
 		{
 			_commanders.clear();
-			L2Spawn spawnDat;
-			L2NpcTemplate template1;
 			for (FortSiegeSpawn _sp : FortSiegeManager.getInstance().getCommanderSpawnList(getFort().getResidenceId()))
 			{
-				template1 = NpcData.getInstance().getTemplate(_sp.getId());
-				if (template1 != null)
-				{
-					spawnDat = new L2Spawn(template1);
-					spawnDat.setAmount(1);
-					spawnDat.setX(_sp.getLocation().getX());
-					spawnDat.setY(_sp.getLocation().getY());
-					spawnDat.setZ(_sp.getLocation().getZ());
-					spawnDat.setHeading(_sp.getLocation().getHeading());
-					spawnDat.setRespawnDelay(60);
-					spawnDat.doSpawn();
-					spawnDat.stopRespawn();
-					_commanders.add(spawnDat);
-				}
-				else
-				{
-					_log.warning("FortSiege.spawnCommander: Data missing in NPC table for ID: " + _sp.getId() + ".");
-				}
+				final L2Spawn spawnDat = new L2Spawn(_sp.getId());
+				spawnDat.setAmount(1);
+				spawnDat.setX(_sp.getLocation().getX());
+				spawnDat.setY(_sp.getLocation().getY());
+				spawnDat.setZ(_sp.getLocation().getZ());
+				spawnDat.setHeading(_sp.getLocation().getHeading());
+				spawnDat.setRespawnDelay(60);
+				spawnDat.doSpawn();
+				spawnDat.stopRespawn();
+				_commanders.add(spawnDat);
 			}
 		}
 		catch (Exception e)

+ 30 - 41
L2J_Server/java/com/l2jserver/gameserver/model/entity/Instance.java

@@ -43,7 +43,6 @@ import org.w3c.dom.Node;
 import com.l2jserver.Config;
 import com.l2jserver.gameserver.ThreadPoolManager;
 import com.l2jserver.gameserver.data.xml.impl.DoorData;
-import com.l2jserver.gameserver.data.xml.impl.NpcData;
 import com.l2jserver.gameserver.enums.InstanceReenterType;
 import com.l2jserver.gameserver.enums.InstanceRemoveBuffType;
 import com.l2jserver.gameserver.instancemanager.InstanceManager;
@@ -59,7 +58,6 @@ import com.l2jserver.gameserver.model.actor.L2Npc;
 import com.l2jserver.gameserver.model.actor.instance.L2DoorInstance;
 import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
 import com.l2jserver.gameserver.model.actor.templates.L2DoorTemplate;
-import com.l2jserver.gameserver.model.actor.templates.L2NpcTemplate;
 import com.l2jserver.gameserver.model.holders.InstanceReenterTimeHolder;
 import com.l2jserver.gameserver.model.instancezone.InstanceWorld;
 import com.l2jserver.gameserver.network.SystemMessageId;
@@ -460,8 +458,6 @@ public final class Instance
 	
 	private void parseInstance(Node n) throws Exception
 	{
-		L2Spawn spawnDat;
-		L2NpcTemplate npcTemplate;
 		_name = n.getAttributes().getNamedItem("name").getNodeValue();
 		Node a = n.getAttributes().getNamedItem("ejectTime");
 		if (a != null)
@@ -596,49 +592,42 @@ public final class Instance
 								{
 									allowRandomWalk = Boolean.valueOf(d.getAttributes().getNamedItem("allowRandomWalk").getNodeValue());
 								}
-								npcTemplate = NpcData.getInstance().getTemplate(npcId);
-								if (npcTemplate != null)
+								
+								final L2Spawn spawnDat = new L2Spawn(npcId);
+								spawnDat.setX(x);
+								spawnDat.setY(y);
+								spawnDat.setZ(z);
+								spawnDat.setAmount(1);
+								spawnDat.setHeading(heading);
+								spawnDat.setRespawnDelay(respawn, respawnRandom);
+								if (respawn == 0)
 								{
-									spawnDat = new L2Spawn(npcTemplate);
-									spawnDat.setX(x);
-									spawnDat.setY(y);
-									spawnDat.setZ(z);
-									spawnDat.setAmount(1);
-									spawnDat.setHeading(heading);
-									spawnDat.setRespawnDelay(respawn, respawnRandom);
-									if (respawn == 0)
-									{
-										spawnDat.stopRespawn();
-									}
-									else
-									{
-										spawnDat.startRespawn();
-									}
-									spawnDat.setInstanceId(getId());
-									if (allowRandomWalk == null)
-									{
-										spawnDat.setIsNoRndWalk(!_allowRandomWalk);
-									}
-									else
-									{
-										spawnDat.setIsNoRndWalk(!allowRandomWalk);
-									}
-									if (spawnGroup.equals("general"))
-									{
-										L2Npc spawned = spawnDat.doSpawn();
-										if ((delay >= 0) && (spawned instanceof L2Attackable))
-										{
-											((L2Attackable) spawned).setOnKillDelay(delay);
-										}
-									}
-									else
+									spawnDat.stopRespawn();
+								}
+								else
+								{
+									spawnDat.startRespawn();
+								}
+								spawnDat.setInstanceId(getId());
+								if (allowRandomWalk == null)
+								{
+									spawnDat.setIsNoRndWalk(!_allowRandomWalk);
+								}
+								else
+								{
+									spawnDat.setIsNoRndWalk(!allowRandomWalk);
+								}
+								if (spawnGroup.equals("general"))
+								{
+									L2Npc spawned = spawnDat.doSpawn();
+									if ((delay >= 0) && (spawned instanceof L2Attackable))
 									{
-										manualSpawn.add(spawnDat);
+										((L2Attackable) spawned).setOnKillDelay(delay);
 									}
 								}
 								else
 								{
-									_log.warning("Instance: Data missing in NPC table for ID: " + npcId + " in Instance " + getId());
+									manualSpawn.add(spawnDat);
 								}
 							}
 						}

+ 1 - 6
L2J_Server/java/com/l2jserver/gameserver/model/entity/L2Event.java

@@ -43,7 +43,6 @@ import com.l2jserver.gameserver.model.L2Spawn;
 import com.l2jserver.gameserver.model.L2World;
 import com.l2jserver.gameserver.model.actor.L2Npc;
 import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
-import com.l2jserver.gameserver.model.actor.templates.L2NpcTemplate;
 import com.l2jserver.gameserver.model.holders.PlayerEventHolder;
 import com.l2jserver.gameserver.network.serverpackets.CharInfo;
 import com.l2jserver.gameserver.network.serverpackets.ExBrExtraUserInfo;
@@ -168,13 +167,9 @@ public class L2Event
 	 */
 	public static void spawnEventNpc(L2PcInstance target)
 	{
-		
-		L2NpcTemplate template = NpcData.getInstance().getTemplate(_npcId);
-		
 		try
 		{
-			L2Spawn spawn = new L2Spawn(template);
-			
+			final L2Spawn spawn = new L2Spawn(_npcId);
 			spawn.setX(target.getX() + 50);
 			spawn.setY(target.getY() + 50);
 			spawn.setZ(target.getZ());

+ 2 - 3
L2J_Server/java/com/l2jserver/gameserver/model/entity/Siege.java

@@ -36,7 +36,6 @@ import com.l2jserver.Config;
 import com.l2jserver.L2DatabaseFactory;
 import com.l2jserver.gameserver.ThreadPoolManager;
 import com.l2jserver.gameserver.data.sql.impl.ClanTable;
-import com.l2jserver.gameserver.data.xml.impl.NpcData;
 import com.l2jserver.gameserver.data.xml.impl.SiegeScheduleData;
 import com.l2jserver.gameserver.enums.SiegeTeleportWhoType;
 import com.l2jserver.gameserver.instancemanager.CastleManager;
@@ -1508,7 +1507,7 @@ public class Siege implements Siegable
 		{
 			try
 			{
-				final L2Spawn spawn = new L2Spawn(NpcData.getInstance().getTemplate(ts.getId()));
+				final L2Spawn spawn = new L2Spawn(ts.getId());
 				spawn.setLocation(ts.getLocation());
 				_controlTowers.add((L2ControlTowerInstance) spawn.doSpawn());
 			}
@@ -1529,7 +1528,7 @@ public class Siege implements Siegable
 		{
 			try
 			{
-				final L2Spawn spawn = new L2Spawn(NpcData.getInstance().getTemplate(ts.getId()));
+				final L2Spawn spawn = new L2Spawn(ts.getId());
 				spawn.setLocation(ts.getLocation());
 				final L2FlameTowerInstance tower = (L2FlameTowerInstance) spawn.doSpawn();
 				tower.setUpgradeLevel(ts.getUpgradeLevel());

+ 1 - 11
L2J_Server/java/com/l2jserver/gameserver/model/entity/TvTEvent.java

@@ -30,7 +30,6 @@ import javolution.util.FastMap;
 import com.l2jserver.Config;
 import com.l2jserver.gameserver.cache.HtmCache;
 import com.l2jserver.gameserver.data.xml.impl.DoorData;
-import com.l2jserver.gameserver.data.xml.impl.NpcData;
 import com.l2jserver.gameserver.datatables.ItemTable;
 import com.l2jserver.gameserver.datatables.SkillData;
 import com.l2jserver.gameserver.datatables.SpawnTable;
@@ -45,7 +44,6 @@ import com.l2jserver.gameserver.model.actor.instance.L2DoorInstance;
 import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
 import com.l2jserver.gameserver.model.actor.instance.L2PetInstance;
 import com.l2jserver.gameserver.model.actor.instance.L2ServitorInstance;
-import com.l2jserver.gameserver.model.actor.templates.L2NpcTemplate;
 import com.l2jserver.gameserver.model.events.EventDispatcher;
 import com.l2jserver.gameserver.model.events.impl.events.OnTvTEventFinish;
 import com.l2jserver.gameserver.model.events.impl.events.OnTvTEventKill;
@@ -118,17 +116,9 @@ public class TvTEvent
 	 */
 	public static boolean startParticipation()
 	{
-		L2NpcTemplate tmpl = NpcData.getInstance().getTemplate(Config.TVT_EVENT_PARTICIPATION_NPC_ID);
-		
-		if (tmpl == null)
-		{
-			_log.warning("TvTEventEngine[TvTEvent.startParticipation()]: L2NpcTemplate is a NullPointer -> Invalid npc id in configs?");
-			return false;
-		}
-		
 		try
 		{
-			_npcSpawn = new L2Spawn(tmpl);
+			_npcSpawn = new L2Spawn(Config.TVT_EVENT_PARTICIPATION_NPC_ID);
 			
 			_npcSpawn.setX(Config.TVT_EVENT_PARTICIPATION_NPC_COORDINATES[0]);
 			_npcSpawn.setY(Config.TVT_EVENT_PARTICIPATION_NPC_COORDINATES[1]);

+ 1 - 5
L2J_Server/java/com/l2jserver/gameserver/model/entity/clanhall/ClanHallSiegeEngine.java

@@ -34,7 +34,6 @@ import com.l2jserver.Config;
 import com.l2jserver.L2DatabaseFactory;
 import com.l2jserver.gameserver.ThreadPoolManager;
 import com.l2jserver.gameserver.data.sql.impl.ClanTable;
-import com.l2jserver.gameserver.data.xml.impl.NpcData;
 import com.l2jserver.gameserver.instancemanager.CHSiegeManager;
 import com.l2jserver.gameserver.instancemanager.MapRegionManager;
 import com.l2jserver.gameserver.model.L2Clan;
@@ -46,7 +45,6 @@ import com.l2jserver.gameserver.model.Location;
 import com.l2jserver.gameserver.model.actor.L2Character;
 import com.l2jserver.gameserver.model.actor.L2Npc;
 import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
-import com.l2jserver.gameserver.model.actor.templates.L2NpcTemplate;
 import com.l2jserver.gameserver.model.entity.Siegable;
 import com.l2jserver.gameserver.model.quest.Quest;
 import com.l2jserver.gameserver.network.NpcStringId;
@@ -159,9 +157,7 @@ public abstract class ClanHallSiegeEngine extends Quest implements Siegable
 				{
 					while (rset.next())
 					{
-						final int npcId = rset.getInt("npcId");
-						final L2NpcTemplate template = NpcData.getInstance().getTemplate(npcId);
-						L2Spawn spawn = new L2Spawn(template);
+						final L2Spawn spawn = new L2Spawn(rset.getInt("npcId"));
 						spawn.setX(rset.getInt("x"));
 						spawn.setY(rset.getInt("y"));
 						spawn.setZ(rset.getInt("z"));

+ 1 - 8
L2J_Server/java/com/l2jserver/gameserver/model/events/AbstractScript.java

@@ -1717,13 +1717,6 @@ public abstract class AbstractScript extends ManagedScript
 	{
 		try
 		{
-			final L2NpcTemplate template = NpcData.getInstance().getTemplate(npcId);
-			if (template == null)
-			{
-				_log.severe("Couldn't find NPC template for ID:" + npcId + "!");
-				return null;
-			}
-			
 			if ((x == 0) && (y == 0))
 			{
 				_log.log(Level.SEVERE, "addSpawn(): invalid spawn coordinates for NPC #" + npcId + "!");
@@ -1747,7 +1740,7 @@ public abstract class AbstractScript extends ManagedScript
 				y += offset;
 			}
 			
-			final L2Spawn spawn = new L2Spawn(template);
+			final L2Spawn spawn = new L2Spawn(npcId);
 			spawn.setInstanceId(instanceId);
 			spawn.setHeading(heading);
 			spawn.setX(x);