Browse Source

BETA: Second part of improvements for instance managers.
* Small update for GlobalVariablesManager.
* Patch by: jurchiks
* Reviewed by: Zoey76, UnAfraid, jurchiks

xban1x 11 năm trước cách đây
mục cha
commit
3d287ede34
51 tập tin đã thay đổi với 857 bổ sung580 xóa
  1. 3 3
      L2J_Server_BETA/java/com/l2jserver/gameserver/SevenSigns.java
  2. 2 2
      L2J_Server_BETA/java/com/l2jserver/gameserver/SevenSignsFestival.java
  3. 7 7
      L2J_Server_BETA/java/com/l2jserver/gameserver/instancemanager/GlobalVariablesManager.java
  4. 23 21
      L2J_Server_BETA/java/com/l2jserver/gameserver/instancemanager/GraciaSeedsManager.java
  5. 5 1
      L2J_Server_BETA/java/com/l2jserver/gameserver/instancemanager/GrandBossManager.java
  6. 10 163
      L2J_Server_BETA/java/com/l2jserver/gameserver/instancemanager/HandysBlockCheckerManager.java
  7. 9 5
      L2J_Server_BETA/java/com/l2jserver/gameserver/instancemanager/InstanceManager.java
  8. 4 0
      L2J_Server_BETA/java/com/l2jserver/gameserver/instancemanager/ItemAuctionManager.java
  9. 6 2
      L2J_Server_BETA/java/com/l2jserver/gameserver/instancemanager/ItemsOnGroundManager.java
  10. 10 62
      L2J_Server_BETA/java/com/l2jserver/gameserver/instancemanager/MailManager.java
  11. 13 22
      L2J_Server_BETA/java/com/l2jserver/gameserver/instancemanager/MapRegionManager.java
  12. 5 1
      L2J_Server_BETA/java/com/l2jserver/gameserver/instancemanager/MercTicketManager.java
  13. 34 212
      L2J_Server_BETA/java/com/l2jserver/gameserver/instancemanager/PetitionManager.java
  14. 5 1
      L2J_Server_BETA/java/com/l2jserver/gameserver/instancemanager/PunishmentManager.java
  15. 8 4
      L2J_Server_BETA/java/com/l2jserver/gameserver/instancemanager/QuestManager.java
  16. 1 1
      L2J_Server_BETA/java/com/l2jserver/gameserver/instancemanager/SiegeGuardManager.java
  17. 1 1
      L2J_Server_BETA/java/com/l2jserver/gameserver/instancemanager/SiegeManager.java
  18. 1 1
      L2J_Server_BETA/java/com/l2jserver/gameserver/instancemanager/TerritoryWarManager.java
  19. 1 1
      L2J_Server_BETA/java/com/l2jserver/gameserver/instancemanager/TownManager.java
  20. 12 12
      L2J_Server_BETA/java/com/l2jserver/gameserver/instancemanager/ZoneManager.java
  21. 3 2
      L2J_Server_BETA/java/com/l2jserver/gameserver/instancemanager/tasks/FourSepulchersChangeAttackTimeTask.java
  22. 1 0
      L2J_Server_BETA/java/com/l2jserver/gameserver/instancemanager/tasks/FourSepulchersChangeCoolDownTimeTask.java
  23. 2 1
      L2J_Server_BETA/java/com/l2jserver/gameserver/instancemanager/tasks/FourSepulchersChangeEntryTimeTask.java
  24. 1 0
      L2J_Server_BETA/java/com/l2jserver/gameserver/instancemanager/tasks/FourSepulchersChangeWarmUpTimeTask.java
  25. 3 2
      L2J_Server_BETA/java/com/l2jserver/gameserver/instancemanager/tasks/FourSepulchersManagerSayTask.java
  26. 88 0
      L2J_Server_BETA/java/com/l2jserver/gameserver/instancemanager/tasks/MessageDeletionTask.java
  27. 41 0
      L2J_Server_BETA/java/com/l2jserver/gameserver/instancemanager/tasks/PenaltyRemoveTask.java
  28. 36 0
      L2J_Server_BETA/java/com/l2jserver/gameserver/instancemanager/tasks/UpdateSoDStateTask.java
  29. 178 0
      L2J_Server_BETA/java/com/l2jserver/gameserver/model/ArenaParticipantsHolder.java
  30. 179 0
      L2J_Server_BETA/java/com/l2jserver/gameserver/model/Petition.java
  31. 36 0
      L2J_Server_BETA/java/com/l2jserver/gameserver/model/PetitionState.java
  32. 36 0
      L2J_Server_BETA/java/com/l2jserver/gameserver/model/PetitionType.java
  33. 37 0
      L2J_Server_BETA/java/com/l2jserver/gameserver/model/TeleportWhereType.java
  34. 1 1
      L2J_Server_BETA/java/com/l2jserver/gameserver/model/actor/L2Character.java
  35. 2 1
      L2J_Server_BETA/java/com/l2jserver/gameserver/model/actor/L2Vehicle.java
  36. 1 1
      L2J_Server_BETA/java/com/l2jserver/gameserver/model/actor/instance/L2BlockInstance.java
  37. 6 5
      L2J_Server_BETA/java/com/l2jserver/gameserver/model/actor/instance/L2PcInstance.java
  38. 3 3
      L2J_Server_BETA/java/com/l2jserver/gameserver/model/entity/BlockCheckerEngine.java
  39. 3 3
      L2J_Server_BETA/java/com/l2jserver/gameserver/model/entity/FortSiege.java
  40. 3 3
      L2J_Server_BETA/java/com/l2jserver/gameserver/model/entity/Instance.java
  41. 8 8
      L2J_Server_BETA/java/com/l2jserver/gameserver/model/entity/Siege.java
  42. 5 5
      L2J_Server_BETA/java/com/l2jserver/gameserver/model/zone/type/L2BossZone.java
  43. 2 2
      L2J_Server_BETA/java/com/l2jserver/gameserver/model/zone/type/L2CastleZone.java
  44. 2 2
      L2J_Server_BETA/java/com/l2jserver/gameserver/model/zone/type/L2ClanHallZone.java
  45. 2 2
      L2J_Server_BETA/java/com/l2jserver/gameserver/model/zone/type/L2FortZone.java
  46. 2 2
      L2J_Server_BETA/java/com/l2jserver/gameserver/model/zone/type/L2NoRestartZone.java
  47. 2 2
      L2J_Server_BETA/java/com/l2jserver/gameserver/model/zone/type/L2OlympiadStadiumZone.java
  48. 2 2
      L2J_Server_BETA/java/com/l2jserver/gameserver/model/zone/type/L2SiegableHallZone.java
  49. 2 2
      L2J_Server_BETA/java/com/l2jserver/gameserver/model/zone/type/L2SiegeZone.java
  50. 2 2
      L2J_Server_BETA/java/com/l2jserver/gameserver/network/clientpackets/EnterWorld.java
  51. 8 7
      L2J_Server_BETA/java/com/l2jserver/gameserver/network/clientpackets/RequestRestartPoint.java

+ 3 - 3
L2J_Server_BETA/java/com/l2jserver/gameserver/SevenSigns.java

@@ -36,13 +36,13 @@ import com.l2jserver.Config;
 import com.l2jserver.L2DatabaseFactory;
 import com.l2jserver.L2DatabaseFactory;
 import com.l2jserver.gameserver.datatables.SkillTable;
 import com.l2jserver.gameserver.datatables.SkillTable;
 import com.l2jserver.gameserver.instancemanager.CastleManager;
 import com.l2jserver.gameserver.instancemanager.CastleManager;
-import com.l2jserver.gameserver.instancemanager.MapRegionManager;
 import com.l2jserver.gameserver.instancemanager.QuestManager;
 import com.l2jserver.gameserver.instancemanager.QuestManager;
 import com.l2jserver.gameserver.instancemanager.TerritoryWarManager;
 import com.l2jserver.gameserver.instancemanager.TerritoryWarManager;
 import com.l2jserver.gameserver.model.AutoSpawnHandler;
 import com.l2jserver.gameserver.model.AutoSpawnHandler;
 import com.l2jserver.gameserver.model.AutoSpawnHandler.AutoSpawnInstance;
 import com.l2jserver.gameserver.model.AutoSpawnHandler.AutoSpawnInstance;
 import com.l2jserver.gameserver.model.L2World;
 import com.l2jserver.gameserver.model.L2World;
 import com.l2jserver.gameserver.model.StatsSet;
 import com.l2jserver.gameserver.model.StatsSet;
+import com.l2jserver.gameserver.model.TeleportWhereType;
 import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
 import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
 import com.l2jserver.gameserver.model.entity.Castle;
 import com.l2jserver.gameserver.model.entity.Castle;
 import com.l2jserver.gameserver.model.quest.Quest;
 import com.l2jserver.gameserver.model.quest.Quest;
