Преглед изворни кода

Continuing to removing Javolution

Zoey76 пре 10 година
родитељ
комит
1a3e9d43c1
26 измењених фајлова са 201 додато и 373 уклоњено
  1. 19 29
      L2J_Server/java/com/l2jserver/gameserver/instancemanager/FourSepulchersManager.java
  2. 64 88
      L2J_Server/java/com/l2jserver/gameserver/instancemanager/TerritoryWarManager.java
  3. 20 62
      L2J_Server/java/com/l2jserver/gameserver/model/L2Clan.java
  4. 2 4
      L2J_Server/java/com/l2jserver/gameserver/model/L2ContactList.java
  5. 2 4
      L2J_Server/java/com/l2jserver/gameserver/model/L2Object.java
  6. 4 14
      L2J_Server/java/com/l2jserver/gameserver/model/L2Party.java
  7. 3 3
      L2J_Server/java/com/l2jserver/gameserver/model/L2Radar.java
  8. 9 24
      L2J_Server/java/com/l2jserver/gameserver/model/L2Spawn.java
  9. 2 12
      L2J_Server/java/com/l2jserver/gameserver/model/L2Territory.java
  10. 9 20
      L2J_Server/java/com/l2jserver/gameserver/model/L2WorldRegion.java
  11. 4 5
      L2J_Server/java/com/l2jserver/gameserver/model/MobGroup.java
  12. 2 3
      L2J_Server/java/com/l2jserver/gameserver/model/MobGroupTable.java
  13. 2 3
      L2J_Server/java/com/l2jserver/gameserver/model/PartyMatchRoomList.java
  14. 2 3
      L2J_Server/java/com/l2jserver/gameserver/model/Petition.java
  15. 7 17
      L2J_Server/java/com/l2jserver/gameserver/model/actor/instance/L2PcInstance.java
  16. 2 6
      L2J_Server/java/com/l2jserver/gameserver/model/actor/instance/L2RaceManagerInstance.java
  17. 5 5
      L2J_Server/java/com/l2jserver/gameserver/model/actor/instance/L2ServitorInstance.java
  18. 2 3
      L2J_Server/java/com/l2jserver/gameserver/model/actor/instance/L2TamedBeastInstance.java
  19. 3 5
      L2J_Server/java/com/l2jserver/gameserver/model/actor/knownlist/CharKnownList.java
  20. 12 17
      L2J_Server/java/com/l2jserver/gameserver/model/entity/BlockCheckerEngine.java
  21. 3 8
      L2J_Server/java/com/l2jserver/gameserver/model/entity/Castle.java
  22. 3 8
      L2J_Server/java/com/l2jserver/gameserver/model/entity/ClanHall.java
  23. 1 3
      L2J_Server/java/com/l2jserver/gameserver/model/entity/Duel.java
  24. 8 13
      L2J_Server/java/com/l2jserver/gameserver/model/entity/Fort.java
  25. 4 6
      L2J_Server/java/com/l2jserver/gameserver/model/entity/Instance.java
  26. 7 8
      L2J_Server/java/com/l2jserver/gameserver/model/entity/L2Event.java

+ 19 - 29
L2J_Server/java/com/l2jserver/gameserver/instancemanager/FourSepulchersManager.java

@@ -21,19 +21,19 @@ package com.l2jserver.gameserver.instancemanager;
 import java.sql.Connection;
 import java.sql.PreparedStatement;
 import java.sql.ResultSet;
+import java.util.ArrayList;
 import java.util.Calendar;
 import java.util.HashMap;
+import java.util.LinkedList;
 import java.util.List;
 import java.util.Map;
 import java.util.Map.Entry;
-import java.util.Set;
+import java.util.concurrent.ConcurrentHashMap;
+import java.util.concurrent.CopyOnWriteArrayList;
 import java.util.concurrent.ScheduledFuture;
 import java.util.logging.Level;
 import java.util.logging.Logger;
 
-import javolution.util.FastList;
-import javolution.util.FastMap;
-
 import com.l2jserver.Config;
 import com.l2jserver.L2DatabaseFactory;
 import com.l2jserver.gameserver.ThreadPoolManager;
@@ -122,9 +122,9 @@ public final class FourSepulchersManager
 	};
 	// @formatter:on
 	
-	protected Map<Integer, Boolean> _archonSpawned = new FastMap<>();
-	protected Map<Integer, Boolean> _hallInUse = new FastMap<>();
-	protected Map<Integer, L2PcInstance> _challengers = new FastMap<>();
+	protected Map<Integer, Boolean> _archonSpawned = new ConcurrentHashMap<>();
+	protected Map<Integer, Boolean> _hallInUse = new ConcurrentHashMap<>();
+	protected Map<Integer, L2PcInstance> _challengers = new ConcurrentHashMap<>();
 	protected Map<Integer, int[]> _startHallSpawns = new HashMap<>();
 	protected Map<Integer, Integer> _hallGateKeepers = new HashMap<>();
 	protected Map<Integer, Integer> _keyBoxNpc = new HashMap<>();
@@ -145,7 +145,7 @@ public final class FourSepulchersManager
 	protected List<L2Spawn> _managers;
 	protected List<L2Spawn> _dukeFinalSpawns;
 	protected List<L2Spawn> _emperorsGraveSpawns;
-	protected List<L2Npc> _allMobs = new FastList<>();
+	protected List<L2Npc> _allMobs = new CopyOnWriteArrayList<>();
 	
 	private long _attackTimeEnd = 0;
 	private long _coolDownTimeEnd = 0;
@@ -262,19 +262,15 @@ public final class FourSepulchersManager
 		_hallInUse.put(31923, false);
 		_hallInUse.put(31924, false);
 		