@@ -1456,7 +1456,7 @@ public class SevenSigns
 				{
 				{
 					if (!onlinePlayer.isGM() && onlinePlayer.isIn7sDungeon() && ((currPlayer == null) || !currPlayer.getString("cabal").equals(_cmpWinner)))
 					if (!onlinePlayer.isGM() && onlinePlayer.isIn7sDungeon() && ((currPlayer == null) || !currPlayer.getString("cabal").equals(_cmpWinner)))
 					{
 					{
-						onlinePlayer.teleToLocation(MapRegionManager.TeleportWhereType.Town);
+						onlinePlayer.teleToLocation(TeleportWhereType.TOWN);
 						onlinePlayer.setIsIn7sDungeon(false);
 						onlinePlayer.setIsIn7sDungeon(false);
 						onlinePlayer.sendMessage("You have been teleported to the nearest town due to the beginning of the Seal Validation period.");
 						onlinePlayer.sendMessage("You have been teleported to the nearest town due to the beginning of the Seal Validation period.");
 					}
 					}
@@ -1465,7 +1465,7 @@ public class SevenSigns
 				{
 				{
 					if (!onlinePlayer.isGM() && onlinePlayer.isIn7sDungeon() && ((currPlayer == null) || !currPlayer.getString("cabal").isEmpty()))
 					if (!onlinePlayer.isGM() && onlinePlayer.isIn7sDungeon() && ((currPlayer == null) || !currPlayer.getString("cabal").isEmpty()))
 					{
 					{
-						onlinePlayer.teleToLocation(MapRegionManager.TeleportWhereType.Town);
+						onlinePlayer.teleToLocation(TeleportWhereType.TOWN);
 						onlinePlayer.setIsIn7sDungeon(false);
 						onlinePlayer.setIsIn7sDungeon(false);
 						onlinePlayer.sendMessage("You have been teleported to the nearest town because you have not signed for any cabal.");
 						onlinePlayer.sendMessage("You have been teleported to the nearest town because you have not signed for any cabal.");
 					}
 					}

+ 2 - 2
L2J_Server_BETA/java/com/l2jserver/gameserver/SevenSignsFestival.java

@@ -41,7 +41,6 @@ import com.l2jserver.gameserver.datatables.ClanTable;
 import com.l2jserver.gameserver.datatables.ExperienceTable;
 import com.l2jserver.gameserver.datatables.ExperienceTable;
 import com.l2jserver.gameserver.datatables.NpcTable;
 import com.l2jserver.gameserver.datatables.NpcTable;
 import com.l2jserver.gameserver.datatables.SpawnTable;
 import com.l2jserver.gameserver.datatables.SpawnTable;
-import com.l2jserver.gameserver.instancemanager.MapRegionManager;
 import com.l2jserver.gameserver.model.L2Clan;
 import com.l2jserver.gameserver.model.L2Clan;
 import com.l2jserver.gameserver.model.L2Party;
 import com.l2jserver.gameserver.model.L2Party;
 import com.l2jserver.gameserver.model.L2Party.messageType;
 import com.l2jserver.gameserver.model.L2Party.messageType;
@@ -50,6 +49,7 @@ import com.l2jserver.gameserver.model.L2World;
 import com.l2jserver.gameserver.model.Location;
 import com.l2jserver.gameserver.model.Location;
 import com.l2jserver.gameserver.model.SpawnListener;
 import com.l2jserver.gameserver.model.SpawnListener;
 import com.l2jserver.gameserver.model.StatsSet;
 import com.l2jserver.gameserver.model.StatsSet;
+import com.l2jserver.gameserver.model.TeleportWhereType;
 import com.l2jserver.gameserver.model.actor.L2Npc;
 import com.l2jserver.gameserver.model.actor.L2Npc;
 import com.l2jserver.gameserver.model.actor.instance.L2FestivalMonsterInstance;
 import com.l2jserver.gameserver.model.actor.instance.L2FestivalMonsterInstance;
 import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
 import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
@@ -2423,7 +2423,7 @@ public class SevenSignsFestival implements SpawnListener
 				// If an exception occurs, just move the player to the nearest town.
 				// If an exception occurs, just move the player to the nearest town.
 				try
 				try
 				{
 				{
-					participant.teleToLocation(MapRegionManager.TeleportWhereType.Town);
+					participant.teleToLocation(TeleportWhereType.TOWN);
 					participant.sendMessage("You have been removed from the festival arena.");
 					participant.sendMessage("You have been removed from the festival arena.");
 				}
 				}
 				catch (NullPointerException e2)
 				catch (NullPointerException e2)

+ 7 - 7
L2J_Server_BETA/java/com/l2jserver/gameserver/instancemanager/GlobalVariablesManager.java

@@ -22,6 +22,7 @@ import java.sql.Connection;
 import java.sql.PreparedStatement;
 import java.sql.PreparedStatement;
 import java.sql.ResultSet;
 import java.sql.ResultSet;
 import java.sql.SQLException;
 import java.sql.SQLException;
+import java.sql.Statement;
 import java.util.Map.Entry;
 import java.util.Map.Entry;
 import java.util.logging.Level;
 import java.util.logging.Level;
 import java.util.logging.Logger;
 import java.util.logging.Logger;
@@ -52,14 +53,12 @@ public final class GlobalVariablesManager extends AbstractVariables
 	{
 	{
 		// Restore previous variables.
 		// Restore previous variables.
 		try (Connection con = L2DatabaseFactory.getInstance().getConnection();
 		try (Connection con = L2DatabaseFactory.getInstance().getConnection();
-			PreparedStatement st = con.prepareStatement(SELECT_QUERY))
+			Statement st = con.createStatement();
+			ResultSet rset = st.executeQuery(SELECT_QUERY))
 		{
 		{
-			try (ResultSet rset = st.executeQuery())
+			while (rset.next())
 			{
 			{
-				while (rset.next())
-				{
-					set(rset.getString("var"), rset.getString("value"));
-				}
+				set(rset.getString("var"), rset.getString("value"));
 			}
 			}
 		}
 		}
 		catch (SQLException e)
 		catch (SQLException e)
@@ -83,10 +82,11 @@ public final class GlobalVariablesManager extends AbstractVariables
 		}
 		}
 		
 		
 		try (Connection con = L2DatabaseFactory.getInstance().getConnection();
 		try (Connection con = L2DatabaseFactory.getInstance().getConnection();
+			Statement del = con.createStatement();
 			PreparedStatement st = con.prepareStatement(INSERT_QUERY))
 			PreparedStatement st = con.prepareStatement(INSERT_QUERY))
 		{
 		{
 			// Clear previous entries.
 			// Clear previous entries.
-			con.prepareStatement(DELETE_QUERY).execute();
+			del.execute(DELETE_QUERY);
 			
 			
 			// Insert all variables.
 			// Insert all variables.
 			for (Entry<String, Object> entry : getSet().entrySet())
 			for (Entry<String, Object> entry : getSet().entrySet())

+ 23 - 21
L2J_Server_BETA/java/com/l2jserver/gameserver/instancemanager/GraciaSeedsManager.java

@@ -23,13 +23,14 @@ import java.util.logging.Logger;
 
 
 import com.l2jserver.Config;
 import com.l2jserver.Config;
 import com.l2jserver.gameserver.ThreadPoolManager;
 import com.l2jserver.gameserver.ThreadPoolManager;
+import com.l2jserver.gameserver.instancemanager.tasks.UpdateSoDStateTask;
 import com.l2jserver.gameserver.model.quest.Quest;
 import com.l2jserver.gameserver.model.quest.Quest;
 
 
-public class GraciaSeedsManager
+public final class GraciaSeedsManager
 {
 {
-	protected static final Logger _log = Logger.getLogger(GraciaSeedsManager.class.getName());
+	private static final Logger _log = Logger.getLogger(GraciaSeedsManager.class.getName());
 	
 	
-	public static String qn = "EnergySeeds";
+	public static String ENERGY_SEEDS = "EnergySeeds";
 	
 	
 	private static final byte SOITYPE = 2;
 	private static final byte SOITYPE = 2;
 	private static final byte SOATYPE = 3;
 	private static final byte SOATYPE = 3;
@@ -102,23 +103,7 @@ public class GraciaSeedsManager
 				}
 				}
 				else
 				else
 				{
 				{
-					ThreadPoolManager.getInstance().scheduleEffect(new Runnable()
-					{
-						@Override
-						public void run()
-						{
-							setSoDState(1, true);
-							Quest esQuest = QuestManager.getInstance().getQuest(qn);
-							if (esQuest == null)
-							{
-								_log.warning(getClass().getSimpleName() + ": missing EnergySeeds Quest!");
-							}
-							else
-							{
-								esQuest.notifyEvent("StopSoDAi", null, null);
-							}
-						}
-					}, Config.SOD_STAGE_2_LENGTH - timePast);
+					ThreadPoolManager.getInstance().scheduleEffect(new UpdateSoDStateTask(), Config.SOD_STAGE_2_LENGTH - timePast);
 				}
 				}
 				break;
 				break;
 			case 3:
 			case 3:
@@ -130,6 +115,19 @@ public class GraciaSeedsManager
 		}
 		}
 	}
 	}
 	
 	
+	public void updateSodState()
+	{
+		final Quest quest = QuestManager.getInstance().getQuest(ENERGY_SEEDS);
+		if (quest == null)
+		{
+			_log.warning(getClass().getSimpleName() + ": missing EnergySeeds Quest!");
+		}
+		else
+		{
+			quest.notifyEvent("StopSoDAi", null, null);
+		}
+	}
+	
 	public void increaseSoDTiatKilled()
 	public void increaseSoDTiatKilled()
 	{
 	{
 		if (_SoDState == 1)
 		if (_SoDState == 1)
@@ -140,7 +138,7 @@ public class GraciaSeedsManager
 				setSoDState(2, false);
 				setSoDState(2, false);
 			}
 			}
 			saveData(SODTYPE);
 			saveData(SODTYPE);
-			Quest esQuest = QuestManager.getInstance().getQuest(qn);
+			Quest esQuest = QuestManager.getInstance().getQuest(ENERGY_SEEDS);
 			if (esQuest == null)
 			if (esQuest == null)
 			{
 			{
 				_log.warning(getClass().getSimpleName() + ": missing EnergySeeds Quest!");
 				_log.warning(getClass().getSimpleName() + ": missing EnergySeeds Quest!");
@@ -203,6 +201,10 @@ public class GraciaSeedsManager
 		return _SoDState;
 		return _SoDState;
 	}
 	}
 	
 	
+	/**
+	 * Gets the single instance of {@code GraciaSeedsManager}.
+	 * @return single instance of {@code GraciaSeedsManager}
+	 */
 	public static final GraciaSeedsManager getInstance()
 	public static final GraciaSeedsManager getInstance()
 	{
 	{
 		return SingletonHolder._instance;
 		return SingletonHolder._instance;

+ 5 - 1
L2J_Server_BETA/java/com/l2jserver/gameserver/instancemanager/GrandBossManager.java

@@ -47,7 +47,7 @@ import gnu.trove.map.hash.TIntObjectHashMap;
 /**
 /**
  * @author DaRkRaGe Revised by Emperorc
  * @author DaRkRaGe Revised by Emperorc
  */
  */
-public class GrandBossManager
+public final class GrandBossManager
 {
 {
 	// SQL queries
 	// SQL queries
 	private static final String DELETE_GRAND_BOSS_LIST = "DELETE FROM grandboss_list";
 	private static final String DELETE_GRAND_BOSS_LIST = "DELETE FROM grandboss_list";
@@ -438,6 +438,10 @@ public class GrandBossManager
 		return _zones;
 		return _zones;
 	}
 	}
 	
 	
+	/**
+	 * Gets the single instance of {@code GrandBossManager}.
+	 * @return single instance of {@code GrandBossManager}
+	 */
 	public static GrandBossManager getInstance()
 	public static GrandBossManager getInstance()
 	{
 	{
 		return SingletonHolder._instance;
 		return SingletonHolder._instance;

+ 10 - 163
L2J_Server_BETA/java/com/l2jserver/gameserver/instancemanager/HandysBlockCheckerManager.java

@@ -25,8 +25,9 @@ import java.util.Map;
 
 
 import com.l2jserver.Config;
 import com.l2jserver.Config;
 import com.l2jserver.gameserver.ThreadPoolManager;
 import com.l2jserver.gameserver.ThreadPoolManager;
+import com.l2jserver.gameserver.instancemanager.tasks.PenaltyRemoveTask;
+import com.l2jserver.gameserver.model.ArenaParticipantsHolder;
 import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
 import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
-import com.l2jserver.gameserver.model.entity.BlockCheckerEngine;
 import com.l2jserver.gameserver.model.itemcontainer.PcInventory;
 import com.l2jserver.gameserver.model.itemcontainer.PcInventory;
 import com.l2jserver.gameserver.model.olympiad.OlympiadManager;
 import com.l2jserver.gameserver.model.olympiad.OlympiadManager;
 import com.l2jserver.gameserver.model.zone.ZoneId;
 import com.l2jserver.gameserver.model.zone.ZoneId;
@@ -34,7 +35,6 @@ import com.l2jserver.gameserver.network.SystemMessageId;
 import com.l2jserver.gameserver.network.serverpackets.ExCubeGameAddPlayer;
 import com.l2jserver.gameserver.network.serverpackets.ExCubeGameAddPlayer;
 import com.l2jserver.gameserver.network.serverpackets.ExCubeGameChangeTeam;
 import com.l2jserver.gameserver.network.serverpackets.ExCubeGameChangeTeam;
 import com.l2jserver.gameserver.network.serverpackets.ExCubeGameRemovePlayer;
 import com.l2jserver.gameserver.network.serverpackets.ExCubeGameRemovePlayer;
-import com.l2jserver.gameserver.network.serverpackets.L2GameServerPacket;
 import com.l2jserver.gameserver.network.serverpackets.SystemMessage;
 import com.l2jserver.gameserver.network.serverpackets.SystemMessage;
 
 
 /**
 /**
@@ -258,7 +258,7 @@ public final class HandysBlockCheckerManager
 		
 		
 		synchronized (holder)
 		synchronized (holder)
 		{
 		{
-			boolean isFromRed = holder._redPlayers.contains(player);
+			boolean isFromRed = holder.getRedPlayers().contains(player);
 			
 			
 			if (isFromRed && (holder.getBlueTeamSize() == 6))
 			if (isFromRed && (holder.getBlueTeamSize() == 6))
 			{
 			{
@@ -361,173 +361,20 @@ public final class HandysBlockCheckerManager
 		}
 		}
 	}
 	}
 	
 	
-	public class ArenaParticipantsHolder
+	public void removePenalty(int objectId)
 	{
 	{
-		int _arena;
-		List<L2PcInstance> _redPlayers;
-		List<L2PcInstance> _bluePlayers;
-		BlockCheckerEngine _engine;
-		
-		public ArenaParticipantsHolder(int arena)
-		{
-			_arena = arena;
-			_redPlayers = new ArrayList<>(6);
-			_bluePlayers = new ArrayList<>(6);
-			_engine = new BlockCheckerEngine(this, _arena);
-		}
-		
-		public List<L2PcInstance> getRedPlayers()
-		{
-			return _redPlayers;
-		}
-		
-		public List<L2PcInstance> getBluePlayers()
-		{
-			return _bluePlayers;
-		}
-		
-		public ArrayList<L2PcInstance> getAllPlayers()
-		{
-			ArrayList<L2PcInstance> all = new ArrayList<>(12);
-			all.addAll(_redPlayers);
-			all.addAll(_bluePlayers);
-			return all;
-		}
-		
-		public void addPlayer(L2PcInstance player, int team)
-		{
-			if (team == 0)
-			{
-				_redPlayers.add(player);
-			}
-			else
-			{
-				_bluePlayers.add(player);
-			}
-		}
-		
-		public void removePlayer(L2PcInstance player, int team)
-		{
-			if (team == 0)
-			{
-				_redPlayers.remove(player);
-			}
-			else
-			{
-				_bluePlayers.remove(player);
-			}
-		}
-		
-		public int getPlayerTeam(L2PcInstance player)
-		{
-			if (_redPlayers.contains(player))
-			{
-				return 0;
-			}
-			else if (_bluePlayers.contains(player))
-			{
-				return 1;
-			}
-			else
-			{
-				return -1;
-			}
-		}
-		
-		public int getRedTeamSize()
-		{
-			return _redPlayers.size();
-		}
-		
-		public int getBlueTeamSize()
-		{
-			return _bluePlayers.size();
-		}
-		
-		public void broadCastPacketToTeam(L2GameServerPacket packet)
-		{
-			for (L2PcInstance p : _redPlayers)
-			{
-				p.sendPacket(packet);
-			}
-			for (L2PcInstance p : _bluePlayers)
-			{
-				p.sendPacket(packet);
-			}
-		}
-		
-		public void clearPlayers()
-		{
-			_redPlayers.clear();
-			_bluePlayers.clear();
-		}
-		
-		public BlockCheckerEngine getEvent()
-		{
-			return _engine;
-		}
-		
-		public void updateEvent()
-		{
-			_engine.updatePlayersOnStart(this);
-		}
-		
-		protected void checkAndShuffle()
-		{
-			int redSize = _redPlayers.size();
-			int blueSize = _bluePlayers.size();
-			if (redSize > (blueSize + 1))
-			{
-				broadCastPacketToTeam(SystemMessage.getSystemMessage(SystemMessageId.TEAM_ADJUSTED_BECAUSE_WRONG_POPULATION_RATIO));
-				int needed = redSize - (blueSize + 1);
-				for (int i = 0; i < (needed + 1); i++)
-				{
-					L2PcInstance plr = _redPlayers.get(i);
-					if (plr == null)
-					{
-						continue;
-					}
-					changePlayerToTeam(plr, _arena, 1);
-				}
-			}
-			else if (blueSize > (redSize + 1))
-			{
-				broadCastPacketToTeam(SystemMessage.getSystemMessage(SystemMessageId.TEAM_ADJUSTED_BECAUSE_WRONG_POPULATION_RATIO));
-				int needed = blueSize - (redSize + 1);
-				for (int i = 0; i < (needed + 1); i++)
-				{
-					L2PcInstance plr = _bluePlayers.get(i);
-					if (plr == null)
-					{
-						continue;
-					}
-					changePlayerToTeam(plr, _arena, 0);
-				}
-			}
-		}
+		_registrationPenalty.remove(objectId);
 	}
 	}
 	
 	
 	private void schedulePenaltyRemoval(int objId)
 	private void schedulePenaltyRemoval(int objId)
 	{
 	{
-		ThreadPoolManager.getInstance().scheduleGeneral(new PenaltyRemove(objId), 10000);
-	}
-	
-	private class PenaltyRemove implements Runnable
-	{
-		private final Integer objectId;
-		
-		public PenaltyRemove(Integer id)
-		{
-			objectId = id;
-		}
-		
-		@Override
-		public void run()
-		{
-			_registrationPenalty.remove(objectId);
-		}
+		ThreadPoolManager.getInstance().scheduleGeneral(new PenaltyRemoveTask(objId), 10000);
 	}
 	}
 	
 	
+	/**
+	 * Gets the single instance of {@code HandysBlockCheckerManager}.
+	 * @return single instance of {@code HandysBlockCheckerManager}
+	 */
 	public static HandysBlockCheckerManager getInstance()
 	public static HandysBlockCheckerManager getInstance()
 	{
 	{
 		return SingletonHolder._instance;
 		return SingletonHolder._instance;

+ 9 - 5
L2J_Server_BETA/java/com/l2jserver/gameserver/instancemanager/InstanceManager.java

@@ -38,7 +38,7 @@ import com.l2jserver.gameserver.model.instancezone.InstanceWorld;
 /**
 /**
  * @author evill33t, GodKratos
  * @author evill33t, GodKratos
  */
  */
-public class InstanceManager extends DocumentParser
+public final class InstanceManager extends DocumentParser
 {
 {
 	private static final Map<Integer, Instance> _instanceList = new FastMap<>();
 	private static final Map<Integer, Instance> _instanceList = new FastMap<>();
 	private final Map<Integer, InstanceWorld> _instanceWorlds = new FastMap<>();
 	private final Map<Integer, InstanceWorld> _instanceWorlds = new FastMap<>();
@@ -262,7 +262,7 @@ public class InstanceManager extends DocumentParser
 		{
 		{
 			return;
 			return;
 		}
 		}
-		Instance temp = _instanceList.get(instanceid);
+		final Instance temp = _instanceList.get(instanceid);
 		if (temp != null)
 		if (temp != null)
 		{
 		{
 			temp.removeNpcs();
 			temp.removeNpcs();
@@ -327,7 +327,7 @@ public class InstanceManager extends DocumentParser
 			return false;
 			return false;
 		}
 		}
 		
 		
-		Instance instance = new Instance(id);
+		final Instance instance = new Instance(id);
 		_instanceList.put(id, instance);
 		_instanceList.put(id, instance);
 		return true;
 		return true;
 	}
 	}
@@ -344,7 +344,7 @@ public class InstanceManager extends DocumentParser
 			return false;
 			return false;
 		}
 		}
 		
 		
-		Instance instance = new Instance(id);
+		final Instance instance = new Instance(id);
 		_instanceList.put(id, instance);
 		_instanceList.put(id, instance);
 		instance.loadInstanceTemplate(template);
 		instance.loadInstanceTemplate(template);
 		return true;
 		return true;
@@ -366,7 +366,7 @@ public class InstanceManager extends DocumentParser
 				_dynamic = 300000;
 				_dynamic = 300000;
 			}
 			}
 		}
 		}
-		Instance instance = new Instance(_dynamic);
+		final Instance instance = new Instance(_dynamic);
 		_instanceList.put(_dynamic, instance);
 		_instanceList.put(_dynamic, instance);
 		if (template != null)
 		if (template != null)
 		{
 		{
@@ -375,6 +375,10 @@ public class InstanceManager extends DocumentParser
 		return _dynamic;
 		return _dynamic;
 	}
 	}
 	
 	
+	/**
+	 * Gets the single instance of {@code InstanceManager}.
+	 * @return single instance of {@code InstanceManager}
+	 */
 	public static final InstanceManager getInstance()
 	public static final InstanceManager getInstance()
 	{
 	{
 		return SingletonHolder._instance;
 		return SingletonHolder._instance;

+ 4 - 0
L2J_Server_BETA/java/com/l2jserver/gameserver/instancemanager/ItemAuctionManager.java

@@ -160,6 +160,10 @@ public final class ItemAuctionManager
 		}
 		}
 	}
 	}
 	
 	
+	/**
+	 * Gets the single instance of {@code ItemAuctionManager}.
+	 * @return single instance of {@code ItemAuctionManager}
+	 */
 	public static final ItemAuctionManager getInstance()
 	public static final ItemAuctionManager getInstance()
 	{
 	{
 		return SingletonHolder._instance;
 		return SingletonHolder._instance;

+ 6 - 2
L2J_Server_BETA/java/com/l2jserver/gameserver/instancemanager/ItemsOnGroundManager.java

@@ -40,11 +40,11 @@ import com.l2jserver.util.L2FastList;
  * This class manage all items on ground.
  * This class manage all items on ground.
  * @author Enforcer
  * @author Enforcer
  */
  */
-public class ItemsOnGroundManager implements Runnable
+public final class ItemsOnGroundManager implements Runnable
 {
 {
 	private static final Logger _log = Logger.getLogger(ItemsOnGroundManager.class.getName());
 	private static final Logger _log = Logger.getLogger(ItemsOnGroundManager.class.getName());
 	
 	
-	protected List<L2ItemInstance> _items = new L2FastList<>(true);
+	private final List<L2ItemInstance> _items = new L2FastList<>(true);
 	
 	
 	protected ItemsOnGroundManager()
 	protected ItemsOnGroundManager()
 	{
 	{
@@ -249,6 +249,10 @@ public class ItemsOnGroundManager implements Runnable
 		}
 		}
 	}
 	}
 	
 	
+	/**
+	 * Gets the single instance of {@code ItemsOnGroundManager}.
+	 * @return single instance of {@code ItemsOnGroundManager}
+	 */
 	public static final ItemsOnGroundManager getInstance()
 	public static final ItemsOnGroundManager getInstance()
 	{
 	{
 		return SingletonHolder._instance;
 		return SingletonHolder._instance;

+ 10 - 62
L2J_Server_BETA/java/com/l2jserver/gameserver/instancemanager/MailManager.java

@@ -34,20 +34,19 @@ import javolution.util.FastList;
 import com.l2jserver.L2DatabaseFactory;
 import com.l2jserver.L2DatabaseFactory;
 import com.l2jserver.gameserver.ThreadPoolManager;
 import com.l2jserver.gameserver.ThreadPoolManager;
 import com.l2jserver.gameserver.idfactory.IdFactory;
 import com.l2jserver.gameserver.idfactory.IdFactory;
+import com.l2jserver.gameserver.instancemanager.tasks.MessageDeletionTask;
 import com.l2jserver.gameserver.model.L2World;
 import com.l2jserver.gameserver.model.L2World;
 import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
 import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
 import com.l2jserver.gameserver.model.entity.Message;
 import com.l2jserver.gameserver.model.entity.Message;
-import com.l2jserver.gameserver.network.SystemMessageId;
 import com.l2jserver.gameserver.network.serverpackets.ExNoticePostArrived;
 import com.l2jserver.gameserver.network.serverpackets.ExNoticePostArrived;
-import com.l2jserver.gameserver.network.serverpackets.SystemMessage;
 import com.l2jserver.util.L2FastMap;
 import com.l2jserver.util.L2FastMap;
 
 
 /**
 /**
  * @author Migi, DS
  * @author Migi, DS
  */
  */
-public class MailManager
+public final class MailManager
 {
 {
-	private static Logger _log = Logger.getLogger(MailManager.class.getName());
+	private static final Logger _log = Logger.getLogger(MailManager.class.getName());
 	
 	
 	private final Map<Integer, Message> _messages = new L2FastMap<>(true);
 	private final Map<Integer, Message> _messages = new L2FastMap<>(true);
 	
 	
@@ -66,7 +65,7 @@ public class MailManager
 			while (rs.next())
 			while (rs.next())
 			{
 			{
 				
 				
-				Message msg = new Message(rs);
+				final Message msg = new Message(rs);
 				
 				
 				int msgId = msg.getId();
 				int msgId = msg.getId();
 				_messages.put(msgId, msg);
 				_messages.put(msgId, msg);
@@ -143,7 +142,7 @@ public class MailManager
 	
 	
 	public final List<Message> getInbox(int objectId)
 	public final List<Message> getInbox(int objectId)
 	{
 	{
-		List<Message> inbox = new FastList<>();
+		final List<Message> inbox = new FastList<>();
 		for (Message msg : getMessages())
 		for (Message msg : getMessages())
 		{
 		{
 			if ((msg != null) && (msg.getReceiverId() == objectId) && !msg.isDeletedByReceiver())
 			if ((msg != null) && (msg.getReceiverId() == objectId) && !msg.isDeletedByReceiver())
@@ -156,7 +155,7 @@ public class MailManager
 	
 	
 	public final List<Message> getOutbox(int objectId)
 	public final List<Message> getOutbox(int objectId)
 	{
 	{
-		List<Message> outbox = new FastList<>();
+		final List<Message> outbox = new FastList<>();
 		for (Message msg : getMessages())
 		for (Message msg : getMessages())
 		{
 		{
 			if ((msg != null) && (msg.getSenderId() == objectId) && !msg.isDeletedBySender())
 			if ((msg != null) && (msg.getSenderId() == objectId) && !msg.isDeletedBySender())
@@ -189,61 +188,6 @@ public class MailManager
 		ThreadPoolManager.getInstance().scheduleGeneral(new MessageDeletionTask(msg.getId()), msg.getExpiration() - System.currentTimeMillis());
 		ThreadPoolManager.getInstance().scheduleGeneral(new MessageDeletionTask(msg.getId()), msg.getExpiration() - System.currentTimeMillis());
 	}
 	}
 	
 	
-	private class MessageDeletionTask implements Runnable
-	{
-		private final Logger _log = Logger.getLogger(MessageDeletionTask.class.getName());
-		
-		final int _msgId;
-		
-		public MessageDeletionTask(int msgId)
-		{
-			_msgId = msgId;
-		}
-		
-		@Override
-		public void run()
-		{
-			final Message msg = getMessage(_msgId);
-			if (msg == null)
-			{
-				return;
-			}
-			
-			if (msg.hasAttachments())
-			{
-				try
-				{
-					final L2PcInstance sender = L2World.getInstance().getPlayer(msg.getSenderId());
-					if (sender != null)
-					{
-						msg.getAttachments().returnToWh(sender.getWarehouse());
-						sender.sendPacket(SystemMessageId.MAIL_RETURNED);
-					}
-					else
-					{
-						msg.getAttachments().returnToWh(null);
-					}
-					
-					msg.getAttachments().deleteMe();
-					msg.removeAttachments();
-					
-					final L2PcInstance receiver = L2World.getInstance().getPlayer(msg.getReceiverId());
-					if (receiver != null)
-					{
-						SystemMessage sm = SystemMessage.getSystemMessage(SystemMessageId.MAIL_RETURNED);
-						// sm.addString(msg.getReceiverName());
-						receiver.sendPacket(sm);
-					}
-				}
-				catch (Exception e)
-				{
-					_log.log(Level.WARNING, getClass().getSimpleName() + ": Error returning items:" + e.getMessage(), e);
-				}
-			}
-			deleteMessageInDb(msg.getId());
-		}
-	}
-	
 	public final void markAsReadInDb(int msgId)
 	public final void markAsReadInDb(int msgId)
 	{
 	{
 		try (Connection con = L2DatabaseFactory.getInstance().getConnection();
 		try (Connection con = L2DatabaseFactory.getInstance().getConnection();
@@ -317,6 +261,10 @@ public class MailManager
 		IdFactory.getInstance().releaseId(msgId);
 		IdFactory.getInstance().releaseId(msgId);
 	}
 	}
 	
 	
+	/**
+	 * Gets the single instance of {@code MailManager}.
+	 * @return single instance of {@code MailManager}
+	 */
 	public static MailManager getInstance()
 	public static MailManager getInstance()
 	{
 	{
 		return SingletonHolder._instance;
 		return SingletonHolder._instance;

+ 13 - 22
L2J_Server_BETA/java/com/l2jserver/gameserver/instancemanager/MapRegionManager.java

@@ -32,6 +32,7 @@ import com.l2jserver.gameserver.engines.DocumentParser;
 import com.l2jserver.gameserver.model.L2MapRegion;
 import com.l2jserver.gameserver.model.L2MapRegion;
 import com.l2jserver.gameserver.model.L2Object;
 import com.l2jserver.gameserver.model.L2Object;
 import com.l2jserver.gameserver.model.Location;
 import com.l2jserver.gameserver.model.Location;
+import com.l2jserver.gameserver.model.TeleportWhereType;
 import com.l2jserver.gameserver.model.actor.L2Character;
 import com.l2jserver.gameserver.model.actor.L2Character;
 import com.l2jserver.gameserver.model.actor.L2Npc;
 import com.l2jserver.gameserver.model.actor.L2Npc;
 import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
 import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
@@ -47,25 +48,11 @@ import com.l2jserver.gameserver.model.zone.type.L2RespawnZone;
 /**
 /**
  * @author Nyaran
  * @author Nyaran
  */
  */
-public class MapRegionManager extends DocumentParser
+public final class MapRegionManager extends DocumentParser
 {
 {
 	private static final Map<String, L2MapRegion> _regions = new HashMap<>();
 	private static final Map<String, L2MapRegion> _regions = new HashMap<>();
 	private static final String defaultRespawn = "talking_island_town";
 	private static final String defaultRespawn = "talking_island_town";
 	
 	
-	public static enum TeleportWhereType
-	{
-		Castle,
-		Castle_banish,
-		ClanHall,
-		ClanHall_banish,
-		SiegeFlag,
-		Town,
-		Fortress,
-		Fortress_banish,
-		Territory,
-		Territory_banish
-	}
-	
 	protected MapRegionManager()
 	protected MapRegionManager()
 	{
 	{
 		load();
 		load();
@@ -272,7 +259,7 @@ public class MapRegionManager extends DocumentParser
 			if ((player.getClan() != null) && !player.isFlyingMounted() && !player.isFlying()) // flying players in gracia cant use teleports to aden continent
 			if ((player.getClan() != null) && !player.isFlyingMounted() && !player.isFlying()) // flying players in gracia cant use teleports to aden continent
 			{
 			{
 				// If teleport to clan hall
 				// If teleport to clan hall
-				if (teleportWhere == TeleportWhereType.ClanHall)
+				if (teleportWhere == TeleportWhereType.CLANHALL)
 				{
 				{
 					clanhall = ClanHallManager.getInstance().getAbstractHallByOwner(player.getClan());
 					clanhall = ClanHallManager.getInstance().getAbstractHallByOwner(player.getClan());
 					if (clanhall != null)
 					if (clanhall != null)
@@ -290,7 +277,7 @@ public class MapRegionManager extends DocumentParser
 				}
 				}
 				
 				
 				// If teleport to castle
 				// If teleport to castle
-				if (teleportWhere == TeleportWhereType.Castle)
+				if (teleportWhere == TeleportWhereType.CASTLE)
 				{
 				{
 					castle = CastleManager.getInstance().getCastleByOwner(player.getClan());
 					castle = CastleManager.getInstance().getCastleByOwner(player.getClan());
 					// Otherwise check if player is on castle or fortress ground
 					// Otherwise check if player is on castle or fortress ground
@@ -315,7 +302,7 @@ public class MapRegionManager extends DocumentParser
 				}
 				}
 				
 				
 				// If teleport to fortress
 				// If teleport to fortress
-				if (teleportWhere == TeleportWhereType.Fortress)
+				if (teleportWhere == TeleportWhereType.FORTRESS)
 				{
 				{
 					fort = FortManager.getInstance().getFortByOwner(player.getClan());
 					fort = FortManager.getInstance().getFortByOwner(player.getClan());
 					// Otherwise check if player is on castle or fortress ground
 					// Otherwise check if player is on castle or fortress ground
@@ -340,7 +327,7 @@ public class MapRegionManager extends DocumentParser
 				}
 				}
 				
 				
 				// If teleport to SiegeHQ
 				// If teleport to SiegeHQ
-				if (teleportWhere == TeleportWhereType.SiegeFlag)
+				if (teleportWhere == TeleportWhereType.SIEGEFLAG)
 				{
 				{
 					castle = CastleManager.getInstance().getCastle(player);
 					castle = CastleManager.getInstance().getCastle(player);
 					fort = FortManager.getInstance().getFort(player);
 					fort = FortManager.getInstance().getFort(player);
@@ -389,7 +376,7 @@ public class MapRegionManager extends DocumentParser
 				}
 				}
 			}
 			}
 			
 			
-			if (teleportWhere == TeleportWhereType.Castle_banish)
+			if (teleportWhere == TeleportWhereType.CASTLE_BANISH)
 			{
 			{
 				castle = CastleManager.getInstance().getCastle(player);
 				castle = CastleManager.getInstance().getCastle(player);
 				if (castle != null)
 				if (castle != null)
@@ -397,7 +384,7 @@ public class MapRegionManager extends DocumentParser
 					return castle.getCastleZone().getBanishSpawnLoc();
 					return castle.getCastleZone().getBanishSpawnLoc();
 				}
 				}
 			}
 			}
-			else if (teleportWhere == TeleportWhereType.Fortress_banish)
+			else if (teleportWhere == TeleportWhereType.FORTRESS_BANISH)
 			{
 			{
 				fort = FortManager.getInstance().getFort(activeChar);
 				fort = FortManager.getInstance().getFort(activeChar);
 				if (fort != null)
 				if (fort != null)
@@ -405,7 +392,7 @@ public class MapRegionManager extends DocumentParser
 					return fort.getFortZone().getBanishSpawnLoc();
 					return fort.getFortZone().getBanishSpawnLoc();
 				}
 				}
 			}
 			}
-			else if (teleportWhere == TeleportWhereType.ClanHall_banish)
+			else if (teleportWhere == TeleportWhereType.CLANHALL_BANISH)
 			{
 			{
 				clanhall = ClanHallManager.getInstance().getClanHall(activeChar);
 				clanhall = ClanHallManager.getInstance().getClanHall(activeChar);
 				if (clanhall != null)
 				if (clanhall != null)
@@ -515,6 +502,10 @@ public class MapRegionManager extends DocumentParser
 		return _regions.get(regionName);
 		return _regions.get(regionName);
 	}
 	}
 	
 	
+	/**
+	 * Gets the single instance of {@code MapRegionManager}.
+	 * @return single instance of {@code MapRegionManager}
+	 */
 	public static MapRegionManager getInstance()
 	public static MapRegionManager getInstance()
 	{
 	{
 		return SingletonHolder._instance;
 		return SingletonHolder._instance;

+ 5 - 1
L2J_Server_BETA/java/com/l2jserver/gameserver/instancemanager/MercTicketManager.java

@@ -45,7 +45,7 @@ import com.l2jserver.gameserver.model.items.instance.L2ItemInstance;
  * Finally, we provide auxiliary functions to identify the castle in which each item (and its corresponding NPC) belong to, in order to help avoid mixing them up.
  * Finally, we provide auxiliary functions to identify the castle in which each item (and its corresponding NPC) belong to, in order to help avoid mixing them up.
  * @author yellowperil, Fulminus
  * @author yellowperil, Fulminus
  */
  */
-public class MercTicketManager
+public final class MercTicketManager
 {
 {
 	private static final Logger _log = Logger.getLogger(MercTicketManager.class.getName());
 	private static final Logger _log = Logger.getLogger(MercTicketManager.class.getName());
 	
 	
@@ -423,6 +423,10 @@ public class MercTicketManager
 		return _droppedTickets;
 		return _droppedTickets;
 	}
 	}
 	
 	
+	/**
+	 * Gets the single instance of {@code MercTicketManager}.
+	 * @return single instance of {@code MercTicketManager}
+	 */
 	public static final MercTicketManager getInstance()
 	public static final MercTicketManager getInstance()
 	{
 	{
 		return SingletonHolder._instance;
 		return SingletonHolder._instance;

+ 34 - 212
L2J_Server_BETA/java/com/l2jserver/gameserver/instancemanager/PetitionManager.java

@@ -21,22 +21,18 @@ package com.l2jserver.gameserver.instancemanager;
 import java.text.SimpleDateFormat;
 import java.text.SimpleDateFormat;
 import java.util.Date;
 import java.util.Date;
 import java.util.HashMap;
 import java.util.HashMap;
-import java.util.List;
 import java.util.Map;
 import java.util.Map;
 import java.util.logging.Logger;
 import java.util.logging.Logger;
 
 
-import javolution.util.FastList;
-
 import com.l2jserver.Config;
 import com.l2jserver.Config;
 import com.l2jserver.gameserver.datatables.AdminTable;
 import com.l2jserver.gameserver.datatables.AdminTable;
-import com.l2jserver.gameserver.idfactory.IdFactory;
+import com.l2jserver.gameserver.model.Petition;
+import com.l2jserver.gameserver.model.PetitionState;
 import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
 import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
 import com.l2jserver.gameserver.network.SystemMessageId;
 import com.l2jserver.gameserver.network.SystemMessageId;
 import com.l2jserver.gameserver.network.clientpackets.Say2;
 import com.l2jserver.gameserver.network.clientpackets.Say2;
 import com.l2jserver.gameserver.network.serverpackets.CreatureSay;
 import com.l2jserver.gameserver.network.serverpackets.CreatureSay;
-import com.l2jserver.gameserver.network.serverpackets.L2GameServerPacket;
 import com.l2jserver.gameserver.network.serverpackets.NpcHtmlMessage;
 import com.l2jserver.gameserver.network.serverpackets.NpcHtmlMessage;
-import com.l2jserver.gameserver.network.serverpackets.PetitionVotePacket;
 import com.l2jserver.gameserver.network.serverpackets.SystemMessage;
 import com.l2jserver.gameserver.network.serverpackets.SystemMessage;
 import com.l2jserver.util.StringUtil;
 import com.l2jserver.util.StringUtil;
 
 
@@ -51,189 +47,6 @@ public final class PetitionManager
 	private final Map<Integer, Petition> _pendingPetitions;
 	private final Map<Integer, Petition> _pendingPetitions;
 	private final Map<Integer, Petition> _completedPetitions;
 	private final Map<Integer, Petition> _completedPetitions;
 	
 	
-	private static enum PetitionState
-	{
-		Pending,
-		Responder_Cancel,
-		Responder_Missing,
-		Responder_Reject,
-		Responder_Complete,
-		Petitioner_Cancel,
-		Petitioner_Missing,
-		In_Process,
-		Completed
-	}
-	
-	private static enum PetitionType
-	{
-		Immobility,
-		Recovery_Related,
-		Bug_Report,
-		Quest_Related,
-		Bad_User,
-		Suggestions,
-		Game_Tip,
-		Operation_Related,
-		Other
-	}
-	
-	public static PetitionManager getInstance()
-	{
-		return SingletonHolder._instance;
-	}
-	
-	private class Petition
-	{
-		private final long _submitTime = System.currentTimeMillis();
-		
-		private final int _id;
-		private final PetitionType _type;
-		private PetitionState _state = PetitionState.Pending;
-		private final String _content;
-		
-		private final List<CreatureSay> _messageLog = new FastList<>();
-		
-		private final L2PcInstance _petitioner;
-		private L2PcInstance _responder;
-		
-		public Petition(L2PcInstance petitioner, String petitionText, int petitionType)
-		{
-			petitionType--;
-			_id = IdFactory.getInstance().getNextId();
-			if (petitionType >= PetitionType.values().length)
-			{
-				_log.warning(getClass().getSimpleName() + ": Petition : invalid petition type (received type was +1) : " + petitionType);
-			}
-			_type = PetitionType.values()[petitionType];
-			_content = petitionText;
-			
-			_petitioner = petitioner;
-		}
-		
-		protected boolean addLogMessage(CreatureSay cs)
-		{
-			return _messageLog.add(cs);
-		}
-		
-		protected List<CreatureSay> getLogMessages()
-		{
-			return _messageLog;
-		}
-		
-		public boolean endPetitionConsultation(PetitionState endState)
-		{
-			setState(endState);
-			
-			if ((getResponder() != null) && getResponder().isOnline())
-			{
-				if (endState == PetitionState.Responder_Reject)
-				{
-					getPetitioner().sendMessage("Your petition was rejected. Please try again later.");
-				}
-				else
-				{
-					// Ending petition consultation with <Player>.
-					SystemMessage sm = SystemMessage.getSystemMessage(SystemMessageId.PETITION_ENDED_WITH_C1);
-					sm.addString(getPetitioner().getName());
-					getResponder().sendPacket(sm);
-					
-					if (endState == PetitionState.Petitioner_Cancel)
-					{
-						// Receipt No. <ID> petition cancelled.
-						sm = SystemMessage.getSystemMessage(SystemMessageId.RECENT_NO_S1_CANCELED);
-						sm.addNumber(getId());
-						getResponder().sendPacket(sm);
-					}
-				}
-			}
-			
-			// End petition consultation and inform them, if they are still online. And if petitioner is online, enable Evaluation button
-			if ((getPetitioner() != null) && getPetitioner().isOnline())
-			{
-				getPetitioner().sendPacket(SystemMessageId.THIS_END_THE_PETITION_PLEASE_PROVIDE_FEEDBACK);
-				getPetitioner().sendPacket(PetitionVotePacket.STATIC_PACKET);
-			}
-			
-			getCompletedPetitions().put(getId(), this);
-			return (getPendingPetitions().remove(getId()) != null);
-		}
-		
-		public String getContent()
-		{
-			return _content;
-		}
-		
-		public int getId()
-		{
-			return _id;
-		}
-		
-		public L2PcInstance getPetitioner()
-		{
-			return _petitioner;
-		}
-		
-		public L2PcInstance getResponder()
-		{
-			return _responder;
-		}
-		
-		public long getSubmitTime()
-		{
-			return _submitTime;
-		}
-		
-		public PetitionState getState()
-		{
-			return _state;
-		}
-		
-		public String getTypeAsString()
-		{
-			return _type.toString().replace("_", " ");
-		}
-		
-		public void sendPetitionerPacket(L2GameServerPacket responsePacket)
-		{
-			if ((getPetitioner() == null) || !getPetitioner().isOnline())
-			{
-				// Allows petitioners to see the results of their petition when
-				// they log back into the game.
-				
-				// endPetitionConsultation(PetitionState.Petitioner_Missing);
-				return;
-			}
-			
-			getPetitioner().sendPacket(responsePacket);
-		}
-		
-		public void sendResponderPacket(L2GameServerPacket responsePacket)
-		{
-			if ((getResponder() == null) || !getResponder().isOnline())
-			{
-				endPetitionConsultation(PetitionState.Responder_Missing);
-				return;
-			}
-			
-			getResponder().sendPacket(responsePacket);
-		}
-		
-		public void setState(PetitionState state)
-		{
-			_state = state;
-		}
-		
-		public void setResponder(L2PcInstance respondingAdmin)
-		{
-			if (getResponder() != null)
-			{
-				return;
-			}
-			
-			_responder = respondingAdmin;
-		}
-	}
-	
 	protected PetitionManager()
 	protected PetitionManager()
 	{
 	{
 		_pendingPetitions = new HashMap<>();
 		_pendingPetitions = new HashMap<>();
@@ -242,7 +55,7 @@ public final class PetitionManager
 	
 	
 	public void clearCompletedPetitions()
 	public void clearCompletedPetitions()
 	{
 	{
-		int numPetitions = getPendingPetitionCount();
+		final int numPetitions = getPendingPetitionCount();
 		
 		
 		getCompletedPetitions().clear();
 		getCompletedPetitions().clear();
 		_log.info(getClass().getSimpleName() + ": Completed petition data cleared. " + numPetitions + " petition(s) removed.");
 		_log.info(getClass().getSimpleName() + ": Completed petition data cleared. " + numPetitions + " petition(s) removed.");
@@ -250,7 +63,7 @@ public final class PetitionManager
 	
 	
 	public void clearPendingPetitions()
 	public void clearPendingPetitions()
 	{
 	{
-		int numPetitions = getPendingPetitionCount();
+		final int numPetitions = getPendingPetitionCount();
 		
 		
 		getPendingPetitions().clear();
 		getPendingPetitions().clear();
 		_log.info(getClass().getSimpleName() + ": Pending petition queue cleared. " + numPetitions + " petition(s) removed.");
 		_log.info(getClass().getSimpleName() + ": Pending petition queue cleared. " + numPetitions + " petition(s) removed.");
@@ -263,7 +76,7 @@ public final class PetitionManager
 			return false;
 			return false;
 		}
 		}
 		
 		
-		Petition currPetition = getPendingPetitions().get(petitionId);
+		final Petition currPetition = getPendingPetitions().get(petitionId);
 		
 		
 		if (currPetition.getResponder() != null)
 		if (currPetition.getResponder() != null)
 		{
 		{
@@ -271,7 +84,7 @@ public final class PetitionManager
 		}
 		}
 		
 		
 		currPetition.setResponder(respondingAdmin);
 		currPetition.setResponder(respondingAdmin);
-		currPetition.setState(PetitionState.In_Process);
+		currPetition.setState(PetitionState.IN_PROCESS);
 		
 		
 		// Petition application accepted. (Send to Petitioner)
 		// Petition application accepted. (Send to Petitioner)
 		currPetition.sendPetitionerPacket(SystemMessage.getSystemMessage(SystemMessageId.PETITION_APP_ACCEPTED));
 		currPetition.sendPetitionerPacket(SystemMessage.getSystemMessage(SystemMessageId.PETITION_APP_ACCEPTED));
@@ -297,12 +110,12 @@ public final class PetitionManager
 		{
 		{
 			if ((currPetition.getPetitioner() != null) && (currPetition.getPetitioner().getObjectId() == player.getObjectId()))
 			if ((currPetition.getPetitioner() != null) && (currPetition.getPetitioner().getObjectId() == player.getObjectId()))
 			{
 			{
-				return (currPetition.endPetitionConsultation(PetitionState.Petitioner_Cancel));
+				return (currPetition.endPetitionConsultation(PetitionState.PETITIONER_CANCEL));
 			}
 			}
 			
 			
 			if ((currPetition.getResponder() != null) && (currPetition.getResponder().getObjectId() == player.getObjectId()))
 			if ((currPetition.getResponder() != null) && (currPetition.getResponder().getObjectId() == player.getObjectId()))
 			{
 			{
-				return (currPetition.endPetitionConsultation(PetitionState.Responder_Cancel));
+				return (currPetition.endPetitionConsultation(PetitionState.RESPONDER_CANCEL));
 			}
 			}
 		}
 		}
 		
 		
@@ -349,19 +162,19 @@ public final class PetitionManager
 			
 			
 			if ((currPetition.getResponder() != null) && (currPetition.getResponder().getObjectId() == player.getObjectId()))
 			if ((currPetition.getResponder() != null) && (currPetition.getResponder().getObjectId() == player.getObjectId()))
 			{
 			{
-				return (currPetition.endPetitionConsultation(PetitionState.Completed));
+				return (currPetition.endPetitionConsultation(PetitionState.COMPLETED));
 			}
 			}
 		}
 		}
 		
 		
 		return false;
 		return false;
 	}
 	}
 	
 	
-	protected Map<Integer, Petition> getCompletedPetitions()
+	public Map<Integer, Petition> getCompletedPetitions()
 	{
 	{
 		return _completedPetitions;
 		return _completedPetitions;
 	}
 	}
 	
 	
-	protected Map<Integer, Petition> getPendingPetitions()
+	public Map<Integer, Petition> getPendingPetitions()
 	{
 	{
 		return _pendingPetitions;
 		return _pendingPetitions;
 	}
 	}
@@ -418,7 +231,7 @@ public final class PetitionManager
 				continue;
 				continue;
 			}
 			}
 			
 			
-			if (currPetition.getState() == PetitionState.In_Process)
+			if (currPetition.getState() == PetitionState.IN_PROCESS)
 			{
 			{
 				return true;
 				return true;
 			}
 			}
@@ -434,8 +247,8 @@ public final class PetitionManager
 			return false;
 			return false;
 		}
 		}
 		
 		
-		Petition currPetition = getPendingPetitions().get(petitionId);
-		return (currPetition.getState() == PetitionState.In_Process);
+		final Petition currPetition = getPendingPetitions().get(petitionId);
+		return (currPetition.getState() == PetitionState.IN_PROCESS);
 	}
 	}
 	
 	
 	public boolean isPlayerInConsultation(L2PcInstance player)
 	public boolean isPlayerInConsultation(L2PcInstance player)
@@ -449,7 +262,7 @@ public final class PetitionManager
 					continue;
 					continue;
 				}
 				}
 				
 				
-				if (currPetition.getState() != PetitionState.In_Process)
+				if (currPetition.getState() != PetitionState.IN_PROCESS)
 				{
 				{
 					continue;
 					continue;
 				}
 				}
@@ -502,7 +315,7 @@ public final class PetitionManager
 			return false;
 			return false;
 		}
 		}
 		
 		
-		Petition currPetition = getPendingPetitions().get(petitionId);
+		final Petition currPetition = getPendingPetitions().get(petitionId);
 		
 		
 		if (currPetition.getResponder() != null)
 		if (currPetition.getResponder() != null)
 		{
 		{
@@ -510,7 +323,7 @@ public final class PetitionManager
 		}
 		}
 		
 		
 		currPetition.setResponder(respondingAdmin);
 		currPetition.setResponder(respondingAdmin);
-		return (currPetition.endPetitionConsultation(PetitionState.Responder_Reject));
+		return (currPetition.endPetitionConsultation(PetitionState.RESPONDER_REJECT));
 	}
 	}
 	
 	
 	public boolean sendActivePetitionMessage(L2PcInstance player, String messageText)
 	public boolean sendActivePetitionMessage(L2PcInstance player, String messageText)
@@ -555,7 +368,7 @@ public final class PetitionManager
 	{
 	{
 		final StringBuilder htmlContent = StringUtil.startAppend(600 + (getPendingPetitionCount() * 300), "<html><body><center><table width=270><tr>" + "<td width=45><button value=\"Main\" action=\"bypass -h admin_admin\" width=45 height=21 back=\"L2UI_ct1.button_df\" fore=\"L2UI_ct1.button_df\"></td>" + "<td width=180><center>Petition Menu</center></td>" + "<td width=45><button value=\"Back\" action=\"bypass -h admin_admin7\" width=45 height=21 back=\"L2UI_ct1.button_df\" fore=\"L2UI_ct1.button_df\"></td></tr></table><br>" + "<table width=\"270\">" + "<tr><td><table width=\"270\"><tr><td><button value=\"Reset\" action=\"bypass -h admin_reset_petitions\" width=\"80\" height=\"21\" back=\"L2UI_ct1.button_df\" fore=\"L2UI_ct1.button_df\"></td>" + "<td align=right><button value=\"Refresh\" action=\"bypass -h admin_view_petitions\" width=\"80\" height=\"21\" back=\"L2UI_ct1.button_df\" fore=\"L2UI_ct1.button_df\"></td></tr></table><br></td></tr>");
 		final StringBuilder htmlContent = StringUtil.startAppend(600 + (getPendingPetitionCount() * 300), "<html><body><center><table width=270><tr>" + "<td width=45><button value=\"Main\" action=\"bypass -h admin_admin\" width=45 height=21 back=\"L2UI_ct1.button_df\" fore=\"L2UI_ct1.button_df\"></td>" + "<td width=180><center>Petition Menu</center></td>" + "<td width=45><button value=\"Back\" action=\"bypass -h admin_admin7\" width=45 height=21 back=\"L2UI_ct1.button_df\" fore=\"L2UI_ct1.button_df\"></td></tr></table><br>" + "<table width=\"270\">" + "<tr><td><table width=\"270\"><tr><td><button value=\"Reset\" action=\"bypass -h admin_reset_petitions\" width=\"80\" height=\"21\" back=\"L2UI_ct1.button_df\" fore=\"L2UI_ct1.button_df\"></td>" + "<td align=right><button value=\"Refresh\" action=\"bypass -h admin_view_petitions\" width=\"80\" height=\"21\" back=\"L2UI_ct1.button_df\" fore=\"L2UI_ct1.button_df\"></td></tr></table><br></td></tr>");
 		
 		
-		SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm");
+		final SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm");
 		
 		
 		if (getPendingPetitionCount() == 0)
 		if (getPendingPetitionCount() == 0)
 		{
 		{
@@ -578,7 +391,7 @@ public final class PetitionManager
 			StringUtil.append(htmlContent, "<tr><td width=\"270\"><table width=\"270\" cellpadding=\"2\" bgcolor=", (color ? "131210" : "444444"), "><tr><td width=\"130\">", dateFormat.format(new Date(currPetition.getSubmitTime())));
 			StringUtil.append(htmlContent, "<tr><td width=\"270\"><table width=\"270\" cellpadding=\"2\" bgcolor=", (color ? "131210" : "444444"), "><tr><td width=\"130\">", dateFormat.format(new Date(currPetition.getSubmitTime())));
 			StringUtil.append(htmlContent, "</td><td width=\"140\" align=right><font color=\"", (currPetition.getPetitioner().isOnline() ? "00FF00" : "999999"), "\">", currPetition.getPetitioner().getName(), "</font></td></tr>");
 			StringUtil.append(htmlContent, "</td><td width=\"140\" align=right><font color=\"", (currPetition.getPetitioner().isOnline() ? "00FF00" : "999999"), "\">", currPetition.getPetitioner().getName(), "</font></td></tr>");
 			StringUtil.append(htmlContent, "<tr><td width=\"130\">");
 			StringUtil.append(htmlContent, "<tr><td width=\"130\">");
-			if (currPetition.getState() != PetitionState.In_Process)
+			if (currPetition.getState() != PetitionState.IN_PROCESS)
 			{
 			{
 				StringUtil.append(htmlContent, "<table width=\"130\" cellpadding=\"2\"><tr>" + "<td><button value=\"View\" action=\"bypass -h admin_view_petition ", String.valueOf(currPetition.getId()), "\" width=\"50\" height=\"21\" back=\"L2UI_ct1.button_df\" fore=\"L2UI_ct1.button_df\"></td>" + "<td><button value=\"Reject\" action=\"bypass -h admin_reject_petition ", String.valueOf(currPetition.getId()), "\" width=\"50\" height=\"21\" back=\"L2UI_ct1.button_df\" fore=\"L2UI_ct1.button_df\"></td></tr></table>");
 				StringUtil.append(htmlContent, "<table width=\"130\" cellpadding=\"2\"><tr>" + "<td><button value=\"View\" action=\"bypass -h admin_view_petition ", String.valueOf(currPetition.getId()), "\" width=\"50\" height=\"21\" back=\"L2UI_ct1.button_df\" fore=\"L2UI_ct1.button_df\"></td>" + "<td><button value=\"Reject\" action=\"bypass -h admin_reject_petition ", String.valueOf(currPetition.getId()), "\" width=\"50\" height=\"21\" back=\"L2UI_ct1.button_df\" fore=\"L2UI_ct1.button_df\"></td></tr></table>");
 			}
 			}
@@ -598,7 +411,7 @@ public final class PetitionManager
 		
 		
 		htmlContent.append("</table></center></body></html>");
 		htmlContent.append("</table></center></body></html>");
 		
 		
-		NpcHtmlMessage htmlMsg = new NpcHtmlMessage(0);
+		final NpcHtmlMessage htmlMsg = new NpcHtmlMessage(0);
 		htmlMsg.setHtml(htmlContent.toString());
 		htmlMsg.setHtml(htmlContent.toString());
 		activeChar.sendPacket(htmlMsg);
 		activeChar.sendPacket(htmlMsg);
 	}
 	}
@@ -606,12 +419,12 @@ public final class PetitionManager
 	public int submitPetition(L2PcInstance petitioner, String petitionText, int petitionType)
 	public int submitPetition(L2PcInstance petitioner, String petitionText, int petitionType)
 	{
 	{
 		// Create a new petition instance and add it to the list of pending petitions.
 		// Create a new petition instance and add it to the list of pending petitions.
-		Petition newPetition = new Petition(petitioner, petitionText, petitionType);
+		final Petition newPetition = new Petition(petitioner, petitionText, petitionType);
 		int newPetitionId = newPetition.getId();
 		int newPetitionId = newPetition.getId();
 		getPendingPetitions().put(newPetitionId, newPetition);
 		getPendingPetitions().put(newPetitionId, newPetition);
 		
 		
 		// Notify all GMs that a new petition has been submitted.
 		// Notify all GMs that a new petition has been submitted.
-		String msgContent = petitioner.getName() + " has submitted a new petition."; // (ID: " + newPetitionId + ").";
+		final String msgContent = petitioner.getName() + " has submitted a new petition."; // (ID: " + newPetitionId + ").";
 		AdminTable.getInstance().broadcastToGMs(new CreatureSay(petitioner.getObjectId(), Say2.HERO_VOICE, "Petition System", msgContent));
 		AdminTable.getInstance().broadcastToGMs(new CreatureSay(petitioner.getObjectId(), Say2.HERO_VOICE, "Petition System", msgContent));
 		
 		
 		return newPetitionId;
 		return newPetitionId;
@@ -629,10 +442,10 @@ public final class PetitionManager
 			return;
 			return;
 		}
 		}
 		
 		
-		Petition currPetition = getPendingPetitions().get(petitionId);
-		SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm");
+		final Petition currPetition = getPendingPetitions().get(petitionId);
+		final SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm");
 		
 		
-		NpcHtmlMessage html = new NpcHtmlMessage(0);
+		final NpcHtmlMessage html = new NpcHtmlMessage(0);
 		html.setFile(activeChar.getHtmlPrefix(), "data/html/admin/petition.htm");
 		html.setFile(activeChar.getHtmlPrefix(), "data/html/admin/petition.htm");
 		html.replace("%petition%", String.valueOf(currPetition.getId()));
 		html.replace("%petition%", String.valueOf(currPetition.getId()));
 		html.replace("%time%", dateFormat.format(new Date(currPetition.getSubmitTime())));
 		html.replace("%time%", dateFormat.format(new Date(currPetition.getSubmitTime())));
@@ -644,6 +457,15 @@ public final class PetitionManager
 		activeChar.sendPacket(html);
 		activeChar.sendPacket(html);
 	}
 	}
 	
 	
+	/**
+	 * Gets the single instance of {@code PetitionManager}.
+	 * @return single instance of {@code PetitionManager}
+	 */
+	public final static PetitionManager getInstance()
+	{
+		return SingletonHolder._instance;
+	}
+	
 	private static class SingletonHolder
 	private static class SingletonHolder
 	{
 	{
 		protected static final PetitionManager _instance = new PetitionManager();
 		protected static final PetitionManager _instance = new PetitionManager();

+ 5 - 1
L2J_Server_BETA/java/com/l2jserver/gameserver/instancemanager/PunishmentManager.java

@@ -35,7 +35,7 @@ import com.l2jserver.gameserver.model.punishment.PunishmentType;
 /**
 /**
  * @author UnAfraid
  * @author UnAfraid
  */
  */
-public class PunishmentManager
+public final class PunishmentManager
 {
 {
 	private static final Logger _log = Logger.getLogger(PunishmentManager.class.getName());
 	private static final Logger _log = Logger.getLogger(PunishmentManager.class.getName());
 	
 	
@@ -124,6 +124,10 @@ public class PunishmentManager
 		return _tasks.get(affect).getPunishment(String.valueOf(key), type);
 		return _tasks.get(affect).getPunishment(String.valueOf(key), type);
 	}
 	}
 	
 	
+	/**
+	 * Gets the single instance of {@code PunishmentManager}.
+	 * @return single instance of {@code PunishmentManager}
+	 */
 	public static final PunishmentManager getInstance()
 	public static final PunishmentManager getInstance()
 	{
 	{
 		return SingletonHolder._instance;
 		return SingletonHolder._instance;

+ 8 - 4
L2J_Server_BETA/java/com/l2jserver/gameserver/instancemanager/QuestManager.java

@@ -30,7 +30,7 @@ import com.l2jserver.gameserver.scripting.L2ScriptEngineManager;
 import com.l2jserver.gameserver.scripting.ScriptManager;
 import com.l2jserver.gameserver.scripting.ScriptManager;
 import com.l2jserver.util.L2FastMap;
 import com.l2jserver.util.L2FastMap;
 
 
-public class QuestManager extends ScriptManager<Quest>
+public final class QuestManager extends ScriptManager<Quest>
 {
 {
 	protected static final Logger _log = Logger.getLogger(QuestManager.class.getName());
 	protected static final Logger _log = Logger.getLogger(QuestManager.class.getName());
 	
 	
@@ -42,7 +42,7 @@ public class QuestManager extends ScriptManager<Quest>
 	
 	
 	public final boolean reload(String questFolder)
 	public final boolean reload(String questFolder)
 	{
 	{
-		Quest q = getQuest(questFolder);
+		final Quest q = getQuest(questFolder);
 		if (q == null)
 		if (q == null)
 		{
 		{
 			return false;
 			return false;
@@ -58,7 +58,7 @@ public class QuestManager extends ScriptManager<Quest>
 	 */
 	 */
 	public final boolean reload(int questId)
 	public final boolean reload(int questId)
 	{
 	{
-		Quest q = getQuest(questId);
+		final Quest q = getQuest(questId);
 		if (q == null)
 		if (q == null)
 		{
 		{
 			return false;
 			return false;
@@ -127,7 +127,7 @@ public class QuestManager extends ScriptManager<Quest>
 		{
 		{
 			throw new IllegalArgumentException("Quest argument cannot be null");
 			throw new IllegalArgumentException("Quest argument cannot be null");
 		}
 		}
-		Quest old = _quests.get(newQuest.getName());
+		final Quest old = _quests.get(newQuest.getName());
 		
 		
 		// FIXME: unloading the old quest at this point is a tad too late.
 		// FIXME: unloading the old quest at this point is a tad too late.
 		// the new quest has already initialized itself and read the data, starting
 		// the new quest has already initialized itself and read the data, starting
@@ -171,6 +171,10 @@ public class QuestManager extends ScriptManager<Quest>
 		return getClass().getSimpleName();
 		return getClass().getSimpleName();
 	}
 	}
 	
 	
+	/**
+	 * Gets the single instance of {@code QuestManager}.
+	 * @return single instance of {@code QuestManager}
+	 */
 	public static final QuestManager getInstance()
 	public static final QuestManager getInstance()
 	{
 	{
 		return SingletonHolder._instance;
 		return SingletonHolder._instance;

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

@@ -34,7 +34,7 @@ import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
 import com.l2jserver.gameserver.model.actor.templates.L2NpcTemplate;
 import com.l2jserver.gameserver.model.actor.templates.L2NpcTemplate;
 import com.l2jserver.gameserver.model.entity.Castle;
 import com.l2jserver.gameserver.model.entity.Castle;
 
 
-public class SiegeGuardManager
+public final class SiegeGuardManager
 {
 {
 	private static Logger _log = Logger.getLogger(SiegeGuardManager.class.getName());
 	private static Logger _log = Logger.getLogger(SiegeGuardManager.class.getName());
 	
 	

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

@@ -45,7 +45,7 @@ import com.l2jserver.gameserver.model.entity.Siege;
 import com.l2jserver.gameserver.model.skills.L2Skill;
 import com.l2jserver.gameserver.model.skills.L2Skill;
 import com.l2jserver.util.L2Properties;
 import com.l2jserver.util.L2Properties;
 
 
-public class SiegeManager
+public final class SiegeManager
 {
 {
 	private static final Logger _log = Logger.getLogger(SiegeManager.class.getName());
 	private static final Logger _log = Logger.getLogger(SiegeManager.class.getName());
 	
 	

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

@@ -68,7 +68,7 @@ import com.l2jserver.gameserver.network.serverpackets.SystemMessage;
 import com.l2jserver.gameserver.util.Util;
 import com.l2jserver.gameserver.util.Util;
 import com.l2jserver.util.L2Properties;
 import com.l2jserver.util.L2Properties;
 
 
-public class TerritoryWarManager implements Siegable
+public final class TerritoryWarManager implements Siegable
 {
 {
 	private static final Logger _log = Logger.getLogger(TerritoryWarManager.class.getName());
 	private static final Logger _log = Logger.getLogger(TerritoryWarManager.class.getName());
 	
 	

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

@@ -22,7 +22,7 @@ import com.l2jserver.gameserver.model.entity.Castle;
 import com.l2jserver.gameserver.model.zone.L2ZoneType;
 import com.l2jserver.gameserver.model.zone.L2ZoneType;
 import com.l2jserver.gameserver.model.zone.type.L2TownZone;
 import com.l2jserver.gameserver.model.zone.type.L2TownZone;
 
 
-public class TownManager
+public final class TownManager
 {
 {
 	public static final int getTownCastle(int townId)
 	public static final int getTownCastle(int townId)
 	{
 	{

+ 12 - 12
L2J_Server_BETA/java/com/l2jserver/gameserver/instancemanager/ZoneManager.java

@@ -50,7 +50,7 @@ import com.l2jserver.gameserver.model.zone.type.L2RespawnZone;
  * This class manages the zones
  * This class manages the zones
  * @author durgus
  * @author durgus
  */
  */
-public class ZoneManager extends DocumentParser
+public final class ZoneManager extends DocumentParser
 {
 {
 	private static final Map<String, AbstractZoneSettings> _settings = new HashMap<>();
 	private static final Map<String, AbstractZoneSettings> _settings = new HashMap<>();
 	
 	
@@ -73,7 +73,7 @@ public class ZoneManager extends DocumentParser
 	{
 	{
 		// Get the world regions
 		// Get the world regions
 		int count = 0;
 		int count = 0;
-		L2WorldRegion[][] worldRegions = L2World.getInstance().getAllWorldRegions();
+		final L2WorldRegion[][] worldRegions = L2World.getInstance().getAllWorldRegions();
 		
 		
 		// Backup old zone settings
 		// Backup old zone settings
 		for (Map<Integer, ? extends L2ZoneType> map : _classZones.values())
 		for (Map<Integer, ? extends L2ZoneType> map : _classZones.values())
@@ -117,14 +117,14 @@ public class ZoneManager extends DocumentParser
 	protected void parseDocument()
 	protected void parseDocument()
 	{
 	{
 		// Get the world regions
 		// Get the world regions
-		L2WorldRegion[][] worldRegions = L2World.getInstance().getAllWorldRegions();
+		final L2WorldRegion[][] worldRegions = L2World.getInstance().getAllWorldRegions();
 		NamedNodeMap attrs;
 		NamedNodeMap attrs;
 		Node attribute;
 		Node attribute;
 		String zoneName;
 		String zoneName;
 		int[][] coords;
 		int[][] coords;
 		int zoneId, minZ, maxZ;
 		int zoneId, minZ, maxZ;
 		String zoneType, zoneShape;
 		String zoneType, zoneShape;
-		List<int[]> rs = new ArrayList<>();
+		final List<int[]> rs = new ArrayList<>();
 		
 		
 		for (Node n = getCurrentDocument().getFirstChild(); n != null; n = n.getNextSibling())
 		for (Node n = getCurrentDocument().getFirstChild(); n != null; n = n.getNextSibling())
 		{
 		{
@@ -412,7 +412,7 @@ public class ZoneManager extends DocumentParser
 	@Deprecated
 	@Deprecated
 	public Collection<L2ZoneType> getAllZones()
 	public Collection<L2ZoneType> getAllZones()
 	{
 	{
-		List<L2ZoneType> zones = new ArrayList<>();
+		final List<L2ZoneType> zones = new ArrayList<>();
 		for (Map<Integer, ? extends L2ZoneType> map : _classZones.values())
 		for (Map<Integer, ? extends L2ZoneType> map : _classZones.values())
 		{
 		{
 			zones.addAll(map.values());
 			zones.addAll(map.values());
@@ -497,8 +497,8 @@ public class ZoneManager extends DocumentParser
 	 */
 	 */
 	public List<L2ZoneType> getZones(int x, int y)
 	public List<L2ZoneType> getZones(int x, int y)
 	{
 	{
-		L2WorldRegion region = L2World.getInstance().getRegion(x, y);
-		List<L2ZoneType> temp = new ArrayList<>();
+		final L2WorldRegion region = L2World.getInstance().getRegion(x, y);
+		final List<L2ZoneType> temp = new ArrayList<>();
 		for (L2ZoneType zone : region.getZones())
 		for (L2ZoneType zone : region.getZones())
 		{
 		{
 			if (zone.isInsideZone(x, y))
 			if (zone.isInsideZone(x, y))
@@ -518,8 +518,8 @@ public class ZoneManager extends DocumentParser
 	 */
 	 */
 	public List<L2ZoneType> getZones(int x, int y, int z)
 	public List<L2ZoneType> getZones(int x, int y, int z)
 	{
 	{
-		L2WorldRegion region = L2World.getInstance().getRegion(x, y);
-		List<L2ZoneType> temp = new ArrayList<>();
+		final L2WorldRegion region = L2World.getInstance().getRegion(x, y);
+		final List<L2ZoneType> temp = new ArrayList<>();
 		for (L2ZoneType zone : region.getZones())
 		for (L2ZoneType zone : region.getZones())
 		{
 		{
 			if (zone.isInsideZone(x, y, z))
 			if (zone.isInsideZone(x, y, z))
@@ -542,7 +542,7 @@ public class ZoneManager extends DocumentParser
 	@SuppressWarnings("unchecked")
 	@SuppressWarnings("unchecked")
 	public <T extends L2ZoneType> T getZone(int x, int y, int z, Class<T> type)
 	public <T extends L2ZoneType> T getZone(int x, int y, int z, Class<T> type)
 	{
 	{
-		L2WorldRegion region = L2World.getInstance().getRegion(x, y);
+		final L2WorldRegion region = L2World.getInstance().getRegion(x, y);
 		for (L2ZoneType zone : region.getZones())
 		for (L2ZoneType zone : region.getZones())
 		{
 		{
 			if (zone.isInsideZone(x, y, z) && type.isInstance(zone))
 			if (zone.isInsideZone(x, y, z) && type.isInstance(zone))
@@ -645,10 +645,10 @@ public class ZoneManager extends DocumentParser
 	{
 	{
 		if (_debugItems != null)
 		if (_debugItems != null)
 		{
 		{
-			Iterator<L2ItemInstance> it = _debugItems.iterator();
+			final Iterator<L2ItemInstance> it = _debugItems.iterator();
 			while (it.hasNext())
 			while (it.hasNext())
 			{
 			{
-				L2ItemInstance item = it.next();
+				final L2ItemInstance item = it.next();
 				if (item != null)
 				if (item != null)
 				{
 				{
 					item.decayMe();
 					item.decayMe();

+ 3 - 2
L2J_Server_BETA/java/com/l2jserver/gameserver/instancemanager/tasks/FourSepulchersChangeAttackTimeTask.java

@@ -26,6 +26,7 @@ import com.l2jserver.gameserver.ThreadPoolManager;
 import com.l2jserver.gameserver.instancemanager.FourSepulchersManager;
 import com.l2jserver.gameserver.instancemanager.FourSepulchersManager;
 
 
 /**
 /**
+ * Four Sepulchers change attack time task.
  * @author xban1x
  * @author xban1x
  */
  */
 public final class FourSepulchersChangeAttackTimeTask implements Runnable
 public final class FourSepulchersChangeAttackTimeTask implements Runnable
@@ -62,14 +63,14 @@ public final class FourSepulchersChangeAttackTimeTask implements Runnable
 				{
 				{
 					final Calendar inter = Calendar.getInstance();
 					final Calendar inter = Calendar.getInstance();
 					inter.set(Calendar.MINUTE, (int) min);
 					inter.set(Calendar.MINUTE, (int) min);
-					ThreadPoolManager.getInstance().scheduleGeneral(new FourSepulchersManagerSay(), inter.getTimeInMillis() - Calendar.getInstance().getTimeInMillis());
+					ThreadPoolManager.getInstance().scheduleGeneral(new FourSepulchersManagerSayTask(), inter.getTimeInMillis() - Calendar.getInstance().getTimeInMillis());
 					break;
 					break;
 				}
 				}
 			}
 			}
 		}
 		}
 		else
 		else
 		{
 		{
-			ThreadPoolManager.getInstance().scheduleGeneral(new FourSepulchersManagerSay(), 5 * 60400);
+			ThreadPoolManager.getInstance().scheduleGeneral(new FourSepulchersManagerSayTask(), 5 * 60400);
 		}
 		}
 		// searching time when attack time will be ended:
 		// searching time when attack time will be ended:
 		// counting difference between time when attack time ends and
 		// counting difference between time when attack time ends and

+ 1 - 0
L2J_Server_BETA/java/com/l2jserver/gameserver/instancemanager/tasks/FourSepulchersChangeCoolDownTimeTask.java

@@ -25,6 +25,7 @@ import com.l2jserver.gameserver.ThreadPoolManager;
 import com.l2jserver.gameserver.instancemanager.FourSepulchersManager;
 import com.l2jserver.gameserver.instancemanager.FourSepulchersManager;
 
 
 /**
 /**
+ * Four Sepulchers change cool down time task.
  * @author xban1x
  * @author xban1x
  */
  */
 public final class FourSepulchersChangeCoolDownTimeTask implements Runnable
 public final class FourSepulchersChangeCoolDownTimeTask implements Runnable

+ 2 - 1
L2J_Server_BETA/java/com/l2jserver/gameserver/instancemanager/tasks/FourSepulchersChangeEntryTimeTask.java

@@ -26,6 +26,7 @@ import com.l2jserver.gameserver.ThreadPoolManager;
 import com.l2jserver.gameserver.instancemanager.FourSepulchersManager;
 import com.l2jserver.gameserver.instancemanager.FourSepulchersManager;
 
 
 /**
 /**
+ * Four Sepulchers change entry time task.
  * @author xban1x
  * @author xban1x
  */
  */
 public final class FourSepulchersChangeEntryTimeTask implements Runnable
 public final class FourSepulchersChangeEntryTimeTask implements Runnable
@@ -56,7 +57,7 @@ public final class FourSepulchersChangeEntryTimeTask implements Runnable
 		}
 		}
 		
 		
 		// launching saying process...
 		// launching saying process...
-		ThreadPoolManager.getInstance().scheduleGeneral(new FourSepulchersManagerSay(), 0);
+		ThreadPoolManager.getInstance().scheduleGeneral(new FourSepulchersManagerSayTask(), 0);
 		manager.setChangeWarmUpTimeTask(ThreadPoolManager.getInstance().scheduleEffect(new FourSepulchersChangeWarmUpTimeTask(), interval));
 		manager.setChangeWarmUpTimeTask(ThreadPoolManager.getInstance().scheduleEffect(new FourSepulchersChangeWarmUpTimeTask(), interval));
 		final ScheduledFuture<?> changeEntryTimeTask = manager.getChangeEntryTimeTask();
 		final ScheduledFuture<?> changeEntryTimeTask = manager.getChangeEntryTimeTask();
 		
 		

+ 1 - 0
L2J_Server_BETA/java/com/l2jserver/gameserver/instancemanager/tasks/FourSepulchersChangeWarmUpTimeTask.java

@@ -26,6 +26,7 @@ import com.l2jserver.gameserver.ThreadPoolManager;
 import com.l2jserver.gameserver.instancemanager.FourSepulchersManager;
 import com.l2jserver.gameserver.instancemanager.FourSepulchersManager;
 
 
 /**
 /**
+ * Four Sepulchers change warm up time task.
  * @author xban1x
  * @author xban1x
  */
  */
 public final class FourSepulchersChangeWarmUpTimeTask implements Runnable
 public final class FourSepulchersChangeWarmUpTimeTask implements Runnable

+ 3 - 2
L2J_Server_BETA/java/com/l2jserver/gameserver/instancemanager/tasks/FourSepulchersManagerSay.java → L2J_Server_BETA/java/com/l2jserver/gameserver/instancemanager/tasks/FourSepulchersManagerSayTask.java

@@ -25,9 +25,10 @@ import com.l2jserver.gameserver.ThreadPoolManager;
 import com.l2jserver.gameserver.instancemanager.FourSepulchersManager;
 import com.l2jserver.gameserver.instancemanager.FourSepulchersManager;
 
 
 /**
 /**
+ * Four Sepulchers manager say task.
  * @author xban1x
  * @author xban1x
  */
  */
-public final class FourSepulchersManagerSay implements Runnable
+public final class FourSepulchersManagerSayTask implements Runnable
 {
 {
 	@Override
 	@Override
 	public void run()
 	public void run()
@@ -44,7 +45,7 @@ public final class FourSepulchersManagerSay implements Runnable
 				// cannot be
 				// cannot be
 				// more than
 				// more than
 				// 59
 				// 59
-				ThreadPoolManager.getInstance().scheduleGeneral(new FourSepulchersManagerSay(), 5 * 60000);
+				ThreadPoolManager.getInstance().scheduleGeneral(new FourSepulchersManagerSayTask(), 5 * 60000);
 			}
 			}
 			// attack time ending chat
 			// attack time ending chat
 			else if ((tmp.get(Calendar.MINUTE) + 5) >= Config.FS_TIME_ATTACK)
 			else if ((tmp.get(Calendar.MINUTE) + 5) >= Config.FS_TIME_ATTACK)

+ 88 - 0
L2J_Server_BETA/java/com/l2jserver/gameserver/instancemanager/tasks/MessageDeletionTask.java

@@ -0,0 +1,88 @@
+/*
+ * Copyright (C) 2004-2013 L2J Server
+ * 
+ * This file is part of L2J Server.
+ * 
+ * L2J Server is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ * 
+ * L2J Server is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+package com.l2jserver.gameserver.instancemanager.tasks;
+
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+import com.l2jserver.gameserver.instancemanager.MailManager;
+import com.l2jserver.gameserver.model.L2World;
+import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
+import com.l2jserver.gameserver.model.entity.Message;
+import com.l2jserver.gameserver.network.SystemMessageId;
+import com.l2jserver.gameserver.network.serverpackets.SystemMessage;
+
+/**
+ * Message deletion task.
+ * @author xban1x
+ */
+public final class MessageDeletionTask implements Runnable
+{
+	private static final Logger _log = Logger.getLogger(MessageDeletionTask.class.getName());
+	
+	final int _msgId;
+	
+	public MessageDeletionTask(int msgId)
+	{
+		_msgId = msgId;
+	}
+	
+	@Override
+	public void run()
+	{
+		final Message msg = MailManager.getInstance().getMessage(_msgId);
+		if (msg == null)
+		{
+			return;
+		}
+		
+		if (msg.hasAttachments())
+		{
+			try
+			{
+				final L2PcInstance sender = L2World.getInstance().getPlayer(msg.getSenderId());
+				if (sender != null)
+				{
+					msg.getAttachments().returnToWh(sender.getWarehouse());
+					sender.sendPacket(SystemMessageId.MAIL_RETURNED);
+				}
+				else
+				{
+					msg.getAttachments().returnToWh(null);
+				}
+				
+				msg.getAttachments().deleteMe();
+				msg.removeAttachments();
+				
+				final L2PcInstance receiver = L2World.getInstance().getPlayer(msg.getReceiverId());
+				if (receiver != null)
+				{
+					SystemMessage sm = SystemMessage.getSystemMessage(SystemMessageId.MAIL_RETURNED);
+					// sm.addString(msg.getReceiverName());
+					receiver.sendPacket(sm);
+				}
+			}
+			catch (Exception e)
+			{
+				_log.log(Level.WARNING, getClass().getSimpleName() + ": Error returning items:" + e.getMessage(), e);
+			}
+		}
+		MailManager.getInstance().deleteMessageInDb(msg.getId());
+	}
+}

+ 41 - 0
L2J_Server_BETA/java/com/l2jserver/gameserver/instancemanager/tasks/PenaltyRemoveTask.java

@@ -0,0 +1,41 @@
+/*
+ * Copyright (C) 2004-2013 L2J Server
+ * 
+ * This file is part of L2J Server.
+ * 
+ * L2J Server is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ * 
+ * L2J Server is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+package com.l2jserver.gameserver.instancemanager.tasks;
+
+import com.l2jserver.gameserver.instancemanager.HandysBlockCheckerManager;
+
+/**
+ * Handys Block Checker penalty remove.
+ * @author xban1x
+ */
+public final class PenaltyRemoveTask implements Runnable
+{
+	private final int _objectId;
+	
+	public PenaltyRemoveTask(int id)
+	{
+		_objectId = id;
+	}
+	
+	@Override
+	public void run()
+	{
+		HandysBlockCheckerManager.getInstance().removePenalty(_objectId);
+	}
+}

+ 36 - 0
L2J_Server_BETA/java/com/l2jserver/gameserver/instancemanager/tasks/UpdateSoDStateTask.java

@@ -0,0 +1,36 @@
+/*
+ * Copyright (C) 2004-2013 L2J Server
+ * 
+ * This file is part of L2J Server.
+ * 
+ * L2J Server is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ * 
+ * L2J Server is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+package com.l2jserver.gameserver.instancemanager.tasks;
+
+import com.l2jserver.gameserver.instancemanager.GraciaSeedsManager;
+
+/**
+ * Task which updates Seed of Destruction state.
+ * @author xban1x
+ */
+public final class UpdateSoDStateTask implements Runnable
+{
+	@Override
+	public void run()
+	{
+		final GraciaSeedsManager manager = GraciaSeedsManager.getInstance();
+		manager.setSoDState(1, true);
+		manager.updateSodState();
+	}
+}

+ 178 - 0
L2J_Server_BETA/java/com/l2jserver/gameserver/model/ArenaParticipantsHolder.java

@@ -0,0 +1,178 @@
+/*
+ * Copyright (C) 2004-2013 L2J Server
+ * 
+ * This file is part of L2J Server.
+ * 
+ * L2J Server is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ * 
+ * L2J Server is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+package com.l2jserver.gameserver.model;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import com.l2jserver.gameserver.instancemanager.HandysBlockCheckerManager;
+import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
+import com.l2jserver.gameserver.model.entity.BlockCheckerEngine;
+import com.l2jserver.gameserver.network.SystemMessageId;
+import com.l2jserver.gameserver.network.serverpackets.L2GameServerPacket;
+import com.l2jserver.gameserver.network.serverpackets.SystemMessage;
+
+/**
+ * @author xban1x
+ */
+public final class ArenaParticipantsHolder
+{
+	private final int _arena;
+	private final List<L2PcInstance> _redPlayers;
+	private final List<L2PcInstance> _bluePlayers;
+	private final BlockCheckerEngine _engine;
+	
+	public ArenaParticipantsHolder(int arena)
+	{
+		_arena = arena;
+		_redPlayers = new ArrayList<>(6);
+		_bluePlayers = new ArrayList<>(6);
+		_engine = new BlockCheckerEngine(this, _arena);
+	}
+	
+	public List<L2PcInstance> getRedPlayers()
+	{
+		return _redPlayers;
+	}
+	
+	public List<L2PcInstance> getBluePlayers()
+	{
+		return _bluePlayers;
+	}
+	
+	public List<L2PcInstance> getAllPlayers()
+	{
+		List<L2PcInstance> all = new ArrayList<>(12);
+		all.addAll(_redPlayers);
+		all.addAll(_bluePlayers);
+		return all;
+	}
+	
+	public void addPlayer(L2PcInstance player, int team)
+	{
+		if (team == 0)
+		{
+			_redPlayers.add(player);
+		}
+		else
+		{
+			_bluePlayers.add(player);
+		}
+	}
+	
+	public void removePlayer(L2PcInstance player, int team)
+	{
+		if (team == 0)
+		{
+			_redPlayers.remove(player);
+		}
+		else
+		{
+			_bluePlayers.remove(player);
+		}
+	}
+	
+	public int getPlayerTeam(L2PcInstance player)
+	{
+		if (_redPlayers.contains(player))
+		{
+			return 0;
+		}
+		else if (_bluePlayers.contains(player))
+		{
+			return 1;
+		}
+		else
+		{
+			return -1;
+		}
+	}
+	
+	public int getRedTeamSize()
+	{
+		return _redPlayers.size();
+	}
+	
+	public int getBlueTeamSize()
+	{
+		return _bluePlayers.size();
+	}
+	
+	public void broadCastPacketToTeam(L2GameServerPacket packet)
+	{
+		for (L2PcInstance p : _redPlayers)
+		{
+			p.sendPacket(packet);
+		}
+		for (L2PcInstance p : _bluePlayers)
+		{
+			p.sendPacket(packet);
+		}
+	}
+	
+	public void clearPlayers()
+	{
+		_redPlayers.clear();
+		_bluePlayers.clear();
+	}
+	
+	public BlockCheckerEngine getEvent()
+	{
+		return _engine;
+	}
+	
+	public void updateEvent()
+	{
+		_engine.updatePlayersOnStart(this);
+	}
+	
+	public void checkAndShuffle()
+	{
+		final int redSize = _redPlayers.size();
+		final int blueSize = _bluePlayers.size();
+		if (redSize > (blueSize + 1))
+		{
+			broadCastPacketToTeam(SystemMessage.getSystemMessage(SystemMessageId.TEAM_ADJUSTED_BECAUSE_WRONG_POPULATION_RATIO));
+			final int needed = redSize - (blueSize + 1);
+			for (int i = 0; i < (needed + 1); i++)
+			{
+				final L2PcInstance plr = _redPlayers.get(i);
+				if (plr == null)
+				{
+					continue;
+				}
+				HandysBlockCheckerManager.getInstance().changePlayerToTeam(plr, _arena, 1);
+			}
+		}
+		else if (blueSize > (redSize + 1))
+		{
+			broadCastPacketToTeam(SystemMessage.getSystemMessage(SystemMessageId.TEAM_ADJUSTED_BECAUSE_WRONG_POPULATION_RATIO));
+			final int needed = blueSize - (redSize + 1);
+			for (int i = 0; i < (needed + 1); i++)
+			{
+				final L2PcInstance plr = _bluePlayers.get(i);
+				if (plr == null)
+				{
+					continue;
+				}
+				HandysBlockCheckerManager.getInstance().changePlayerToTeam(plr, _arena, 0);
+			}
+		}
+	}
+}

+ 179 - 0
L2J_Server_BETA/java/com/l2jserver/gameserver/model/Petition.java

@@ -0,0 +1,179 @@
+/*
+ * Copyright (C) 2004-2013 L2J Server
+ * 
+ * This file is part of L2J Server.
+ * 
+ * L2J Server is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ * 
+ * L2J Server is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+package com.l2jserver.gameserver.model;
+
+import java.util.List;
+
+import javolution.util.FastList;
+
+import com.l2jserver.gameserver.idfactory.IdFactory;
+import com.l2jserver.gameserver.instancemanager.PetitionManager;
+import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
+import com.l2jserver.gameserver.network.SystemMessageId;
+import com.l2jserver.gameserver.network.serverpackets.CreatureSay;
+import com.l2jserver.gameserver.network.serverpackets.L2GameServerPacket;
+import com.l2jserver.gameserver.network.serverpackets.PetitionVotePacket;
+import com.l2jserver.gameserver.network.serverpackets.SystemMessage;
+
+/**
+ * Petition
+ * @author xban1x
+ */
+public final class Petition
+{
+	private final long _submitTime = System.currentTimeMillis();
+	private final int _id;
+	private final PetitionType _type;
+	private PetitionState _state = PetitionState.PENDING;
+	private final String _content;
+	private final List<CreatureSay> _messageLog = new FastList<>();
+	private final L2PcInstance _petitioner;
+	private L2PcInstance _responder;
+	
+	public Petition(L2PcInstance petitioner, String petitionText, int petitionType)
+	{
+		_id = IdFactory.getInstance().getNextId();
+		_type = PetitionType.values()[--petitionType];
+		_content = petitionText;
+		_petitioner = petitioner;
+	}
+	
+	public boolean addLogMessage(CreatureSay cs)
+	{
+		return _messageLog.add(cs);
+	}
+	
+	public List<CreatureSay> getLogMessages()
+	{
+		return _messageLog;
+	}
+	
+	public boolean endPetitionConsultation(PetitionState endState)
+	{
+		setState(endState);
+		
+		if ((getResponder() != null) && getResponder().isOnline())
+		{
+			if (endState == PetitionState.RESPONDER_REJECT)
+			{
+				getPetitioner().sendMessage("Your petition was rejected. Please try again later.");
+			}
+			else
+			{
+				// Ending petition consultation with <Player>.
+				SystemMessage sm = SystemMessage.getSystemMessage(SystemMessageId.PETITION_ENDED_WITH_C1);
+				sm.addString(getPetitioner().getName());
+				getResponder().sendPacket(sm);
+				
+				if (endState == PetitionState.PETITIONER_CANCEL)
+				{
+					// Receipt No. <ID> petition cancelled.
+					sm = SystemMessage.getSystemMessage(SystemMessageId.RECENT_NO_S1_CANCELED);
+					sm.addNumber(getId());
+					getResponder().sendPacket(sm);
+				}
+			}
+		}
+		
+		// End petition consultation and inform them, if they are still online. And if petitioner is online, enable Evaluation button
+		if ((getPetitioner() != null) && getPetitioner().isOnline())
+		{
+			getPetitioner().sendPacket(SystemMessageId.THIS_END_THE_PETITION_PLEASE_PROVIDE_FEEDBACK);
+			getPetitioner().sendPacket(PetitionVotePacket.STATIC_PACKET);
+		}
+		
+		PetitionManager.getInstance().getCompletedPetitions().put(getId(), this);
+		return (PetitionManager.getInstance().getPendingPetitions().remove(getId()) != null);
+	}
+	
+	public String getContent()
+	{
+		return _content;
+	}
+	
+	public int getId()
+	{
+		return _id;
+	}
+	
+	public L2PcInstance getPetitioner()
+	{
+		return _petitioner;
+	}
+	
+	public L2PcInstance getResponder()
+	{
+		return _responder;
+	}
+	
+	public long getSubmitTime()
+	{
+		return _submitTime;
+	}
+	
+	public PetitionState getState()
+	{
+		return _state;
+	}
+	
+	public String getTypeAsString()
+	{
+		return _type.toString().replace("_", " ");
+	}
+	
+	public void sendPetitionerPacket(L2GameServerPacket responsePacket)
+	{
+		if ((getPetitioner() == null) || !getPetitioner().isOnline())
+		{
+			// Allows petitioners to see the results of their petition when
+			// they log back into the game.
+			
+			// endPetitionConsultation(PetitionState.Petitioner_Missing);
+			return;
+		}
+		
+		getPetitioner().sendPacket(responsePacket);
+	}
+	
+	public void sendResponderPacket(L2GameServerPacket responsePacket)
+	{
+		if ((getResponder() == null) || !getResponder().isOnline())
+		{
+			endPetitionConsultation(PetitionState.RESPONDER_MISSING);
+			return;
+		}
+		
+		getResponder().sendPacket(responsePacket);
+	}
+	
+	public void setState(PetitionState state)
+	{
+		_state = state;
+	}
+	
+	public void setResponder(L2PcInstance respondingAdmin)
+	{
+		if (getResponder() != null)
+		{
+			return;
+		}
+		
+		_responder = respondingAdmin;
+	}
+}

+ 36 - 0
L2J_Server_BETA/java/com/l2jserver/gameserver/model/PetitionState.java

@@ -0,0 +1,36 @@
+/*
+ * Copyright (C) 2004-2013 L2J Server
+ * 
+ * This file is part of L2J Server.
+ * 
+ * L2J Server is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ * 
+ * L2J Server is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+package com.l2jserver.gameserver.model;
+
+/**
+ * Enum with petition states.
+ * @author xban1x
+ */
+public enum PetitionState
+{
+	PENDING,
+	RESPONDER_CANCEL,
+	RESPONDER_MISSING,
+	RESPONDER_REJECT,
+	RESPONDER_COMPLETE,
+	PETITIONER_CANCEL,
+	PETITIONER_MISSING,
+	IN_PROCESS,
+	COMPLETED
+}

+ 36 - 0
L2J_Server_BETA/java/com/l2jserver/gameserver/model/PetitionType.java

@@ -0,0 +1,36 @@
+/*
+ * Copyright (C) 2004-2013 L2J Server
+ * 
+ * This file is part of L2J Server.
+ * 
+ * L2J Server is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ * 
+ * L2J Server is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+package com.l2jserver.gameserver.model;
+
+/**
+ * Enum with petition types.
+ * @author xban1x
+ */
+public enum PetitionType
+{
+	IMMOBILITY,
+	RECOVERY_RELATED,
+	BUG_REPORT,
+	QUEST_RELATED,
+	BAD_USER,
+	SUGGESTIONS,
+	GAME_TIP,
+	OPERATION_RELATED,
+	OTHER
+}

+ 37 - 0
L2J_Server_BETA/java/com/l2jserver/gameserver/model/TeleportWhereType.java

@@ -0,0 +1,37 @@
+/*
+ * Copyright (C) 2004-2013 L2J Server
+ * 
+ * This file is part of L2J Server.
+ * 
+ * L2J Server is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ * 
+ * L2J Server is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+package com.l2jserver.gameserver.model;
+
+/**
+ * All teleport types.
+ * @author xban1x
+ */
+public enum TeleportWhereType
+{
+	CASTLE,
+	CASTLE_BANISH,
+	CLANHALL,
+	CLANHALL_BANISH,
+	SIEGEFLAG,
+	TOWN,
+	FORTRESS,
+	FORTRESS_BANISH,
+	TERRITORY,
+	TERRITORY_BANISH
+}

+ 1 - 1
L2J_Server_BETA/java/com/l2jserver/gameserver/model/actor/L2Character.java

@@ -51,7 +51,6 @@ import com.l2jserver.gameserver.handler.SkillHandler;
 import com.l2jserver.gameserver.instancemanager.DimensionalRiftManager;
 import com.l2jserver.gameserver.instancemanager.DimensionalRiftManager;
 import com.l2jserver.gameserver.instancemanager.InstanceManager;
 import com.l2jserver.gameserver.instancemanager.InstanceManager;
 import com.l2jserver.gameserver.instancemanager.MapRegionManager;
 import com.l2jserver.gameserver.instancemanager.MapRegionManager;
-import com.l2jserver.gameserver.instancemanager.MapRegionManager.TeleportWhereType;
 import com.l2jserver.gameserver.instancemanager.TerritoryWarManager;
 import com.l2jserver.gameserver.instancemanager.TerritoryWarManager;
 import com.l2jserver.gameserver.instancemanager.TownManager;
 import com.l2jserver.gameserver.instancemanager.TownManager;
 import com.l2jserver.gameserver.model.ChanceSkillList;
 import com.l2jserver.gameserver.model.ChanceSkillList;
@@ -65,6 +64,7 @@ import com.l2jserver.gameserver.model.L2WorldRegion;
 import com.l2jserver.gameserver.model.Location;
 import com.l2jserver.gameserver.model.Location;
 import com.l2jserver.gameserver.model.PcCondOverride;
 import com.l2jserver.gameserver.model.PcCondOverride;
 import com.l2jserver.gameserver.model.ShotType;
 import com.l2jserver.gameserver.model.ShotType;
+import com.l2jserver.gameserver.model.TeleportWhereType;
 import com.l2jserver.gameserver.model.actor.events.CharEvents;
 import com.l2jserver.gameserver.model.actor.events.CharEvents;
 import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
 import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
 import com.l2jserver.gameserver.model.actor.instance.L2PetInstance;
 import com.l2jserver.gameserver.model.actor.instance.L2PetInstance;

+ 2 - 1
L2J_Server_BETA/java/com/l2jserver/gameserver/model/actor/L2Vehicle.java

@@ -34,6 +34,7 @@ import com.l2jserver.gameserver.instancemanager.MapRegionManager;
 import com.l2jserver.gameserver.model.L2World;
 import com.l2jserver.gameserver.model.L2World;
 import com.l2jserver.gameserver.model.L2WorldRegion;
 import com.l2jserver.gameserver.model.L2WorldRegion;
 import com.l2jserver.gameserver.model.Location;
 import com.l2jserver.gameserver.model.Location;
+import com.l2jserver.gameserver.model.TeleportWhereType;
 import com.l2jserver.gameserver.model.VehiclePathPoint;
 import com.l2jserver.gameserver.model.VehiclePathPoint;
 import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
 import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
 import com.l2jserver.gameserver.model.actor.knownlist.VehicleKnownList;
 import com.l2jserver.gameserver.model.actor.knownlist.VehicleKnownList;
@@ -220,7 +221,7 @@ public abstract class L2Vehicle extends L2Character
 	
 	
 	public Location getOustLoc()
 	public Location getOustLoc()
 	{
 	{
-		return _oustLoc != null ? _oustLoc : MapRegionManager.getInstance().getTeleToLocation(this, MapRegionManager.TeleportWhereType.Town);
+		return _oustLoc != null ? _oustLoc : MapRegionManager.getInstance().getTeleToLocation(this, TeleportWhereType.TOWN);
 	}
 	}
 	
 	
 	public void oustPlayers()
 	public void oustPlayers()

+ 1 - 1
L2J_Server_BETA/java/com/l2jserver/gameserver/model/actor/instance/L2BlockInstance.java

@@ -19,7 +19,7 @@
 package com.l2jserver.gameserver.model.actor.instance;
 package com.l2jserver.gameserver.model.actor.instance;
 
 
 import com.l2jserver.gameserver.datatables.ItemTable;
 import com.l2jserver.gameserver.datatables.ItemTable;
-import com.l2jserver.gameserver.instancemanager.HandysBlockCheckerManager.ArenaParticipantsHolder;
+import com.l2jserver.gameserver.model.ArenaParticipantsHolder;
 import com.l2jserver.gameserver.model.actor.L2Character;
 import com.l2jserver.gameserver.model.actor.L2Character;
 import com.l2jserver.gameserver.model.actor.templates.L2NpcTemplate;
 import com.l2jserver.gameserver.model.actor.templates.L2NpcTemplate;
 import com.l2jserver.gameserver.model.entity.BlockCheckerEngine;
 import com.l2jserver.gameserver.model.entity.BlockCheckerEngine;

+ 6 - 5
L2J_Server_BETA/java/com/l2jserver/gameserver/model/actor/instance/L2PcInstance.java

@@ -99,12 +99,12 @@ import com.l2jserver.gameserver.instancemanager.GrandBossManager;
 import com.l2jserver.gameserver.instancemanager.HandysBlockCheckerManager;
 import com.l2jserver.gameserver.instancemanager.HandysBlockCheckerManager;
 import com.l2jserver.gameserver.instancemanager.InstanceManager;
 import com.l2jserver.gameserver.instancemanager.InstanceManager;
 import com.l2jserver.gameserver.instancemanager.ItemsOnGroundManager;
 import com.l2jserver.gameserver.instancemanager.ItemsOnGroundManager;
-import com.l2jserver.gameserver.instancemanager.MapRegionManager;
 import com.l2jserver.gameserver.instancemanager.PunishmentManager;
 import com.l2jserver.gameserver.instancemanager.PunishmentManager;
 import com.l2jserver.gameserver.instancemanager.QuestManager;
 import com.l2jserver.gameserver.instancemanager.QuestManager;
 import com.l2jserver.gameserver.instancemanager.SiegeManager;
 import com.l2jserver.gameserver.instancemanager.SiegeManager;
 import com.l2jserver.gameserver.instancemanager.TerritoryWarManager;
 import com.l2jserver.gameserver.instancemanager.TerritoryWarManager;
 import com.l2jserver.gameserver.instancemanager.ZoneManager;
 import com.l2jserver.gameserver.instancemanager.ZoneManager;
+import com.l2jserver.gameserver.model.ArenaParticipantsHolder;
 import com.l2jserver.gameserver.model.BlockList;
 import com.l2jserver.gameserver.model.BlockList;
 import com.l2jserver.gameserver.model.L2AccessLevel;
 import com.l2jserver.gameserver.model.L2AccessLevel;
 import com.l2jserver.gameserver.model.L2Clan;
 import com.l2jserver.gameserver.model.L2Clan;
@@ -136,6 +136,7 @@ import com.l2jserver.gameserver.model.PcCondOverride;
 import com.l2jserver.gameserver.model.ShortCuts;
 import com.l2jserver.gameserver.model.ShortCuts;
 import com.l2jserver.gameserver.model.ShotType;
 import com.l2jserver.gameserver.model.ShotType;
 import com.l2jserver.gameserver.model.TeleportBookmark;
 import com.l2jserver.gameserver.model.TeleportBookmark;
+import com.l2jserver.gameserver.model.TeleportWhereType;
 import com.l2jserver.gameserver.model.TerritoryWard;
 import com.l2jserver.gameserver.model.TerritoryWard;
 import com.l2jserver.gameserver.model.TimeStamp;
 import com.l2jserver.gameserver.model.TimeStamp;
 import com.l2jserver.gameserver.model.TradeList;
 import com.l2jserver.gameserver.model.TradeList;
@@ -1063,7 +1064,7 @@ public final class L2PcInstance extends L2Playable
 		if (getBlockCheckerArena() != -1)
 		if (getBlockCheckerArena() != -1)
 		{
 		{
 			result |= RelationChanged.RELATION_INSIEGE;
 			result |= RelationChanged.RELATION_INSIEGE;
-			HandysBlockCheckerManager.ArenaParticipantsHolder holder = HandysBlockCheckerManager.getInstance().getHolder(getBlockCheckerArena());
+			ArenaParticipantsHolder holder = HandysBlockCheckerManager.getInstance().getHolder(getBlockCheckerArena());
 			if (holder.getPlayerTeam(this) == 0)
 			if (holder.getPlayerTeam(this) == 0)
 			{
 			{
 				result |= RelationChanged.RELATION_ENEMY;
 				result |= RelationChanged.RELATION_ENEMY;
@@ -10811,7 +10812,7 @@ public final class L2PcInstance extends L2Playable
 			// if the rent of a wyvern expires while over a flying zone, tp to down before unmounting
 			// if the rent of a wyvern expires while over a flying zone, tp to down before unmounting
 			if (checkLandingState() && (getMountType() == 2))
 			if (checkLandingState() && (getMountType() == 2))
 			{
 			{
-				teleToLocation(MapRegionManager.TeleportWhereType.Town);
+				teleToLocation(TeleportWhereType.TOWN);
 			}
 			}
 			
 			
 			if (dismount()) // this should always be true now, since we teleported already
 			if (dismount()) // this should always be true now, since we teleported already
@@ -10891,7 +10892,7 @@ public final class L2PcInstance extends L2Playable
 		{
 		{
 			if (!isGM() && isIn7sDungeon() && (SevenSigns.getInstance().getPlayerCabal(getObjectId()) != SevenSigns.getInstance().getCabalHighestScore()))
 			if (!isGM() && isIn7sDungeon() && (SevenSigns.getInstance().getPlayerCabal(getObjectId()) != SevenSigns.getInstance().getCabalHighestScore()))
 			{
 			{
-				teleToLocation(MapRegionManager.TeleportWhereType.Town);
+				teleToLocation(TeleportWhereType.TOWN);
 				setIsIn7sDungeon(false);
 				setIsIn7sDungeon(false);
 				sendMessage("You have been teleported to the nearest town due to the beginning of the Seal Validation period.");
 				sendMessage("You have been teleported to the nearest town due to the beginning of the Seal Validation period.");
 			}
 			}
@@ -10900,7 +10901,7 @@ public final class L2PcInstance extends L2Playable
 		{
 		{
 			if (!isGM() && isIn7sDungeon() && (SevenSigns.getInstance().getPlayerCabal(getObjectId()) == SevenSigns.CABAL_NULL))
 			if (!isGM() && isIn7sDungeon() && (SevenSigns.getInstance().getPlayerCabal(getObjectId()) == SevenSigns.CABAL_NULL))
 			{
 			{
-				teleToLocation(MapRegionManager.TeleportWhereType.Town);
+				teleToLocation(TeleportWhereType.TOWN);
 				setIsIn7sDungeon(false);
 				setIsIn7sDungeon(false);
 				sendMessage("You have been teleported to the nearest town because you have not signed for any cabal.");
 				sendMessage("You have been teleported to the nearest town because you have not signed for any cabal.");
 			}
 			}

+ 3 - 3
L2J_Server_BETA/java/com/l2jserver/gameserver/model/entity/BlockCheckerEngine.java

@@ -32,7 +32,7 @@ import com.l2jserver.gameserver.datatables.NpcTable;
 import com.l2jserver.gameserver.datatables.SkillTable;
 import com.l2jserver.gameserver.datatables.SkillTable;
 import com.l2jserver.gameserver.datatables.SpawnTable;
 import com.l2jserver.gameserver.datatables.SpawnTable;
 import com.l2jserver.gameserver.instancemanager.HandysBlockCheckerManager;
 import com.l2jserver.gameserver.instancemanager.HandysBlockCheckerManager;
-import com.l2jserver.gameserver.instancemanager.HandysBlockCheckerManager.ArenaParticipantsHolder;
+import com.l2jserver.gameserver.model.ArenaParticipantsHolder;
 import com.l2jserver.gameserver.model.L2Spawn;
 import com.l2jserver.gameserver.model.L2Spawn;
 import com.l2jserver.gameserver.model.L2World;
 import com.l2jserver.gameserver.model.L2World;
 import com.l2jserver.gameserver.model.actor.instance.L2BlockInstance;
 import com.l2jserver.gameserver.model.actor.instance.L2BlockInstance;
@@ -60,7 +60,7 @@ public final class BlockCheckerEngine
 {
 {
 	protected static final Logger _log = Logger.getLogger(BlockCheckerEngine.class.getName());
 	protected static final Logger _log = Logger.getLogger(BlockCheckerEngine.class.getName());
 	// The object which holds all basic members info
 	// The object which holds all basic members info
-	protected HandysBlockCheckerManager.ArenaParticipantsHolder _holder;
+	protected ArenaParticipantsHolder _holder;
 	// Maps to hold player of each team and his points
 	// Maps to hold player of each team and his points
 	protected FastMap<L2PcInstance, Integer> _redTeamPoints = new FastMap<>();
 	protected FastMap<L2PcInstance, Integer> _redTeamPoints = new FastMap<>();
 	protected FastMap<L2PcInstance, Integer> _blueTeamPoints = new FastMap<>();
 	protected FastMap<L2PcInstance, Integer> _blueTeamPoints = new FastMap<>();
@@ -129,7 +129,7 @@ public final class BlockCheckerEngine
 	// Preserve from exploit reward by logging out
 	// Preserve from exploit reward by logging out
 	protected boolean _abnormalEnd = false;
 	protected boolean _abnormalEnd = false;
 	
 	
-	public BlockCheckerEngine(HandysBlockCheckerManager.ArenaParticipantsHolder holder, int arena)
+	public BlockCheckerEngine(ArenaParticipantsHolder holder, int arena)
 	{
 	{
 		_holder = holder;
 		_holder = holder;
 		if ((arena > -1) && (arena < 4))
 		if ((arena > -1) && (arena < 4))

+ 3 - 3
L2J_Server_BETA/java/com/l2jserver/gameserver/model/entity/FortSiege.java

@@ -37,7 +37,6 @@ import com.l2jserver.gameserver.datatables.NpcTable;
 import com.l2jserver.gameserver.instancemanager.FortManager;
 import com.l2jserver.gameserver.instancemanager.FortManager;
 import com.l2jserver.gameserver.instancemanager.FortSiegeGuardManager;
 import com.l2jserver.gameserver.instancemanager.FortSiegeGuardManager;
 import com.l2jserver.gameserver.instancemanager.FortSiegeManager;
 import com.l2jserver.gameserver.instancemanager.FortSiegeManager;
-import com.l2jserver.gameserver.instancemanager.MapRegionManager;
 import com.l2jserver.gameserver.model.CombatFlag;
 import com.l2jserver.gameserver.model.CombatFlag;
 import com.l2jserver.gameserver.model.FortSiegeSpawn;
 import com.l2jserver.gameserver.model.FortSiegeSpawn;
 import com.l2jserver.gameserver.model.L2Clan;
 import com.l2jserver.gameserver.model.L2Clan;
@@ -46,6 +45,7 @@ import com.l2jserver.gameserver.model.L2SiegeClan;
 import com.l2jserver.gameserver.model.L2SiegeClan.SiegeClanType;
 import com.l2jserver.gameserver.model.L2SiegeClan.SiegeClanType;
 import com.l2jserver.gameserver.model.L2Spawn;
 import com.l2jserver.gameserver.model.L2Spawn;
 import com.l2jserver.gameserver.model.PcCondOverride;
 import com.l2jserver.gameserver.model.PcCondOverride;
+import com.l2jserver.gameserver.model.TeleportWhereType;
 import com.l2jserver.gameserver.model.actor.L2Npc;
 import com.l2jserver.gameserver.model.actor.L2Npc;
 import com.l2jserver.gameserver.model.actor.instance.L2DoorInstance;
 import com.l2jserver.gameserver.model.actor.instance.L2DoorInstance;
 import com.l2jserver.gameserver.model.actor.instance.L2FortCommanderInstance;
 import com.l2jserver.gameserver.model.actor.instance.L2FortCommanderInstance;
@@ -344,7 +344,7 @@ public class FortSiege implements Siegable
 			
 			
 			loadSiegeClan(); // Load siege clan from db
 			loadSiegeClan(); // Load siege clan from db
 			updatePlayerSiegeStateFlags(false);
 			updatePlayerSiegeStateFlags(false);
-			teleportPlayer(FortSiege.TeleportWhoType.Attacker, MapRegionManager.TeleportWhereType.Town); // Teleport to the closest town
+			teleportPlayer(FortSiege.TeleportWhoType.Attacker, TeleportWhereType.TOWN); // Teleport to the closest town
 			
 			
 			getFort().despawnNpcCommanders(); // Despawn NPC commanders
 			getFort().despawnNpcCommanders(); // Despawn NPC commanders
 			spawnCommanders(); // Spawn commanders
 			spawnCommanders(); // Spawn commanders
@@ -908,7 +908,7 @@ public class FortSiege implements Siegable
 	 * @param teleportWho
 	 * @param teleportWho
 	 * @param teleportWhere
 	 * @param teleportWhere
 	 */
 	 */
-	public void teleportPlayer(TeleportWhoType teleportWho, MapRegionManager.TeleportWhereType teleportWhere)
+	public void teleportPlayer(TeleportWhoType teleportWho, TeleportWhereType teleportWhere)
 	{
 	{
 		List<L2PcInstance> players;
 		List<L2PcInstance> players;
 		switch (teleportWho)
 		switch (teleportWho)

+ 3 - 3
L2J_Server_BETA/java/com/l2jserver/gameserver/model/entity/Instance.java

@@ -44,12 +44,12 @@ import com.l2jserver.gameserver.datatables.DoorTable;
 import com.l2jserver.gameserver.datatables.NpcTable;
 import com.l2jserver.gameserver.datatables.NpcTable;
 import com.l2jserver.gameserver.idfactory.IdFactory;
 import com.l2jserver.gameserver.idfactory.IdFactory;
 import com.l2jserver.gameserver.instancemanager.InstanceManager;
 import com.l2jserver.gameserver.instancemanager.InstanceManager;
-import com.l2jserver.gameserver.instancemanager.MapRegionManager;
 import com.l2jserver.gameserver.model.L2Spawn;
 import com.l2jserver.gameserver.model.L2Spawn;
 import com.l2jserver.gameserver.model.L2World;
 import com.l2jserver.gameserver.model.L2World;
 import com.l2jserver.gameserver.model.L2WorldRegion;
 import com.l2jserver.gameserver.model.L2WorldRegion;
 import com.l2jserver.gameserver.model.Location;
 import com.l2jserver.gameserver.model.Location;
 import com.l2jserver.gameserver.model.StatsSet;
 import com.l2jserver.gameserver.model.StatsSet;
+import com.l2jserver.gameserver.model.TeleportWhereType;
 import com.l2jserver.gameserver.model.actor.L2Attackable;
 import com.l2jserver.gameserver.model.actor.L2Attackable;
 import com.l2jserver.gameserver.model.actor.L2Character;
 import com.l2jserver.gameserver.model.actor.L2Character;
 import com.l2jserver.gameserver.model.actor.L2Npc;
 import com.l2jserver.gameserver.model.actor.L2Npc;
@@ -820,7 +820,7 @@ public final class Instance
 				}
 				}
 				else
 				else
 				{
 				{
-					_player.teleToLocation(MapRegionManager.TeleportWhereType.Town);
+					_player.teleToLocation(TeleportWhereType.TOWN);
 				}
 				}
 			}
 			}
 		}
 		}
@@ -841,7 +841,7 @@ public final class Instance
 				}
 				}
 				else
 				else
 				{
 				{
-					player.teleToLocation(MapRegionManager.TeleportWhereType.Town);
+					player.teleToLocation(TeleportWhereType.TOWN);
 				}
 				}
 			}
 			}
 			return true;
 			return true;

+ 8 - 8
L2J_Server_BETA/java/com/l2jserver/gameserver/model/entity/Siege.java

@@ -37,7 +37,6 @@ import com.l2jserver.gameserver.SevenSigns;
 import com.l2jserver.gameserver.ThreadPoolManager;
 import com.l2jserver.gameserver.ThreadPoolManager;
 import com.l2jserver.gameserver.datatables.ClanTable;
 import com.l2jserver.gameserver.datatables.ClanTable;
 import com.l2jserver.gameserver.datatables.NpcTable;
 import com.l2jserver.gameserver.datatables.NpcTable;
-import com.l2jserver.gameserver.instancemanager.MapRegionManager;
 import com.l2jserver.gameserver.instancemanager.MercTicketManager;
 import com.l2jserver.gameserver.instancemanager.MercTicketManager;
 import com.l2jserver.gameserver.instancemanager.SiegeGuardManager;
 import com.l2jserver.gameserver.instancemanager.SiegeGuardManager;
 import com.l2jserver.gameserver.instancemanager.SiegeManager;
 import com.l2jserver.gameserver.instancemanager.SiegeManager;
@@ -48,6 +47,7 @@ import com.l2jserver.gameserver.model.L2SiegeClan;
 import com.l2jserver.gameserver.model.L2SiegeClan.SiegeClanType;
 import com.l2jserver.gameserver.model.L2SiegeClan.SiegeClanType;
 import com.l2jserver.gameserver.model.L2Spawn;
 import com.l2jserver.gameserver.model.L2Spawn;
 import com.l2jserver.gameserver.model.PcCondOverride;
 import com.l2jserver.gameserver.model.PcCondOverride;
+import com.l2jserver.gameserver.model.TeleportWhereType;
 import com.l2jserver.gameserver.model.TowerSpawn;
 import com.l2jserver.gameserver.model.TowerSpawn;
 import com.l2jserver.gameserver.model.actor.L2Npc;
 import com.l2jserver.gameserver.model.actor.L2Npc;
 import com.l2jserver.gameserver.model.actor.instance.L2ControlTowerInstance;
 import com.l2jserver.gameserver.model.actor.instance.L2ControlTowerInstance;
@@ -298,9 +298,9 @@ public class Siege implements Siegable
 			
 			
 			getCastle().updateClansReputation();
 			getCastle().updateClansReputation();
 			removeFlags(); // Removes all flags. Note: Remove flag before teleporting players
 			removeFlags(); // Removes all flags. Note: Remove flag before teleporting players
-			teleportPlayer(Siege.TeleportWhoType.Attacker, MapRegionManager.TeleportWhereType.Town); // Teleport to the second closest town
-			teleportPlayer(Siege.TeleportWhoType.DefenderNotOwner, MapRegionManager.TeleportWhereType.Town); // Teleport to the second closest town
-			teleportPlayer(Siege.TeleportWhoType.Spectator, MapRegionManager.TeleportWhereType.Town); // Teleport to the second closest town
+			teleportPlayer(Siege.TeleportWhoType.Attacker, TeleportWhereType.TOWN); // Teleport to the second closest town
+			teleportPlayer(Siege.TeleportWhoType.DefenderNotOwner, TeleportWhereType.TOWN); // Teleport to the second closest town
+			teleportPlayer(Siege.TeleportWhoType.Spectator, TeleportWhereType.TOWN); // Teleport to the second closest town
 			_isInProgress = false; // Flag so that siege instance can be started
 			_isInProgress = false; // Flag so that siege instance can be started
 			updatePlayerSiegeStateFlags(true);
 			updatePlayerSiegeStateFlags(true);
 			saveCastleSiege(); // Save castle specific data
 			saveCastleSiege(); // Save castle specific data
@@ -432,8 +432,8 @@ public class Siege implements Siegable
 						addDefender(sc, SiegeClanType.DEFENDER);
 						addDefender(sc, SiegeClanType.DEFENDER);
 					}
 					}
 				}
 				}
-				teleportPlayer(Siege.TeleportWhoType.Attacker, MapRegionManager.TeleportWhereType.SiegeFlag); // Teleport to the second closest town
-				teleportPlayer(Siege.TeleportWhoType.Spectator, MapRegionManager.TeleportWhereType.Town); // Teleport to the second closest town
+				teleportPlayer(Siege.TeleportWhoType.Attacker, TeleportWhereType.SIEGEFLAG); // Teleport to the second closest town
+				teleportPlayer(Siege.TeleportWhoType.Spectator, TeleportWhereType.TOWN); // Teleport to the second closest town
 				
 				
 				removeDefenderFlags(); // Removes defenders' flags
 				removeDefenderFlags(); // Removes defenders' flags
 				getCastle().removeUpgrade(); // Remove all castle upgrade
 				getCastle().removeUpgrade(); // Remove all castle upgrade
@@ -487,7 +487,7 @@ public class Siege implements Siegable
 			
 			
 			loadSiegeClan(); // Load siege clan from db
 			loadSiegeClan(); // Load siege clan from db
 			updatePlayerSiegeStateFlags(false);
 			updatePlayerSiegeStateFlags(false);
-			teleportPlayer(Siege.TeleportWhoType.Attacker, MapRegionManager.TeleportWhereType.Town); // Teleport to the closest town
+			teleportPlayer(Siege.TeleportWhoType.Attacker, TeleportWhereType.TOWN); // Teleport to the closest town
 			// teleportPlayer(Siege.TeleportWhoType.Spectator, MapRegionTable.TeleportWhereType.Town); // Teleport to the second closest town
 			// teleportPlayer(Siege.TeleportWhoType.Spectator, MapRegionTable.TeleportWhereType.Town); // Teleport to the second closest town
 			_controlTowerCount = 0;
 			_controlTowerCount = 0;
 			spawnControlTower(); // Spawn control tower
 			spawnControlTower(); // Spawn control tower
@@ -1049,7 +1049,7 @@ public class Siege implements Siegable
 	 * @param teleportWho
 	 * @param teleportWho
 	 * @param teleportWhere
 	 * @param teleportWhere
 	 */
 	 */
-	public void teleportPlayer(TeleportWhoType teleportWho, MapRegionManager.TeleportWhereType teleportWhere)
+	public void teleportPlayer(TeleportWhoType teleportWho, TeleportWhereType teleportWhere)
 	{
 	{
 		List<L2PcInstance> players;
 		List<L2PcInstance> players;
 		switch (teleportWho)
 		switch (teleportWho)

+ 5 - 5
L2J_Server_BETA/java/com/l2jserver/gameserver/model/zone/type/L2BossZone.java

@@ -24,9 +24,9 @@ import javolution.util.FastMap;
 
 
 import com.l2jserver.gameserver.GameServer;
 import com.l2jserver.gameserver.GameServer;
 import com.l2jserver.gameserver.instancemanager.GrandBossManager;
 import com.l2jserver.gameserver.instancemanager.GrandBossManager;
-import com.l2jserver.gameserver.instancemanager.MapRegionManager;
 import com.l2jserver.gameserver.instancemanager.ZoneManager;
 import com.l2jserver.gameserver.instancemanager.ZoneManager;
 import com.l2jserver.gameserver.model.PcCondOverride;
 import com.l2jserver.gameserver.model.PcCondOverride;
+import com.l2jserver.gameserver.model.TeleportWhereType;
 import com.l2jserver.gameserver.model.actor.L2Attackable;
 import com.l2jserver.gameserver.model.actor.L2Attackable;
 import com.l2jserver.gameserver.model.actor.L2Character;
 import com.l2jserver.gameserver.model.actor.L2Character;
 import com.l2jserver.gameserver.model.actor.L2Npc;
 import com.l2jserver.gameserver.model.actor.L2Npc;
@@ -194,7 +194,7 @@ public class L2BossZone extends L2ZoneType
 				}
 				}
 				else
 				else
 				{
 				{
-					player.teleToLocation(MapRegionManager.TeleportWhereType.Town);
+					player.teleToLocation(TeleportWhereType.TOWN);
 				}
 				}
 			}
 			}
 			else if (character.isSummon())
 			else if (character.isSummon())
@@ -215,7 +215,7 @@ public class L2BossZone extends L2ZoneType
 					}
 					}
 					else
 					else
 					{
 					{
-						player.teleToLocation(MapRegionManager.TeleportWhereType.Town);
+						player.teleToLocation(TeleportWhereType.TOWN);
 					}
 					}
 				}
 				}
 				((L2Summon) character).unSummon(player);
 				((L2Summon) character).unSummon(player);
@@ -347,7 +347,7 @@ public class L2BossZone extends L2ZoneType
 			}
 			}
 			else
 			else
 			{
 			{
-				player.teleToLocation(MapRegionManager.TeleportWhereType.Town);
+				player.teleToLocation(TeleportWhereType.TOWN);
 			}
 			}
 			return false;
 			return false;
 		}
 		}
@@ -403,7 +403,7 @@ public class L2BossZone extends L2ZoneType
 					}
 					}
 					else
 					else
 					{
 					{
-						player.teleToLocation(MapRegionManager.TeleportWhereType.Town);
+						player.teleToLocation(TeleportWhereType.TOWN);
 					}
 					}
 				}
 				}
 			}
 			}

+ 2 - 2
L2J_Server_BETA/java/com/l2jserver/gameserver/model/zone/type/L2CastleZone.java

@@ -19,7 +19,7 @@
 package com.l2jserver.gameserver.model.zone.type;
 package com.l2jserver.gameserver.model.zone.type;
 
 
 import com.l2jserver.gameserver.instancemanager.CastleManager;
 import com.l2jserver.gameserver.instancemanager.CastleManager;
-import com.l2jserver.gameserver.instancemanager.MapRegionManager.TeleportWhereType;
+import com.l2jserver.gameserver.model.TeleportWhereType;
 import com.l2jserver.gameserver.model.actor.L2Character;
 import com.l2jserver.gameserver.model.actor.L2Character;
 import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
 import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
 import com.l2jserver.gameserver.model.entity.Castle;
 import com.l2jserver.gameserver.model.entity.Castle;
@@ -87,7 +87,7 @@ public class L2CastleZone extends L2ZoneRespawn
 	 */
 	 */
 	public void banishForeigners(int owningClanId)
 	public void banishForeigners(int owningClanId)
 	{
 	{
-		TeleportWhereType type = TeleportWhereType.Town;
+		TeleportWhereType type = TeleportWhereType.TOWN;
 		for (L2PcInstance temp : getPlayersInside())
 		for (L2PcInstance temp : getPlayersInside())
 		{
 		{
 			if ((temp.getClanId() == owningClanId) && (owningClanId != 0))
 			if ((temp.getClanId() == owningClanId) && (owningClanId != 0))

+ 2 - 2
L2J_Server_BETA/java/com/l2jserver/gameserver/model/zone/type/L2ClanHallZone.java

@@ -19,7 +19,7 @@
 package com.l2jserver.gameserver.model.zone.type;
 package com.l2jserver.gameserver.model.zone.type;
 
 
 import com.l2jserver.gameserver.instancemanager.ClanHallManager;
 import com.l2jserver.gameserver.instancemanager.ClanHallManager;
-import com.l2jserver.gameserver.instancemanager.MapRegionManager.TeleportWhereType;
+import com.l2jserver.gameserver.model.TeleportWhereType;
 import com.l2jserver.gameserver.model.actor.L2Character;
 import com.l2jserver.gameserver.model.actor.L2Character;
 import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
 import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
 import com.l2jserver.gameserver.model.entity.ClanHall;
 import com.l2jserver.gameserver.model.entity.ClanHall;
@@ -110,7 +110,7 @@ public class L2ClanHallZone extends L2ZoneRespawn
 	 */
 	 */
 	public void banishForeigners(int owningClanId)
 	public void banishForeigners(int owningClanId)
 	{
 	{
-		TeleportWhereType type = TeleportWhereType.ClanHall_banish;
+		TeleportWhereType type = TeleportWhereType.CLANHALL_BANISH;
 		for (L2PcInstance temp : getPlayersInside())
 		for (L2PcInstance temp : getPlayersInside())
 		{
 		{
 			if ((temp.getClanId() == owningClanId) && (owningClanId != 0))
 			if ((temp.getClanId() == owningClanId) && (owningClanId != 0))

+ 2 - 2
L2J_Server_BETA/java/com/l2jserver/gameserver/model/zone/type/L2FortZone.java

@@ -18,7 +18,7 @@
  */
  */
 package com.l2jserver.gameserver.model.zone.type;
 package com.l2jserver.gameserver.model.zone.type;
 
 
-import com.l2jserver.gameserver.instancemanager.MapRegionManager.TeleportWhereType;
+import com.l2jserver.gameserver.model.TeleportWhereType;
 import com.l2jserver.gameserver.model.actor.L2Character;
 import com.l2jserver.gameserver.model.actor.L2Character;
 import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
 import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
 import com.l2jserver.gameserver.model.zone.L2ZoneRespawn;
 import com.l2jserver.gameserver.model.zone.L2ZoneRespawn;
@@ -82,7 +82,7 @@ public class L2FortZone extends L2ZoneRespawn
 	 */
 	 */
 	public void banishForeigners(int owningClanId)
 	public void banishForeigners(int owningClanId)
 	{
 	{
-		TeleportWhereType type = TeleportWhereType.Fortress_banish;
+		TeleportWhereType type = TeleportWhereType.FORTRESS_BANISH;
 		for (L2PcInstance temp : getPlayersInside())
 		for (L2PcInstance temp : getPlayersInside())
 		{
 		{
 			if ((temp.getClanId() == owningClanId) && (owningClanId != 0))
 			if ((temp.getClanId() == owningClanId) && (owningClanId != 0))

+ 2 - 2
L2J_Server_BETA/java/com/l2jserver/gameserver/model/zone/type/L2NoRestartZone.java

@@ -19,7 +19,7 @@
 package com.l2jserver.gameserver.model.zone.type;
 package com.l2jserver.gameserver.model.zone.type;
 
 
 import com.l2jserver.gameserver.ThreadPoolManager;
 import com.l2jserver.gameserver.ThreadPoolManager;
-import com.l2jserver.gameserver.instancemanager.MapRegionManager;
+import com.l2jserver.gameserver.model.TeleportWhereType;
 import com.l2jserver.gameserver.model.actor.L2Character;
 import com.l2jserver.gameserver.model.actor.L2Character;
 import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
 import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
 import com.l2jserver.gameserver.model.zone.L2ZoneType;
 import com.l2jserver.gameserver.model.zone.L2ZoneType;
@@ -131,7 +131,7 @@ public class L2NoRestartZone extends L2ZoneType
 		@Override
 		@Override
 		public void run()
 		public void run()
 		{
 		{
-			_player.teleToLocation(MapRegionManager.TeleportWhereType.Town);
+			_player.teleToLocation(TeleportWhereType.TOWN);
 		}
 		}
 	}
 	}
 }
 }

+ 2 - 2
L2J_Server_BETA/java/com/l2jserver/gameserver/model/zone/type/L2OlympiadStadiumZone.java

@@ -20,9 +20,9 @@ package com.l2jserver.gameserver.model.zone.type;
 
 
 import com.l2jserver.gameserver.ThreadPoolManager;
 import com.l2jserver.gameserver.ThreadPoolManager;
 import com.l2jserver.gameserver.instancemanager.InstanceManager;
 import com.l2jserver.gameserver.instancemanager.InstanceManager;
-import com.l2jserver.gameserver.instancemanager.MapRegionManager;
 import com.l2jserver.gameserver.instancemanager.ZoneManager;
 import com.l2jserver.gameserver.instancemanager.ZoneManager;
 import com.l2jserver.gameserver.model.PcCondOverride;
 import com.l2jserver.gameserver.model.PcCondOverride;
+import com.l2jserver.gameserver.model.TeleportWhereType;
 import com.l2jserver.gameserver.model.actor.L2Character;
 import com.l2jserver.gameserver.model.actor.L2Character;
 import com.l2jserver.gameserver.model.actor.L2Npc;
 import com.l2jserver.gameserver.model.actor.L2Npc;
 import com.l2jserver.gameserver.model.actor.instance.L2DoorInstance;
 import com.l2jserver.gameserver.model.actor.instance.L2DoorInstance;
@@ -288,7 +288,7 @@ public class L2OlympiadStadiumZone extends L2ZoneRespawn
 					_player.getSummon().unSummon(_player);
 					_player.getSummon().unSummon(_player);
 				}
 				}
 				
 				
-				_player.teleToLocation(MapRegionManager.TeleportWhereType.Town);
+				_player.teleToLocation(TeleportWhereType.TOWN);
 				_player.setInstanceId(0);
 				_player.setInstanceId(0);
 				_player = null;
 				_player = null;
 			}
 			}

+ 2 - 2
L2J_Server_BETA/java/com/l2jserver/gameserver/model/zone/type/L2SiegableHallZone.java

@@ -21,8 +21,8 @@ package com.l2jserver.gameserver.model.zone.type;
 import java.util.ArrayList;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.List;
 
 
-import com.l2jserver.gameserver.instancemanager.MapRegionManager.TeleportWhereType;
 import com.l2jserver.gameserver.model.Location;
 import com.l2jserver.gameserver.model.Location;
+import com.l2jserver.gameserver.model.TeleportWhereType;
 import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
 import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
 
 
 /**
 /**
@@ -61,7 +61,7 @@ public final class L2SiegableHallZone extends L2ClanHallZone
 	
 	
 	public void banishNonSiegeParticipants()
 	public void banishNonSiegeParticipants()
 	{
 	{
-		final TeleportWhereType type = TeleportWhereType.ClanHall_banish;
+		final TeleportWhereType type = TeleportWhereType.CLANHALL_BANISH;
 		for (L2PcInstance player : getPlayersInside())
 		for (L2PcInstance player : getPlayersInside())
 		{
 		{
 			if ((player != null) && player.isInHideoutSiege())
 			if ((player != null) && player.isInHideoutSiege())

+ 2 - 2
L2J_Server_BETA/java/com/l2jserver/gameserver/model/zone/type/L2SiegeZone.java

@@ -23,8 +23,8 @@ import com.l2jserver.gameserver.datatables.SkillTable;
 import com.l2jserver.gameserver.instancemanager.CHSiegeManager;
 import com.l2jserver.gameserver.instancemanager.CHSiegeManager;
 import com.l2jserver.gameserver.instancemanager.FortManager;
 import com.l2jserver.gameserver.instancemanager.FortManager;
 import com.l2jserver.gameserver.instancemanager.FortSiegeManager;
 import com.l2jserver.gameserver.instancemanager.FortSiegeManager;
-import com.l2jserver.gameserver.instancemanager.MapRegionManager.TeleportWhereType;
 import com.l2jserver.gameserver.instancemanager.ZoneManager;
 import com.l2jserver.gameserver.instancemanager.ZoneManager;
+import com.l2jserver.gameserver.model.TeleportWhereType;
 import com.l2jserver.gameserver.model.actor.L2Character;
 import com.l2jserver.gameserver.model.actor.L2Character;
 import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
 import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
 import com.l2jserver.gameserver.model.actor.instance.L2SiegeSummonInstance;
 import com.l2jserver.gameserver.model.actor.instance.L2SiegeSummonInstance;
@@ -353,7 +353,7 @@ public class L2SiegeZone extends L2ZoneType
 	 */
 	 */
 	public void banishForeigners(int owningClanId)
 	public void banishForeigners(int owningClanId)
 	{
 	{
-		TeleportWhereType type = TeleportWhereType.Town;
+		TeleportWhereType type = TeleportWhereType.TOWN;
 		for (L2PcInstance temp : getPlayersInside())
 		for (L2PcInstance temp : getPlayersInside())
 		{
 		{
 			if (temp.getClanId() == owningClanId)
 			if (temp.getClanId() == owningClanId)

+ 2 - 2
L2J_Server_BETA/java/com/l2jserver/gameserver/network/clientpackets/EnterWorld.java

@@ -38,7 +38,6 @@ import com.l2jserver.gameserver.instancemanager.FortManager;
 import com.l2jserver.gameserver.instancemanager.FortSiegeManager;
 import com.l2jserver.gameserver.instancemanager.FortSiegeManager;
 import com.l2jserver.gameserver.instancemanager.InstanceManager;
 import com.l2jserver.gameserver.instancemanager.InstanceManager;
 import com.l2jserver.gameserver.instancemanager.MailManager;
 import com.l2jserver.gameserver.instancemanager.MailManager;
-import com.l2jserver.gameserver.instancemanager.MapRegionManager;
 import com.l2jserver.gameserver.instancemanager.PetitionManager;
 import com.l2jserver.gameserver.instancemanager.PetitionManager;
 import com.l2jserver.gameserver.instancemanager.QuestManager;
 import com.l2jserver.gameserver.instancemanager.QuestManager;
 import com.l2jserver.gameserver.instancemanager.SiegeManager;
 import com.l2jserver.gameserver.instancemanager.SiegeManager;
@@ -47,6 +46,7 @@ import com.l2jserver.gameserver.model.L2Clan;
 import com.l2jserver.gameserver.model.L2Object;
 import com.l2jserver.gameserver.model.L2Object;
 import com.l2jserver.gameserver.model.L2World;
 import com.l2jserver.gameserver.model.L2World;
 import com.l2jserver.gameserver.model.PcCondOverride;
 import com.l2jserver.gameserver.model.PcCondOverride;
+import com.l2jserver.gameserver.model.TeleportWhereType;
 import com.l2jserver.gameserver.model.actor.instance.L2ClassMasterInstance;
 import com.l2jserver.gameserver.model.actor.instance.L2ClassMasterInstance;
 import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
 import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
 import com.l2jserver.gameserver.model.entity.Couple;
 import com.l2jserver.gameserver.model.entity.Couple;
@@ -555,7 +555,7 @@ public class EnterWorld extends L2GameClientPacket
 		// Actually should be checked for inside castle only?
 		// Actually should be checked for inside castle only?
 		if (!activeChar.canOverrideCond(PcCondOverride.ZONE_CONDITIONS) && activeChar.isInsideZone(ZoneId.SIEGE) && (!activeChar.isInSiege() || (activeChar.getSiegeState() < 2)))
 		if (!activeChar.canOverrideCond(PcCondOverride.ZONE_CONDITIONS) && activeChar.isInsideZone(ZoneId.SIEGE) && (!activeChar.isInSiege() || (activeChar.getSiegeState() < 2)))
 		{
 		{
-			activeChar.teleToLocation(MapRegionManager.TeleportWhereType.Town);
+			activeChar.teleToLocation(TeleportWhereType.TOWN);
 		}
 		}
 		
 		
 		if (Config.ALLOW_MAIL)
 		if (Config.ALLOW_MAIL)

+ 8 - 7
L2J_Server_BETA/java/com/l2jserver/gameserver/network/clientpackets/RequestRestartPoint.java

@@ -27,6 +27,7 @@ import com.l2jserver.gameserver.instancemanager.MapRegionManager;
 import com.l2jserver.gameserver.instancemanager.TerritoryWarManager;
 import com.l2jserver.gameserver.instancemanager.TerritoryWarManager;
 import com.l2jserver.gameserver.model.L2SiegeClan;
 import com.l2jserver.gameserver.model.L2SiegeClan;
 import com.l2jserver.gameserver.model.Location;
 import com.l2jserver.gameserver.model.Location;
+import com.l2jserver.gameserver.model.TeleportWhereType;
 import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
 import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
 import com.l2jserver.gameserver.model.actor.instance.L2SiegeFlagInstance;
 import com.l2jserver.gameserver.model.actor.instance.L2SiegeFlagInstance;
 import com.l2jserver.gameserver.model.entity.Castle;
 import com.l2jserver.gameserver.model.entity.Castle;
@@ -138,7 +139,7 @@ public final class RequestRestartPoint extends L2GameClientPacket
 					_log.warning("Player [" + activeChar.getName() + "] called RestartPointPacket - To Clanhall and he doesn't have Clanhall!");
 					_log.warning("Player [" + activeChar.getName() + "] called RestartPointPacket - To Clanhall and he doesn't have Clanhall!");
 					return;
 					return;
 				}
 				}
-				loc = MapRegionManager.getInstance().getTeleToLocation(activeChar, MapRegionManager.TeleportWhereType.ClanHall);
+				loc = MapRegionManager.getInstance().getTeleToLocation(activeChar, TeleportWhereType.CLANHALL);
 				
 				
 				if ((ClanHallManager.getInstance().getClanHallByOwner(activeChar.getClan()) != null) && (ClanHallManager.getInstance().getClanHallByOwner(activeChar.getClan()).getFunction(ClanHall.FUNC_RESTORE_EXP) != null))
 				if ((ClanHallManager.getInstance().getClanHallByOwner(activeChar.getClan()) != null) && (ClanHallManager.getInstance().getClanHallByOwner(activeChar.getClan()).getFunction(ClanHall.FUNC_RESTORE_EXP) != null))
 				{
 				{
@@ -155,11 +156,11 @@ public final class RequestRestartPoint extends L2GameClientPacket
 					// Siege in progress
 					// Siege in progress
 					if (castle.getSiege().checkIsDefender(activeChar.getClan()))
 					if (castle.getSiege().checkIsDefender(activeChar.getClan()))
 					{
 					{
-						loc = MapRegionManager.getInstance().getTeleToLocation(activeChar, MapRegionManager.TeleportWhereType.Castle);
+						loc = MapRegionManager.getInstance().getTeleToLocation(activeChar, TeleportWhereType.CASTLE);
 					}
 					}
 					else if (castle.getSiege().checkIsAttacker(activeChar.getClan()))
 					else if (castle.getSiege().checkIsAttacker(activeChar.getClan()))
 					{
 					{
-						loc = MapRegionManager.getInstance().getTeleToLocation(activeChar, MapRegionManager.TeleportWhereType.Town);
+						loc = MapRegionManager.getInstance().getTeleToLocation(activeChar, TeleportWhereType.TOWN);
 					}
 					}
 					else
 					else
 					{
 					{
@@ -173,7 +174,7 @@ public final class RequestRestartPoint extends L2GameClientPacket
 					{
 					{
 						return;
 						return;
 					}
 					}
-					loc = MapRegionManager.getInstance().getTeleToLocation(activeChar, MapRegionManager.TeleportWhereType.Castle);
+					loc = MapRegionManager.getInstance().getTeleToLocation(activeChar, TeleportWhereType.CASTLE);
 				}
 				}
 				if ((CastleManager.getInstance().getCastleByOwner(activeChar.getClan()) != null) && (CastleManager.getInstance().getCastleByOwner(activeChar.getClan()).getFunction(Castle.FUNC_RESTORE_EXP) != null))
 				if ((CastleManager.getInstance().getCastleByOwner(activeChar.getClan()) != null) && (CastleManager.getInstance().getCastleByOwner(activeChar.getClan()).getFunction(Castle.FUNC_RESTORE_EXP) != null))
 				{
 				{
@@ -188,7 +189,7 @@ public final class RequestRestartPoint extends L2GameClientPacket
 					_log.warning("Player [" + activeChar.getName() + "] called RestartPointPacket - To Fortress and he doesn't have Fortress!");
 					_log.warning("Player [" + activeChar.getName() + "] called RestartPointPacket - To Fortress and he doesn't have Fortress!");
 					return;
 					return;
 				}
 				}
-				loc = MapRegionManager.getInstance().getTeleToLocation(activeChar, MapRegionManager.TeleportWhereType.Fortress);
+				loc = MapRegionManager.getInstance().getTeleToLocation(activeChar, TeleportWhereType.FORTRESS);
 				if ((FortManager.getInstance().getFortByOwner(activeChar.getClan()) != null) && (FortManager.getInstance().getFortByOwner(activeChar.getClan()).getFunction(Fort.FUNC_RESTORE_EXP) != null))
 				if ((FortManager.getInstance().getFortByOwner(activeChar.getClan()) != null) && (FortManager.getInstance().getFortByOwner(activeChar.getClan()).getFunction(Fort.FUNC_RESTORE_EXP) != null))
 				{
 				{
 					activeChar.restoreExp(FortManager.getInstance().getFortByOwner(activeChar.getClan()).getFunction(Fort.FUNC_RESTORE_EXP).getLvl());
 					activeChar.restoreExp(FortManager.getInstance().getFortByOwner(activeChar.getClan()).getFunction(Fort.FUNC_RESTORE_EXP).getLvl());
@@ -226,7 +227,7 @@ public final class RequestRestartPoint extends L2GameClientPacket
 					_log.warning("Player [" + activeChar.getName() + "] called RestartPointPacket - To Siege HQ and he doesn't have Siege HQ!");
 					_log.warning("Player [" + activeChar.getName() + "] called RestartPointPacket - To Siege HQ and he doesn't have Siege HQ!");
 					return;
 					return;
 				}
 				}
-				loc = MapRegionManager.getInstance().getTeleToLocation(activeChar, MapRegionManager.TeleportWhereType.SiegeFlag);
+				loc = MapRegionManager.getInstance().getTeleToLocation(activeChar, TeleportWhereType.SIEGEFLAG);
 				break;
 				break;
 			}
 			}
 			case 5: // Fixed or Player is a festival participant
 			case 5: // Fixed or Player is a festival participant
@@ -263,7 +264,7 @@ public final class RequestRestartPoint extends L2GameClientPacket
 			}
 			}
 			default:
 			default:
 			{
 			{
-				loc = MapRegionManager.getInstance().getTeleToLocation(activeChar, MapRegionManager.TeleportWhereType.Town);
+				loc = MapRegionManager.getInstance().getTeleToLocation(activeChar, TeleportWhereType.TOWN);
 				break;
 				break;
 			}
 			}
 		}
 		}