-		if (_archonSpawned.size() != 0)
+		for (int npcId : _archonSpawned.keySet())
 		{
-			Set<Integer> npcIdSet = _archonSpawned.keySet();
-			for (int npcId : npcIdSet)
-			{
-				_archonSpawned.put(npcId, false);
-			}
+			_archonSpawned.put(npcId, false);
 		}
 	}
 	
 	protected void spawnManagers()
 	{
-		_managers = new FastList<>();
+		_managers = new CopyOnWriteArrayList<>();
 		
 		for (int npcId = 31921; npcId <= 31924; npcId++)
 		{
@@ -482,7 +478,7 @@ public final class FourSepulchersManager
 					ps2.setInt(2, 1);
 					try (ResultSet rs2 = ps2.executeQuery())
 					{
-						_physicalSpawns = new FastList<>();
+						_physicalSpawns = new ArrayList<>();
 						while (rs2.next())
 						{
 							final L2Spawn spawnDat = new L2Spawn(rs2.getInt("npc_templateid"));
@@ -529,7 +525,7 @@ public final class FourSepulchersManager
 					ps2.setInt(2, 2);
 					try (ResultSet rset2 = ps2.executeQuery())
 					{
-						_magicalSpawns = new FastList<>();
+						_magicalSpawns = new ArrayList<>();
 						
 						while (rset2.next())
 						{
@@ -580,7 +576,7 @@ public final class FourSepulchersManager
 					{
 						ps2.clearParameters();
 						
-						_dukeFinalSpawns = new FastList<>();
+						_dukeFinalSpawns = new ArrayList<>();
 						
 						while (rset2.next())
 						{
@@ -629,7 +625,7 @@ public final class FourSepulchersManager
 					ps2.setInt(2, 6);
 					try (ResultSet rs2 = ps2.executeQuery())
 					{
-						_emperorsGraveSpawns = new FastList<>();
+						_emperorsGraveSpawns = new ArrayList<>();
 						
 						while (rs2.next())
 						{
@@ -974,7 +970,7 @@ public final class FourSepulchersManager
 		
 		if (Config.FS_PARTY_MEMBER_COUNT > 1)
 		{
-			List<L2PcInstance> members = new FastList<>();
+			final List<L2PcInstance> members = new LinkedList<>();
 			for (L2PcInstance mem : player.getParty().getMembers())
 			{
 				if (!mem.isDead() && Util.checkIfInRange(700, player, mem, true))
@@ -1008,7 +1004,7 @@ public final class FourSepulchersManager
 		}
 		if ((Config.FS_PARTY_MEMBER_COUNT <= 1) && player.isInParty())
 		{
-			List<L2PcInstance> members = new FastList<>();
+			final List<L2PcInstance> members = new LinkedList<>();
 			for (L2PcInstance mem : player.getParty().getMembers())
 			{
 				if (!mem.isDead() && Util.checkIfInRange(700, player, mem, true))
@@ -1086,9 +1082,8 @@ public final class FourSepulchersManager
 			return;
 		}
 		
-		List<L2Spawn> monsterList;
-		List<L2SepulcherMonsterInstance> mobs = new FastList<>();
-		
+		final List<L2SepulcherMonsterInstance> mobs = new CopyOnWriteArrayList<>();
+		final List<L2Spawn> monsterList;
 		if (Rnd.get(2) == 0)
 		{
 			monsterList = _physicalMonsters.get(npcId);
@@ -1368,11 +1363,6 @@ public final class FourSepulchersManager
 	{
 		for (L2Npc mob : _allMobs)
 		{
-			if (mob == null)
-			{
-				continue;
-			}
-			
 			try
 			{
 				if (mob.getSpawn() != null)

+ 64 - 88
L2J_Server/java/com/l2jserver/gameserver/instancemanager/TerritoryWarManager.java

@@ -23,17 +23,16 @@ import java.sql.PreparedStatement;
 import java.sql.ResultSet;
 import java.sql.Statement;
 import java.util.Calendar;
-import java.util.Collection;
+import java.util.HashMap;
 import java.util.LinkedList;
 import java.util.List;
 import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
+import java.util.concurrent.CopyOnWriteArrayList;
 import java.util.concurrent.ScheduledFuture;
 import java.util.logging.Level;
 import java.util.logging.Logger;
 
-import javolution.util.FastList;
-import javolution.util.FastMap;
-
 import com.l2jserver.Config;
 import com.l2jserver.L2DatabaseFactory;
 import com.l2jserver.gameserver.ThreadPoolManager;
@@ -71,6 +70,7 @@ public final class TerritoryWarManager implements Siegable
 	// SQL
 	private static final String DELETE = "DELETE FROM territory_registrations WHERE castleId = ? and registeredId = ?";
 	private static final String INSERT = "INSERT INTO territory_registrations (castleId, registeredId) values (?, ?)";
+	public static final Map<Integer, Integer> TERRITORY_ITEM_IDS = new HashMap<>();
 	
 	public static String qn = "TerritoryWarSuperClass";
 	public static String GLOBAL_VARIABLE = "nextTWStartDate";
@@ -85,16 +85,15 @@ public final class TerritoryWarManager implements Siegable
 	public static boolean PLAYER_WITH_WARD_CAN_BE_KILLED_IN_PEACEZONE;
 	public static boolean SPAWN_WARDS_WHEN_TW_IS_NOT_IN_PROGRESS;
 	public static boolean RETURN_WARDS_WHEN_TW_STARTS;
-	public final Map<Integer, Integer> TERRITORY_ITEM_IDS = new FastMap<>();
 	
 	// Territory War settings
-	private final Map<Integer, List<L2Clan>> _registeredClans = new FastMap<>();
-	private final Map<Integer, List<Integer>> _registeredMercenaries = new FastMap<>();
-	private final Map<Integer, Territory> _territoryList = new FastMap<>();
-	protected List<Integer> _disguisedPlayers = new FastList<>();
-	private final List<TerritoryWard> _territoryWards = new FastList<>();
-	private final Map<L2Clan, L2SiegeFlagInstance> _clanFlags = new FastMap<>();
-	private final Map<Integer, Integer[]> _participantPoints = new FastMap<>();
+	private final Map<Integer, List<L2Clan>> _registeredClans = new ConcurrentHashMap<>();
+	private final Map<Integer, List<Integer>> _registeredMercenaries = new ConcurrentHashMap<>();
+	private final Map<Integer, Territory> _territoryList = new ConcurrentHashMap<>();
+	protected List<Integer> _disguisedPlayers = new CopyOnWriteArrayList<>();
+	private final List<TerritoryWard> _territoryWards = new CopyOnWriteArrayList<>();
+	private final Map<L2Clan, L2SiegeFlagInstance> _clanFlags = new ConcurrentHashMap<>();
+	private final Map<Integer, Integer[]> _participantPoints = new ConcurrentHashMap<>();
 	protected Calendar _startTWDate = Calendar.getInstance();
 	protected boolean _isRegistrationOver = true;
 	protected boolean _isTWChannelOpen = false;
@@ -103,9 +102,8 @@ public final class TerritoryWarManager implements Siegable
 	protected ScheduledFuture<?> _scheduledEndTWTask = null;
 	protected ScheduledFuture<?> _scheduledRewardOnlineTask = null;
 	
-	protected TerritoryWarManager()
+	static
 	{
-		// Constant data
 		TERRITORY_ITEM_IDS.put(81, 13757);
 		TERRITORY_ITEM_IDS.put(82, 13758);
 		TERRITORY_ITEM_IDS.put(83, 13759);
@@ -115,7 +113,10 @@ public final class TerritoryWarManager implements Siegable
 		TERRITORY_ITEM_IDS.put(87, 13763);
 		TERRITORY_ITEM_IDS.put(88, 13764);
 		TERRITORY_ITEM_IDS.put(89, 13765);
-		
+	}
+	
+	protected TerritoryWarManager()
+	{
 		load();
 	}
 	
@@ -237,7 +238,7 @@ public final class TerritoryWarManager implements Siegable
 		return ret;
 	}
 	
-	public Collection<L2Clan> getRegisteredClans(int castleId)
+	public List<L2Clan> getRegisteredClans(int castleId)
 	{
 		return _registeredClans.get(castleId);
 	}
@@ -252,7 +253,7 @@ public final class TerritoryWarManager implements Siegable
 		return _disguisedPlayers.contains(playerObjId);
 	}
 	
-	public Collection<Integer> getRegisteredMercenaries(int castleId)
+	public List<Integer> getRegisteredMercenaries(int castleId)
 	{
 		return _registeredMercenaries.get(castleId);
 	}
@@ -299,11 +300,8 @@ public final class TerritoryWarManager implements Siegable
 		{
 			return;
 		}
-		else if (_registeredClans.get(castleId) == null)
-		{
-			_registeredClans.put(castleId, new FastList<L2Clan>());
-		}
 		
+		_registeredClans.putIfAbsent(castleId, new CopyOnWriteArrayList<>());
 		_registeredClans.get(castleId).add(clan);
 		changeRegistration(castleId, clan.getId(), false);
 	}
@@ -314,11 +312,8 @@ public final class TerritoryWarManager implements Siegable
 		{
 			return;
 		}
-		else if (_registeredMercenaries.get(castleId) == null)
-		{
-			_registeredMercenaries.put(castleId, new FastList<Integer>());
-		}
 		
+		_registeredMercenaries.putIfAbsent(castleId, new CopyOnWriteArrayList<>());
 		_registeredMercenaries.get(castleId).add(player.getObjectId());
 		changeRegistration(castleId, player.getObjectId(), false);
 	}
@@ -374,9 +369,9 @@ public final class TerritoryWarManager implements Siegable
 	public L2Npc addTerritoryWard(int territoryId, int newOwnerId, int oldOwnerId, boolean broadcastMessage)
 	{
 		L2Npc ret = null;
-		if (_territoryList.get(newOwnerId) != null)
+		Territory terNew = _territoryList.get(newOwnerId);
+		if (terNew != null)
 		{
-			Territory terNew = _territoryList.get(newOwnerId);
 			TerritoryNPCSpawn ward = terNew.getFreeWardSpawnPlace();
 			if (ward != null)
 			{
@@ -476,11 +471,7 @@ public final class TerritoryWarManager implements Siegable
 	
 	public L2SiegeFlagInstance getHQForTerritory(int territoryId)
 	{
-		if (_territoryList.containsKey(territoryId - 80))
-		{
-			return _territoryList.get(territoryId - 80).getHQ();
-		}
-		return null;
+		return _territoryList.get(territoryId - 80).getHQ();
 	}
 	
 	public void setHQForClan(L2Clan clan, L2SiegeFlagInstance hq)
@@ -503,11 +494,7 @@ public final class TerritoryWarManager implements Siegable
 	
 	public L2SiegeFlagInstance getFlagForClan(L2Clan clan)
 	{
-		if (_clanFlags.containsKey(clan))
-		{
-			return _clanFlags.get(clan);
-		}
-		return null;
+		return _clanFlags.get(clan);
 	}
 	
 	public void removeClanFlag(L2Clan clan)
@@ -598,19 +585,16 @@ public final class TerritoryWarManager implements Siegable
 	
 	public void giveTWQuestPoint(L2PcInstance player)
 	{
-		if (!_participantPoints.containsKey(player.getObjectId()))
+		_participantPoints.putIfAbsent(player.getObjectId(), new Integer[]
 		{
-			_participantPoints.put(player.getObjectId(), new Integer[]
-			{
-				player.getSiegeSide(),
-				0,
-				0,
-				0,
-				0,
-				0,
-				0
-			});
-		}
+			player.getSiegeSide(),
+			0,
+			0,
+			0,
+			0,
+			0,
+			0
+		});
 		_participantPoints.get(player.getObjectId())[2]++;
 	}
 	
@@ -628,19 +612,17 @@ public final class TerritoryWarManager implements Siegable
 				{
 					continue;
 				}
-				else if (!_participantPoints.containsKey(pl.getObjectId()))
+				
+				_participantPoints.putIfAbsent(pl.getObjectId(), new Integer[]
 				{
-					_participantPoints.put(pl.getObjectId(), new Integer[]
-					{
-						pl.getSiegeSide(),
-						0,
-						0,
-						0,
-						0,
-						0,
-						0
-					});
-				}
+					pl.getSiegeSide(),
+					0,
+					0,
+					0,
+					0,
+					0,
+					0
+				});
 				_participantPoints.get(pl.getObjectId())[type]++;
 			}
 		}
@@ -650,19 +632,17 @@ public final class TerritoryWarManager implements Siegable
 			{
 				return;
 			}
-			else if (!_participantPoints.containsKey(killer.getObjectId()))
+			
+			_participantPoints.putIfAbsent(killer.getObjectId(), new Integer[]
 			{
-				_participantPoints.put(killer.getObjectId(), new Integer[]
-				{
-					killer.getSiegeSide(),
-					0,
-					0,
-					0,
-					0,
-					0,
-					0
-				});
-			}
+				killer.getSiegeSide(),
+				0,
+				0,
+				0,
+				0,
+				0,
+				0
+			});
 			_participantPoints.get(killer.getObjectId())[type]++;
 		}
 	}
@@ -752,10 +732,9 @@ public final class TerritoryWarManager implements Siegable
 	
 	public L2Npc spawnNPC(int npcId, Location loc)
 	{
-		L2Spawn spawnDat;
 		try
 		{
-			spawnDat = new L2Spawn(npcId);
+			final L2Spawn spawnDat = new L2Spawn(npcId);
 			spawnDat.setAmount(1);
 			spawnDat.setX(loc.getX());
 			spawnDat.setY(loc.getY());
@@ -909,7 +888,7 @@ public final class TerritoryWarManager implements Siegable
 				{
 					if (_registeredClans.get(castleId) == null)
 					{
-						_registeredClans.put(castleId, new FastList<L2Clan>());
+						_registeredClans.putIfAbsent(castleId, new CopyOnWriteArrayList<>());
 					}
 					_registeredClans.get(castleId).add(ClanTable.getInstance().getClan(registeredId));
 				}
@@ -917,7 +896,7 @@ public final class TerritoryWarManager implements Siegable
 				{
 					if (_registeredMercenaries.get(castleId) == null)
 					{
-						_registeredMercenaries.put(castleId, new FastList<Integer>());
+						_registeredMercenaries.put(castleId, new CopyOnWriteArrayList<>());
 					}
 					_registeredMercenaries.get(castleId).add(registeredId);
 				}
@@ -936,7 +915,7 @@ public final class TerritoryWarManager implements Siegable
 			_log.warning(getClass().getSimpleName() + ": TerritoryList is NULL!");
 			return;
 		}
-		FastList<Territory> activeTerritoryList = new FastList<>();
+		List<Territory> activeTerritoryList = new LinkedList<>();
 		for (Territory t : _territoryList.values())
 		{
 			Castle castle = CastleManager.getInstance().getCastleById(t.getCastleId());
@@ -1035,7 +1014,7 @@ public final class TerritoryWarManager implements Siegable
 			_log.warning(getClass().getSimpleName() + ": TerritoryList is NULL!");
 			return;
 		}
-		FastList<Territory> activeTerritoryList = new FastList<>();
+		List<Territory> activeTerritoryList = new LinkedList<>();
 		for (Territory t : _territoryList.values())
 		{
 			Castle castle = CastleManager.getInstance().getCastleById(t.getCastleId());
@@ -1062,14 +1041,12 @@ public final class TerritoryWarManager implements Siegable
 			return;
 		}
 		
-		if (_territoryWards != null)
+		for (TerritoryWard twWard : _territoryWards)
 		{
-			for (TerritoryWard twWard : _territoryWards)
-			{
-				twWard.unSpawnMe();
-			}
-			_territoryWards.clear();
+			twWard.unSpawnMe();
 		}
+		_territoryWards.clear();
+		
 		// teleportPlayer(Siege.TeleportWhoType.Attacker, MapRegionTable.TeleportWhereType.Town); // Teleport to the closest town
 		for (Territory t : activeTerritoryList)
 		{
@@ -1540,7 +1517,7 @@ public final class TerritoryWarManager implements Siegable
 		private final int _castleId; // territory Castle
 		protected int _fortId; // territory Fortress
 		private L2Clan _ownerClan;
-		private final FastList<TerritoryNPCSpawn> _spawnList;
+		private final List<TerritoryNPCSpawn> _spawnList = new LinkedList<>();
 		private final TerritoryNPCSpawn[] _territoryWardSpawnPlaces;
 		private boolean _isInProgress = false;
 		private L2SiegeFlagInstance _territoryHQ = null;
@@ -1550,7 +1527,6 @@ public final class TerritoryWarManager implements Siegable
 		{
 			_castleId = castleId;
 			_territoryId = castleId + 80;
-			_spawnList = new FastList<>();
 			_territoryWardSpawnPlaces = new TerritoryNPCSpawn[9];
 			_questDone = new int[2];
 		}
@@ -1691,7 +1667,7 @@ public final class TerritoryWarManager implements Siegable
 		
 		public List<Integer> getOwnedWardIds()
 		{
-			List<Integer> ret = new FastList<>();
+			List<Integer> ret = new LinkedList<>();
 			for (TerritoryNPCSpawn wardSpawn : _territoryWardSpawnPlaces)
 			{
 				if (wardSpawn.getId() > 0)

+ 20 - 62
L2J_Server/java/com/l2jserver/gameserver/model/L2Clan.java

@@ -29,13 +29,11 @@ import java.util.LinkedList;
 import java.util.List;
 import java.util.Map;
 import java.util.concurrent.ConcurrentHashMap;
+import java.util.concurrent.CopyOnWriteArrayList;
 import java.util.concurrent.atomic.AtomicInteger;
 import java.util.logging.Level;
 import java.util.logging.Logger;
 
-import javolution.util.FastList;
-import javolution.util.FastMap;
-
 import com.l2jserver.Config;
 import com.l2jserver.L2DatabaseFactory;
 import com.l2jserver.gameserver.communitybbs.BB.Forum;
@@ -138,16 +136,16 @@ public class L2Clan implements IIdentifiable, INamable
 	private int _bloodOathCount;
 	
 	private final ItemContainer _warehouse = new ClanWarehouse(this);
-	private final List<Integer> _atWarWith = new FastList<>();
-	private final List<Integer> _atWarAttackers = new FastList<>();
+	private final List<Integer> _atWarWith = new CopyOnWriteArrayList<>();
+	private final List<Integer> _atWarAttackers = new CopyOnWriteArrayList<>();
 	
 	private Forum _forum;
 	
-	/** FastMap(Integer, L2Skill) containing all skills of the L2Clan */
-	private final Map<Integer, Skill> _skills = new FastMap<>();
-	private final Map<Integer, RankPrivs> _privs = new FastMap<>();
-	private final Map<Integer, SubPledge> _subPledges = new FastMap<>();
-	private final Map<Integer, Skill> _subPledgeSkills = new FastMap<>();
+	/** Map(Integer, L2Skill) containing all skills of the L2Clan */
+	private final Map<Integer, Skill> _skills = new ConcurrentHashMap<>();
+	private final Map<Integer, RankPrivs> _privs = new ConcurrentHashMap<>();
+	private final Map<Integer, SubPledge> _subPledges = new ConcurrentHashMap<>();
+	private final Map<Integer, Skill> _subPledgeSkills = new ConcurrentHashMap<>();
 	
 	private int _reputationScore = 0;
 	private int _rank = 0;
@@ -1604,59 +1602,32 @@ public class L2Clan implements IIdentifiable, INamable
 	
 	public boolean isAtWarWith(Integer id)
 	{
-		if (!_atWarWith.isEmpty())
-		{
-			if (_atWarWith.contains(id))
-			{
-				return true;
-			}
-		}
-		return false;
+		return _atWarWith.contains(id);
 	}
 	
 	public boolean isAtWarWith(L2Clan clan)
 	{
-		if (clan == null)
-		{
-			return false;
-		}
-		if (!_atWarWith.isEmpty())
-		{
-			if (_atWarWith.contains(clan.getId()))
-			{
-				return true;
-			}
-		}
-		return false;
+		return _atWarWith.contains(clan.getId());
 	}
 	
-	public boolean isAtWarAttacker(Integer id)
+	public boolean isAtWarAttacker(int id)
 	{
-		if ((_atWarAttackers != null) && !_atWarAttackers.isEmpty())
-		{
-			if (_atWarAttackers.contains(id))
-			{
-				return true;
-			}
-		}
-		return false;
+		return _atWarAttackers.contains(id);
 	}
 	
 	public void setEnemyClan(L2Clan clan)
 	{
-		Integer id = clan.getId();
-		_atWarWith.add(id);
+		_atWarWith.add(clan.getId());
 	}
 	
-	public void setEnemyClan(Integer clan)
+	public void setEnemyClan(int id)
 	{
-		_atWarWith.add(clan);
+		_atWarWith.add(id);
 	}
 	
 	public void setAttackerClan(L2Clan clan)
 	{
-		Integer id = clan.getId();
-		_atWarAttackers.add(id);
+		_atWarAttackers.add(clan.getId());
 	}
 	
 	public void setAttackerClan(Integer clan)
@@ -1666,14 +1637,12 @@ public class L2Clan implements IIdentifiable, INamable
 	
 	public void deleteEnemyClan(L2Clan clan)
 	{
-		Integer id = clan.getId();
-		_atWarWith.remove(id);
+		_atWarWith.remove(clan.getId());
 	}
 	
 	public void deleteAttackerClan(L2Clan clan)
 	{
-		Integer id = clan.getId();
-		_atWarAttackers.remove(id);
+		_atWarAttackers.remove(clan.getId());
 	}
 	
 	public int getHiredGuards()
@@ -1688,11 +1657,7 @@ public class L2Clan implements IIdentifiable, INamable
 	
 	public boolean isAtWar()
 	{
-		if ((_atWarWith != null) && !_atWarWith.isEmpty())
-		{
-			return true;
-		}
-		return false;
+		return (_atWarWith != null) && !_atWarWith.isEmpty();
 	}
 	
 	public List<Integer> getWarList()
@@ -1879,11 +1844,6 @@ public class L2Clan implements IIdentifiable, INamable
 	 */
 	public final SubPledge[] getAllSubPledges()
 	{
-		if (_subPledges == null)
-		{
-			return new SubPledge[0];
-		}
-		
 		return _subPledges.values().toArray(new SubPledge[_subPledges.values().size()]);
 	}
 	
@@ -2044,11 +2004,9 @@ public class L2Clan implements IIdentifiable, INamable
 	
 	public void initializePrivs()
 	{
-		RankPrivs privs;
 		for (int i = 1; i < 10; i++)
 		{
-			privs = new RankPrivs(i, 0, new EnumIntBitmask<>(ClanPrivilege.class, false));
-			_privs.put(i, privs);
+			_privs.put(i, new RankPrivs(i, 0, new EnumIntBitmask<>(ClanPrivilege.class, false)));
 		}
 	}
 	

+ 2 - 4
L2J_Server/java/com/l2jserver/gameserver/model/L2ContactList.java

@@ -22,11 +22,10 @@ import java.sql.Connection;
 import java.sql.PreparedStatement;
 import java.sql.ResultSet;
 import java.util.List;
+import java.util.concurrent.CopyOnWriteArrayList;
 import java.util.logging.Level;
 import java.util.logging.Logger;
 
-import javolution.util.FastList;
-
 import com.l2jserver.L2DatabaseFactory;
 import com.l2jserver.gameserver.data.sql.impl.CharNameTable;
 import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
@@ -44,7 +43,7 @@ public class L2ContactList
 {
 	private final Logger _log = Logger.getLogger(getClass().getName());
 	private final L2PcInstance activeChar;
-	private final List<String> _contacts;
+	private final List<String> _contacts = new CopyOnWriteArrayList<>();
 	
 	private static final String QUERY_ADD = "INSERT INTO character_contacts (charId, contactId) VALUES (?, ?)";
 	private static final String QUERY_REMOVE = "DELETE FROM character_contacts WHERE charId = ? and contactId = ?";
@@ -53,7 +52,6 @@ public class L2ContactList
 	public L2ContactList(L2PcInstance player)
 	{
 		activeChar = player;
-		_contacts = new FastList<String>().shared();
 		restore();
 	}
 	

+ 2 - 4
L2J_Server/java/com/l2jserver/gameserver/model/L2Object.java

@@ -19,10 +19,9 @@
 package com.l2jserver.gameserver.model;
 
 import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
 import java.util.concurrent.atomic.AtomicInteger;
 
-import javolution.util.FastMap;
-
 import com.l2jserver.gameserver.enums.InstanceType;
 import com.l2jserver.gameserver.enums.ShotType;
 import com.l2jserver.gameserver.handler.ActionHandler;
@@ -525,12 +524,11 @@ public abstract class L2Object extends ListenersContainer implements IIdentifiab
 	{
 		if (_scripts == null)
 		{
-			// Double-checked locking
 			synchronized (this)
 			{
 				if (_scripts == null)
 				{
-					_scripts = new FastMap<String, Object>().shared();
+					_scripts = new ConcurrentHashMap<>();
 				}
 			}
 		}

+ 4 - 14
L2J_Server/java/com/l2jserver/gameserver/model/L2Party.java

@@ -23,14 +23,12 @@ import java.util.ArrayList;
 import java.util.HashSet;
 import java.util.LinkedList;
 import java.util.List;
-import java.util.NoSuchElementException;
 import java.util.Set;
+import java.util.concurrent.CopyOnWriteArrayList;
 import java.util.concurrent.Future;
 import java.util.logging.Level;
 import java.util.logging.Logger;
 
-import javolution.util.FastList;
-
 import com.l2jserver.Config;
 import com.l2jserver.gameserver.GameTimeController;
 import com.l2jserver.gameserver.SevenSignsFestival;
@@ -83,7 +81,7 @@ public class L2Party extends AbstractPlayerGroup
 	private static final Duration PARTY_POSITION_BROADCAST_INTERVAL = Duration.ofSeconds(12);
 	private static final Duration PARTY_DISTRIBUTION_TYPE_REQUEST_TIMEOUT = Duration.ofSeconds(15);
 	
-	private final FastList<L2PcInstance> _members;
+	private final List<L2PcInstance> _members = new CopyOnWriteArrayList<>();
 	private boolean _pendingInvitation = false;
 	private long _pendingInviteTimeout;
 	private int _partyLvl = 0;
@@ -116,7 +114,6 @@ public class L2Party extends AbstractPlayerGroup
 	 */
 	public L2Party(L2PcInstance leader, PartyDistributionType partyDistributionType)
 	{
-		_members = new FastList<L2PcInstance>().shared();
 		_members.add(leader);
 		_partyLvl = leader.getLevel();
 		_distributionType = partyDistributionType;
@@ -160,7 +157,7 @@ public class L2Party extends AbstractPlayerGroup
 	 */
 	private L2PcInstance getCheckedRandomMember(int itemId, L2Character target)
 	{
-		List<L2PcInstance> availableMembers = new FastList<>();
+		List<L2PcInstance> availableMembers = new ArrayList<>();
 		for (L2PcInstance member : getMembers())
 		{
 			if (member.getInventory().validateCapacityByItemId(itemId) && Util.checkIfInRange(Config.ALT_PARTY_RANGE2, target, member, true))
@@ -973,14 +970,7 @@ public class L2Party extends AbstractPlayerGroup
 	@Override
 	public L2PcInstance getLeader()
 	{
-		try
-		{
-			return _members.getFirst();
-		}
-		catch (NoSuchElementException e)
-		{
-			return null;
-		}
+		return _members.get(0);
 	}
 	
 	public synchronized void requestLootChange(PartyDistributionType partyDistributionType)

+ 3 - 3
L2J_Server/java/com/l2jserver/gameserver/model/L2Radar.java

@@ -18,7 +18,8 @@
  */
 package com.l2jserver.gameserver.model;
 
-import javolution.util.FastList;
+import java.util.List;
+import java.util.concurrent.CopyOnWriteArrayList;
 
 import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
 import com.l2jserver.gameserver.network.serverpackets.RadarControl;
@@ -29,12 +30,11 @@ import com.l2jserver.gameserver.network.serverpackets.RadarControl;
 public final class L2Radar
 {
 	private final L2PcInstance _player;
-	private final FastList<RadarMarker> _markers;
+	private final List<RadarMarker> _markers = new CopyOnWriteArrayList<>();
 	
 	public L2Radar(L2PcInstance player)
 	{
 		_player = player;
-		_markers = new FastList<>();
 	}
 	
 	// Add a marker to player's radar

+ 9 - 24
L2J_Server/java/com/l2jserver/gameserver/model/L2Spawn.java

@@ -22,11 +22,10 @@ import java.lang.reflect.Constructor;
 import java.util.List;
 import java.util.Map;
 import java.util.concurrent.ConcurrentHashMap;
+import java.util.concurrent.CopyOnWriteArrayList;
 import java.util.logging.Level;
 import java.util.logging.Logger;
 
-import javolution.util.FastList;
-
 import com.l2jserver.Config;
 import com.l2jserver.gameserver.GeoData;
 import com.l2jserver.gameserver.ThreadPoolManager;
@@ -80,8 +79,8 @@ public class L2Spawn implements IPositionable, IIdentifiable, INamable
 	private boolean _doRespawn;
 	/** If true then spawn is custom */
 	private boolean _customSpawn;
-	private static List<SpawnListener> _spawnListeners = new FastList<>();
-	private final FastList<L2Npc> _spawnedNpcs = new FastList<>();
+	private static List<SpawnListener> _spawnListeners = new CopyOnWriteArrayList<>();
+	private final List<L2Npc> _spawnedNpcs = new CopyOnWriteArrayList<>();
 	private Map<Integer, Location> _lastSpawnPoints;
 	private boolean _isNoRndWalk = false; // Is no random walk
 	
@@ -685,28 +684,19 @@ public class L2Spawn implements IPositionable, IIdentifiable, INamable
 	
 	public static void addSpawnListener(SpawnListener listener)
 	{
-		synchronized (_spawnListeners)
-		{
-			_spawnListeners.add(listener);
-		}
+		_spawnListeners.add(listener);
 	}
 	
 	public static void removeSpawnListener(SpawnListener listener)
 	{
-		synchronized (_spawnListeners)
-		{
-			_spawnListeners.remove(listener);
-		}
+		_spawnListeners.remove(listener);
 	}
 	
 	public static void notifyNpcSpawned(L2Npc npc)
 	{
-		synchronized (_spawnListeners)
+		for (SpawnListener listener : _spawnListeners)
 		{
-			for (SpawnListener listener : _spawnListeners)
-			{
-				listener.npcSpawned(npc);
-			}
+			listener.npcSpawned(npc);
 		}
 	}
 	
@@ -771,15 +761,10 @@ public class L2Spawn implements IPositionable, IIdentifiable, INamable
 	
 	public L2Npc getLastSpawn()
 	{
-		if (!_spawnedNpcs.isEmpty())
-		{
-			return _spawnedNpcs.getLast();
-		}
-		
-		return null;
+		return _spawnedNpcs.get(_spawnedNpcs.size() - 1);
 	}
 	
-	public final FastList<L2Npc> getSpawnedNpcs()
+	public final List<L2Npc> getSpawnedNpcs()
 	{
 		return _spawnedNpcs;
 	}

+ 2 - 12
L2J_Server/java/com/l2jserver/gameserver/model/L2Territory.java

@@ -19,10 +19,9 @@
 package com.l2jserver.gameserver.model;
 
 import java.util.List;
+import java.util.concurrent.CopyOnWriteArrayList;
 import java.util.logging.Logger;
 
-import javolution.util.FastList;
-
 import com.l2jserver.util.Rnd;
 
 /**
@@ -47,7 +46,7 @@ public class L2Territory
 		}
 	}
 	
-	private final List<Point> _points;
+	private final List<Point> _points = new CopyOnWriteArrayList<>();
 	private final int _terr;
 	private int _xMin;
 	private int _xMax;
@@ -59,7 +58,6 @@ public class L2Territory
 	
 	public L2Territory(int terr)
 	{
-		_points = new FastList<>();
 		_terr = terr;
 		_xMin = 999999;
 		_xMax = -999999;
@@ -100,14 +98,6 @@ public class L2Territory
 		_procMax += proc;
 	}
 	
-	public void print()
-	{
-		for (Point p : _points)
-		{
-			_log.info("(" + p._x + "," + p._y + ")");
-		}
-	}
-	
 	public boolean isIntersect(int x, int y, Point p1, Point p2)
 	{
 		double dy1 = p1._y - y;

+ 9 - 20
L2J_Server/java/com/l2jserver/gameserver/model/L2WorldRegion.java

@@ -19,15 +19,13 @@
 package com.l2jserver.gameserver.model;
 
 import java.util.ArrayList;
-import java.util.Collection;
 import java.util.List;
 import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
+import java.util.concurrent.CopyOnWriteArrayList;
 import java.util.concurrent.ScheduledFuture;
 import java.util.logging.Logger;
 
-import javolution.util.FastList;
-import javolution.util.FastMap;
-
 import com.l2jserver.Config;
 import com.l2jserver.gameserver.ThreadPoolManager;
 import com.l2jserver.gameserver.datatables.SpawnTable;
@@ -45,29 +43,24 @@ public final class L2WorldRegion
 	private static final Logger _log = Logger.getLogger(L2WorldRegion.class.getName());
 	
 	/** Map containing all playable characters in game in this world region. */
-	private final Map<Integer, L2Playable> _allPlayable;
+	private final Map<Integer, L2Playable> _allPlayable = new ConcurrentHashMap<>();
 	
 	/** Map containing visible objects in this world region. */
-	private final Map<Integer, L2Object> _visibleObjects;
+	private final Map<Integer, L2Object> _visibleObjects = new ConcurrentHashMap<>();
 	
-	private final List<L2WorldRegion> _surroundingRegions;
+	private final List<L2WorldRegion> _surroundingRegions = new ArrayList<>();
 	private final int _tileX, _tileY;
 	private boolean _active = false;
 	private ScheduledFuture<?> _neighborsTask = null;
-	private final List<L2ZoneType> _zones;
+	private final List<L2ZoneType> _zones = new CopyOnWriteArrayList<>();
 	
 	public L2WorldRegion(int pTileX, int pTileY)
 	{
-		_allPlayable = new FastMap<Integer, L2Playable>().shared();
-		_visibleObjects = new FastMap<Integer, L2Object>().shared();
-		_surroundingRegions = new ArrayList<>();
-		
 		_tileX = pTileX;
 		_tileY = pTileY;
 		
 		// default a newly initialized region to inactive, unless always on is specified
 		_active = Config.GRIDS_ALWAYS_ON;
-		_zones = new FastList<>();
 	}
 	
 	public List<L2ZoneType> getZones()
@@ -235,8 +228,7 @@ public final class L2WorldRegion
 		int c = 0;
 		if (!isOn)
 		{
-			Collection<L2Object> vObj = _visibleObjects.values();
-			for (L2Object o : vObj)
+			for (L2Object o : _visibleObjects.values())
 			{
 				if (o instanceof L2Attackable)
 				{
@@ -274,9 +266,7 @@ public final class L2WorldRegion
 		}
 		else
 		{
-			Collection<L2Object> vObj = _visibleObjects.values();
-			
-			for (L2Object o : vObj)
+			for (L2Object o : _visibleObjects.values())
 			{
 				if (o instanceof L2Attackable)
 				{
@@ -484,8 +474,7 @@ public final class L2WorldRegion
 	public void deleteVisibleNpcSpawns()
 	{
 		_log.fine("Deleting all visible NPC's in Region: " + getName());
-		Collection<L2Object> vNPC = _visibleObjects.values();
-		for (L2Object obj : vNPC)
+		for (L2Object obj : _visibleObjects.values())
 		{
 			if (obj instanceof L2Npc)
 			{

+ 4 - 5
L2J_Server/java/com/l2jserver/gameserver/model/MobGroup.java

@@ -18,9 +18,9 @@
  */
 package com.l2jserver.gameserver.model;
 
+import java.util.LinkedList;
 import java.util.List;
-
-import javolution.util.FastList;
+import java.util.concurrent.CopyOnWriteArrayList;
 
 import com.l2jserver.gameserver.ai.CtrlIntention;
 import com.l2jserver.gameserver.ai.L2ControllableMobAI;
@@ -68,7 +68,7 @@ public final class MobGroup
 	{
 		if (_mobs == null)
 		{
-			_mobs = new FastList<>();
+			_mobs = new CopyOnWriteArrayList<>();
 		}
 		
 		return _mobs;
@@ -370,8 +370,7 @@ public final class MobGroup
 	
 	protected void removeDead()
 	{
-		List<L2ControllableMobInstance> deadMobs = new FastList<>();
-		
+		List<L2ControllableMobInstance> deadMobs = new LinkedList<>();
 		for (L2ControllableMobInstance mobInst : getMobs())
 		{
 			if ((mobInst != null) && mobInst.isDead())

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

@@ -19,8 +19,7 @@
 package com.l2jserver.gameserver.model;
 
 import java.util.Map;
-
-import javolution.util.FastMap;
+import java.util.concurrent.ConcurrentHashMap;
 
 import com.l2jserver.gameserver.model.actor.instance.L2ControllableMobInstance;
 
@@ -36,7 +35,7 @@ public class MobGroupTable
 	
 	protected MobGroupTable()
 	{
-		_groupMap = new FastMap<>();
+		_groupMap = new ConcurrentHashMap<>();
 	}
 	
 	public static MobGroupTable getInstance()

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

@@ -19,8 +19,7 @@
 package com.l2jserver.gameserver.model;
 
 import java.util.Map;
-
-import javolution.util.FastMap;
+import java.util.concurrent.ConcurrentHashMap;
 
 import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
 import com.l2jserver.gameserver.network.SystemMessageId;
@@ -36,7 +35,7 @@ public class PartyMatchRoomList
 	
 	protected PartyMatchRoomList()
 	{
-		_rooms = new FastMap<>();
+		_rooms = new ConcurrentHashMap<>();
 	}
 	
 	public synchronized void addPartyMatchRoom(int id, PartyMatchRoom room)

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

@@ -19,8 +19,7 @@
 package com.l2jserver.gameserver.model;
 
 import java.util.List;
-
-import javolution.util.FastList;
+import java.util.concurrent.CopyOnWriteArrayList;
 
 import com.l2jserver.gameserver.enums.PetitionState;
 import com.l2jserver.gameserver.enums.PetitionType;
@@ -44,7 +43,7 @@ public final class Petition
 	private final PetitionType _type;
 	private PetitionState _state = PetitionState.PENDING;
 	private final String _content;
-	private final List<CreatureSay> _messageLog = new FastList<>();
+	private final List<CreatureSay> _messageLog = new CopyOnWriteArrayList<>();
 	private final L2PcInstance _petitioner;
 	private L2PcInstance _responder;
 	

+ 7 - 17
L2J_Server/java/com/l2jserver/gameserver/model/actor/instance/L2PcInstance.java

@@ -47,9 +47,6 @@ import java.util.concurrent.atomic.AtomicInteger;
 import java.util.concurrent.locks.ReentrantLock;
 import java.util.logging.Level;
 
-import javolution.util.FastList;
-import javolution.util.FastMap;
-
 import com.l2jserver.Config;
 import com.l2jserver.L2DatabaseFactory;
 import com.l2jserver.gameserver.GameTimeController;
@@ -467,7 +464,7 @@ public final class L2PcInstance extends L2Playable
 	
 	private int _bookmarkslot = 0; // The Teleport Bookmark Slot
 	
-	private final Map<Integer, TeleportBookmark> _tpbookmarks = new FastMap<>();
+	private final Map<Integer, TeleportBookmark> _tpbookmarks = new ConcurrentHashMap<>();
 	
 	private boolean _canFeed;
 	private boolean _isInSiege;
@@ -565,7 +562,7 @@ public final class L2PcInstance extends L2Playable
 	private int _questNpcObject = 0;
 	
 	/** The table containing all Quests began by the L2PcInstance */
-	private final Map<String, QuestState> _quests = new FastMap<>();
+	private final Map<String, QuestState> _quests = new ConcurrentHashMap<>();
 	
 	/** The list containing all shortCuts of this player. */
 	private final ShortCuts _shortCuts = new ShortCuts(this);
@@ -573,8 +570,8 @@ public final class L2PcInstance extends L2Playable
 	/** The list containing all macros of this player. */
 	private final MacroList _macros = new MacroList(this);
 	
-	private final List<L2PcInstance> _snoopListener = new FastList<>();
-	private final List<L2PcInstance> _snoopedPlayer = new FastList<>();
+	private final Set<L2PcInstance> _snoopListener = ConcurrentHashMap.newKeySet(1);
+	private final Set<L2PcInstance> _snoopedPlayer = ConcurrentHashMap.newKeySet(1);
 	
 	// hennas
 	private final L2Henna[] _henna = new L2Henna[3];
@@ -6640,8 +6637,7 @@ public final class L2PcInstance extends L2Playable
 		su.addAttribute(StatusUpdate.KARMA, getKarma());
 		sendPacket(su);
 		
-		Collection<L2PcInstance> plrs = getKnownList().getKnownPlayers().values();
-		for (L2PcInstance player : plrs)
+		for (L2PcInstance player : getKnownList().getKnownPlayers().values())
 		{
 			player.sendPacket(new RelationChanged(this, getRelation(player), isAutoAttackable(player)));
 			if (hasSummon())
@@ -10865,10 +10861,7 @@ public final class L2PcInstance extends L2Playable
 	
 	public void addSnooper(L2PcInstance pci)
 	{
-		if (!_snoopListener.contains(pci))
-		{
-			_snoopListener.add(pci);
-		}
+		_snoopListener.add(pci);
 	}
 	
 	public void removeSnooper(L2PcInstance pci)
@@ -10878,10 +10871,7 @@ public final class L2PcInstance extends L2Playable
 	
 	public void addSnooped(L2PcInstance pci)
 	{
-		if (!_snoopedPlayer.contains(pci))
-		{
-			_snoopedPlayer.add(pci);
-		}
+		_snoopedPlayer.add(pci);
 	}
 	
 	public void removeSnooped(L2PcInstance pci)

+ 2 - 6
L2J_Server/java/com/l2jserver/gameserver/model/actor/instance/L2RaceManagerInstance.java

@@ -18,10 +18,9 @@
  */
 package com.l2jserver.gameserver.model.actor.instance;
 
+import java.util.ArrayList;
 import java.util.List;
 
-import javolution.util.FastList;
-
 import com.l2jserver.gameserver.MonsterRace;
 import com.l2jserver.gameserver.ThreadPoolManager;
 import com.l2jserver.gameserver.enums.InstanceType;
@@ -47,7 +46,6 @@ public class L2RaceManagerInstance extends L2Npc
 	public static final int LANES = 8;
 	public static final int WINDOW_START = 0;
 	
-	// private static List<Race> _history;
 	private static List<L2RaceManagerInstance> _managers;
 	protected static int _raceNumber = 4;
 	
@@ -105,8 +103,7 @@ public class L2RaceManagerInstance extends L2Npc
 		{
 			_notInitialized = false;
 			
-			// _history = new FastList<>();
-			_managers = new FastList<>();
+			_managers = new ArrayList<>();
 			
 			ThreadPoolManager s = ThreadPoolManager.getInstance();
 			s.scheduleGeneralAtFixedRate(new Announcement(SystemMessageId.MONSRACE_TICKETS_AVAILABLE_FOR_S1_RACE), 0, 10 * MINUTE);
@@ -129,7 +126,6 @@ public class L2RaceManagerInstance extends L2Npc
 			s.scheduleGeneralAtFixedRate(new Announcement(SystemMessageId.MONSRACE_BEGINS_IN_S1_SECONDS), (8 * MINUTE) + (58 * SECOND), 10 * MINUTE);
 			s.scheduleGeneralAtFixedRate(new Announcement(SystemMessageId.MONSRACE_BEGINS_IN_S1_SECONDS), (8 * MINUTE) + (59 * SECOND), 10 * MINUTE);
 			s.scheduleGeneralAtFixedRate(new Announcement(SystemMessageId.MONSRACE_RACE_START), 9 * MINUTE, 10 * MINUTE);
-			// */
 		}
 		_managers.add(this);
 	}

+ 5 - 5
L2J_Server/java/com/l2jserver/gameserver/model/actor/instance/L2ServitorInstance.java

@@ -23,14 +23,14 @@ import java.sql.PreparedStatement;
 import java.sql.ResultSet;
 import java.util.Collections;
 import java.util.HashMap;
+import java.util.LinkedList;
 import java.util.List;
 import java.util.Map;
+import java.util.concurrent.CopyOnWriteArrayList;
 import java.util.concurrent.Future;
 import java.util.logging.Level;
 import java.util.logging.Logger;
 
-import javolution.util.FastList;
-
 import com.l2jserver.Config;
 import com.l2jserver.L2DatabaseFactory;
 import com.l2jserver.gameserver.ThreadPoolManager;
@@ -294,7 +294,7 @@ public class L2ServitorInstance extends L2Summon implements Runnable
 			
 			int buff_index = 0;
 			
-			final List<Integer> storedSkills = new FastList<>();
+			final List<Integer> storedSkills = new LinkedList<>();
 			
 			// Store all effect data along with calculated remaining
 			if (storeEffects)
@@ -353,7 +353,7 @@ public class L2ServitorInstance extends L2Summon implements Runnable
 						}
 						if (!SummonEffectsTable.getInstance().getServitorEffects(getOwner()).containsKey(getReferenceSkill()))
 						{
-							SummonEffectsTable.getInstance().getServitorEffects(getOwner()).put(getReferenceSkill(), new FastList<SummonEffect>());
+							SummonEffectsTable.getInstance().getServitorEffects(getOwner()).put(getReferenceSkill(), new CopyOnWriteArrayList<SummonEffect>());
 						}
 						
 						SummonEffectsTable.getInstance().getServitorEffects(getOwner()).get(getReferenceSkill()).add(SummonEffectsTable.getInstance().new SummonEffect(skill, info.getTime()));
@@ -409,7 +409,7 @@ public class L2ServitorInstance extends L2Summon implements Runnable
 								}
 								if (!SummonEffectsTable.getInstance().getServitorEffects(getOwner()).containsKey(getReferenceSkill()))
 								{
-									SummonEffectsTable.getInstance().getServitorEffects(getOwner()).put(getReferenceSkill(), new FastList<SummonEffect>());
+									SummonEffectsTable.getInstance().getServitorEffects(getOwner()).put(getReferenceSkill(), new CopyOnWriteArrayList<SummonEffect>());
 								}
 								
 								SummonEffectsTable.getInstance().getServitorEffects(getOwner()).get(getReferenceSkill()).add(SummonEffectsTable.getInstance().new SummonEffect(skill, effectCurTime));

+ 2 - 3
L2J_Server/java/com/l2jserver/gameserver/model/actor/instance/L2TamedBeastInstance.java

@@ -21,10 +21,9 @@ package com.l2jserver.gameserver.model.actor.instance;
 import static com.l2jserver.gameserver.ai.CtrlIntention.AI_INTENTION_IDLE;
 
 import java.util.List;
+import java.util.concurrent.CopyOnWriteArrayList;
 import java.util.concurrent.Future;
 
-import javolution.util.FastList;
-
 import com.l2jserver.gameserver.ThreadPoolManager;
 import com.l2jserver.gameserver.ai.CtrlIntention;
 import com.l2jserver.gameserver.data.xml.impl.NpcData;
@@ -205,7 +204,7 @@ public final class L2TamedBeastInstance extends L2FeedableBeastInstance
 	{
 		if (_beastSkills == null)
 		{
-			_beastSkills = new FastList<>();
+			_beastSkills = new CopyOnWriteArrayList<>();
 		}
 		_beastSkills.add(skill);
 	}

+ 3 - 5
L2J_Server/java/com/l2jserver/gameserver/model/actor/knownlist/CharKnownList.java

@@ -21,12 +21,11 @@ package com.l2jserver.gameserver.model.actor.knownlist;
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.Iterator;
+import java.util.LinkedList;
 import java.util.List;
 import java.util.Map;
 import java.util.concurrent.ConcurrentHashMap;
 
-import javolution.util.FastList;
-
 import com.l2jserver.gameserver.model.L2Object;
 import com.l2jserver.gameserver.model.actor.L2Character;
 import com.l2jserver.gameserver.model.actor.L2Summon;
@@ -206,10 +205,9 @@ public class CharKnownList extends ObjectKnownList
 		return (L2Character) super.getActiveObject();
 	}
 	
-	public Collection<L2Character> getKnownCharacters()
+	public List<L2Character> getKnownCharacters()
 	{
-		FastList<L2Character> result = new FastList<>();
-		
+		List<L2Character> result = new LinkedList<>();
 		final Collection<L2Object> objs = getKnownObjects().values();
 		for (L2Object obj : objs)
 		{

+ 12 - 17
L2J_Server/java/com/l2jserver/gameserver/model/entity/BlockCheckerEngine.java

@@ -18,14 +18,15 @@
  */
 package com.l2jserver.gameserver.model.entity;
 
+import java.util.List;
+import java.util.Map;
 import java.util.Map.Entry;
+import java.util.concurrent.ConcurrentHashMap;
+import java.util.concurrent.CopyOnWriteArrayList;
 import java.util.concurrent.ScheduledFuture;
 import java.util.logging.Level;
 import java.util.logging.Logger;
 
-import javolution.util.FastList;
-import javolution.util.FastMap;
-
 import com.l2jserver.Config;
 import com.l2jserver.gameserver.ThreadPoolManager;
 import com.l2jserver.gameserver.datatables.SkillData;
@@ -61,15 +62,15 @@ public final class BlockCheckerEngine
 	// The object which holds all basic members info
 	protected ArenaParticipantsHolder _holder;
 	// Maps to hold player of each team and his points
-	protected FastMap<L2PcInstance, Integer> _redTeamPoints = new FastMap<>();
-	protected FastMap<L2PcInstance, Integer> _blueTeamPoints = new FastMap<>();
+	protected Map<L2PcInstance, Integer> _redTeamPoints = new ConcurrentHashMap<>();
+	protected Map<L2PcInstance, Integer> _blueTeamPoints = new ConcurrentHashMap<>();
 	// The initial points of the event
 	protected int _redPoints = 15;
 	protected int _bluePoints = 15;
 	// Current used arena
 	protected int _arena = -1;
 	// All blocks
-	protected FastList<L2Spawn> _spawns = new FastList<>();
+	protected List<L2Spawn> _spawns = new CopyOnWriteArrayList<>();
 	// Sets if the red team won the event at the end of this (used for packets)
 	protected boolean _isRedWinner;
 	// Time when the event starts. Used on packet sending
@@ -118,7 +119,7 @@ public final class BlockCheckerEngine
 	// Common z coordinate
 	private static final int _zCoord = -2405;
 	// List of dropped items in event (for later deletion)
-	protected FastList<L2ItemInstance> _drops = new FastList<>();
+	protected List<L2ItemInstance> _drops = new CopyOnWriteArrayList<>();
 	// Default arena
 	private static final byte DEFAULT_ARENA = -1;
 	// Event is started
@@ -596,12 +597,6 @@ public final class BlockCheckerEngine
 			
 			for (L2ItemInstance item : _drops)
 			{
-				// npe
-				if (item == null)
-				{
-					continue;
-				}
-				
 				// a player has it, it will be deleted later
 				if (!item.isVisible() || (item.getOwnerId() != 0))
 				{
@@ -650,12 +645,12 @@ public final class BlockCheckerEngine
 		}
 		
 		/**
-		 * Reward the speicifed team as a winner team 1) Higher score - 8 extra 2) Higher score - 5 extra
+		 * Reward the specified team as a winner team 1) Higher score - 8 extra 2) Higher score - 5 extra
 		 * @param isRed
 		 */
 		private void rewardAsWinner(boolean isRed)
 		{
-			FastMap<L2PcInstance, Integer> tempPoints = isRed ? _redTeamPoints : _blueTeamPoints;
+			Map<L2PcInstance, Integer> tempPoints = isRed ? _redTeamPoints : _blueTeamPoints;
 			
 			// Main give
 			for (Entry<L2PcInstance, Integer> points : tempPoints.entrySet())
@@ -712,7 +707,7 @@ public final class BlockCheckerEngine
 		 */
 		private void rewardAsLooser(boolean isRed)
 		{
-			FastMap<L2PcInstance, Integer> tempPoints = isRed ? _redTeamPoints : _blueTeamPoints;
+			Map<L2PcInstance, Integer> tempPoints = isRed ? _redTeamPoints : _blueTeamPoints;
 			
 			for (Entry<L2PcInstance, Integer> entry : tempPoints.entrySet())
 			{
@@ -725,7 +720,7 @@ public final class BlockCheckerEngine
 		}
 		
 		/**
-		 * Telport players back, give status back and send final packet
+		 * Teleport players back, give status back and send final packet
 		 */
 		private void setPlayersBack()
 		{

+ 3 - 8
L2J_Server/java/com/l2jserver/gameserver/model/entity/Castle.java

@@ -25,11 +25,10 @@ import java.util.ArrayList;
 import java.util.Calendar;
 import java.util.List;
 import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
 import java.util.logging.Level;
 import java.util.logging.Logger;
 
-import javolution.util.FastMap;
-
 import com.l2jserver.Config;
 import com.l2jserver.L2DatabaseFactory;
 import com.l2jserver.gameserver.ThreadPoolManager;
@@ -240,7 +239,7 @@ public final class Castle extends AbstractResidence
 		/*
 		 * if (getResidenceId() == 7 || castleId == 9) // Goddard and Schuttgart _nbArtifact = 2;
 		 */
-		_function = new FastMap<>();
+		_function = new ConcurrentHashMap<>();
 		initResidenceZone();
 		if (getOwnerId() != 0)
 		{
@@ -256,11 +255,7 @@ public final class Castle extends AbstractResidence
 	 */
 	public CastleFunction getFunction(int type)
 	{
-		if (_function.containsKey(type))
-		{
-			return _function.get(type);
-		}
-		return null;
+		return _function.get(type);
 	}
 	
 	public synchronized void engrave(L2Clan clan, L2Object target)

+ 3 - 8
L2J_Server/java/com/l2jserver/gameserver/model/entity/ClanHall.java

@@ -23,11 +23,10 @@ import java.sql.PreparedStatement;
 import java.sql.ResultSet;
 import java.util.ArrayList;
 import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
 import java.util.logging.Level;
 import java.util.logging.Logger;
 
-import javolution.util.FastMap;
-
 import com.l2jserver.L2DatabaseFactory;
 import com.l2jserver.gameserver.ThreadPoolManager;
 import com.l2jserver.gameserver.data.sql.impl.ClanTable;
@@ -213,7 +212,7 @@ public abstract class ClanHall
 		_ownerId = set.getInt("ownerId");
 		_desc = set.getString("desc");
 		_location = set.getString("location");
-		_functions = new FastMap<>();
+		_functions = new ConcurrentHashMap<>();
 		
 		if (_ownerId > 0)
 		{
@@ -307,11 +306,7 @@ public abstract class ClanHall
 	 */
 	public ClanHallFunction getFunction(int type)
 	{
-		if (_functions.get(type) != null)
-		{
-			return _functions.get(type);
-		}
-		return null;
+		return _functions.get(type);
 	}
 	
 	/**

+ 1 - 3
L2J_Server/java/com/l2jserver/gameserver/model/entity/Duel.java

@@ -24,8 +24,6 @@ import java.util.concurrent.CopyOnWriteArrayList;
 import java.util.logging.Level;
 import java.util.logging.Logger;
 
-import javolution.util.FastList;
-
 import com.l2jserver.gameserver.ThreadPoolManager;
 import com.l2jserver.gameserver.ai.CtrlIntention;
 import com.l2jserver.gameserver.enums.DuelResult;
@@ -161,7 +159,7 @@ public class Duel
 		{
 			if (_debuffs == null)
 			{
-				_debuffs = new FastList<>();
+				_debuffs = new CopyOnWriteArrayList<>();
 			}
 			
 			_debuffs.add(debuff);

+ 8 - 13
L2J_Server/java/com/l2jserver/gameserver/model/entity/Fort.java

@@ -28,14 +28,13 @@ import java.util.HashSet;
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
+import java.util.concurrent.ConcurrentHashMap;
+import java.util.concurrent.CopyOnWriteArrayList;
 import java.util.concurrent.ScheduledFuture;
 import java.util.concurrent.TimeUnit;
 import java.util.logging.Level;
 import java.util.logging.Logger;
 
-import javolution.util.FastList;
-import javolution.util.FastMap;
-
 import com.l2jserver.Config;
 import com.l2jserver.L2DatabaseFactory;
 import com.l2jserver.gameserver.FortUpdater;
@@ -79,14 +78,14 @@ public final class Fort extends AbstractResidence
 	private int _state = 0;
 	private int _castleId = 0;
 	private int _supplyLvL = 0;
-	private final FastMap<Integer, FortFunction> _function;
+	private final Map<Integer, FortFunction> _function;
 	private final ScheduledFuture<?>[] _FortUpdater = new ScheduledFuture<?>[2];
 	
 	// Spawn Data
 	private boolean _isSuspiciousMerchantSpawned = false;
-	private final FastList<L2Spawn> _siegeNpcs = new FastList<>();
-	private final FastList<L2Spawn> _npcCommanders = new FastList<>();
-	private final FastList<L2Spawn> _specialEnvoys = new FastList<>();
+	private final List<L2Spawn> _siegeNpcs = new CopyOnWriteArrayList<>();
+	private final List<L2Spawn> _npcCommanders = new CopyOnWriteArrayList<>();
+	private final List<L2Spawn> _specialEnvoys = new CopyOnWriteArrayList<>();
 	
 	private final Map<Integer, Integer> _envoyCastles = new HashMap<>(2);
 	private final Set<Integer> _availableCastles = new HashSet<>(1);
@@ -245,7 +244,7 @@ public final class Fort extends AbstractResidence
 		super(fortId);
 		load();
 		loadFlagPoles();
-		_function = new FastMap<>();
+		_function = new ConcurrentHashMap<>();
 		if (getOwnerClan() != null)
 		{
 			setVisibleFlag(true);
@@ -271,11 +270,7 @@ public final class Fort extends AbstractResidence
 	 */
 	public FortFunction getFunction(int type)
 	{
-		if (_function.get(type) != null)
-		{
-			return _function.get(type);
-		}
-		return null;
+		return _function.get(type);
 	}
 	
 	public void endOfSiege(L2Clan clan)

+ 4 - 6
L2J_Server/java/com/l2jserver/gameserver/model/entity/Instance.java

@@ -27,15 +27,13 @@ import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 import java.util.concurrent.ConcurrentHashMap;
+import java.util.concurrent.CopyOnWriteArrayList;
 import java.util.concurrent.ScheduledFuture;
 import java.util.logging.Level;
 import java.util.logging.Logger;
 
 import javax.xml.parsers.DocumentBuilderFactory;
 
-import javolution.util.FastList;
-import javolution.util.FastMap;
-
 import org.w3c.dom.Document;
 import org.w3c.dom.NamedNodeMap;
 import org.w3c.dom.Node;
@@ -79,8 +77,8 @@ public final class Instance
 	private int _ejectTime = Config.EJECT_DEAD_PLAYER_TIME;
 	/** Allow random walk for NPCs, global parameter. */
 	private boolean _allowRandomWalk = true;
-	private final List<Integer> _players = new FastList<Integer>().shared();
-	private final List<L2Npc> _npcs = new FastList<L2Npc>().shared();
+	private final List<Integer> _players = new CopyOnWriteArrayList<>();
+	private final List<L2Npc> _npcs = new CopyOnWriteArrayList<>();
 	private final Map<Integer, L2DoorInstance> _doors = new ConcurrentHashMap<>();
 	private final Map<String, List<L2Spawn>> _manualSpawn = new HashMap<>();
 	private Location _spawnLoc = null;
@@ -101,7 +99,7 @@ public final class Instance
 	private final List<Integer> _exceptionList = new ArrayList<>();
 	
 	protected ScheduledFuture<?> _checkTimeUpTask = null;
-	protected final Map<Integer, ScheduledFuture<?>> _ejectDeadTasks = new FastMap<>();
+	protected final Map<Integer, ScheduledFuture<?>> _ejectDeadTasks = new ConcurrentHashMap<>();
 	
 	public Instance(int id)
 	{

+ 7 - 8
L2J_Server/java/com/l2jserver/gameserver/model/entity/L2Event.java

@@ -28,12 +28,11 @@ import java.util.LinkedList;
 import java.util.List;
 import java.util.Map;
 import java.util.Map.Entry;
+import java.util.concurrent.ConcurrentHashMap;
+import java.util.concurrent.CopyOnWriteArrayList;
 import java.util.logging.Level;
 import java.util.logging.Logger;
 
-import javolution.util.FastList;
-import javolution.util.FastMap;
-
 import com.l2jserver.Config;
 import com.l2jserver.gameserver.cache.HtmCache;
 import com.l2jserver.gameserver.data.xml.impl.NpcData;
@@ -62,11 +61,11 @@ public class L2Event
 	public static String _eventCreator = "";
 	public static String _eventInfo = "";
 	public static int _teamsNumber = 0;
-	public static final Map<Integer, String> _teamNames = new FastMap<>();
-	public static final List<L2PcInstance> _registeredPlayers = new FastList<>();
-	public static final Map<Integer, List<L2PcInstance>> _teams = new FastMap<>();
+	public static final Map<Integer, String> _teamNames = new ConcurrentHashMap<>();
+	public static final List<L2PcInstance> _registeredPlayers = new CopyOnWriteArrayList<>();
+	public static final Map<Integer, List<L2PcInstance>> _teams = new ConcurrentHashMap<>();
 	public static int _npcId = 0;
-	private static final Map<L2PcInstance, PlayerEventHolder> _connectionLossData = new FastMap<>();
+	private static final Map<L2PcInstance, PlayerEventHolder> _connectionLossData = new ConcurrentHashMap<>();
 	
 	public enum EventState
 	{
@@ -440,7 +439,7 @@ public class L2Event
 			// Insert empty lists at _teams.
 			for (int i = 0; i < _teamsNumber; i++)
 			{
-				_teams.put(i + 1, new FastList<L2PcInstance>());
+				_teams.put(i + 1, new CopyOnWriteArrayList<L2PcInstance>());
 			}
 			
 			int i = 0;