Kaynağa Gözat

BETA: Changing listeners npcId reference `List` to a `Set` to prevent from having duplicates when one NPC is registered into multiple listeners.

Rumen Nikiforov 10 yıl önce
ebeveyn
işleme
4924bd7a77

+ 8 - 6
L2J_Server_BETA/java/com/l2jserver/gameserver/model/events/AbstractScript.java

@@ -26,6 +26,7 @@ import java.util.Collection;
 import java.util.Collections;
 import java.util.List;
 import java.util.Map;
+import java.util.Set;
 import java.util.concurrent.ConcurrentHashMap;
 import java.util.function.Consumer;
 import java.util.function.Function;
@@ -33,6 +34,7 @@ import java.util.logging.Level;
 import java.util.logging.Logger;
 
 import javolution.util.FastList;
+import javolution.util.FastSet;
 
 import com.l2jserver.Config;
 import com.l2jserver.gameserver.GameTimeController;
@@ -133,7 +135,7 @@ import com.l2jserver.util.Rnd;
 public abstract class AbstractScript extends ManagedScript
 {
 	protected static final Logger _log = Logger.getLogger(AbstractScript.class.getName());
-	private final Map<ListenerRegisterType, List<Integer>> _registeredIds = new ConcurrentHashMap<>();
+	private final Map<ListenerRegisterType, Set<Integer>> _registeredIds = new ConcurrentHashMap<>();
 	private final List<AbstractEventListener> _listeners = new FastList<AbstractEventListener>().shared();
 	
 	public AbstractScript()
@@ -275,7 +277,7 @@ public abstract class AbstractScript extends ManagedScript
 				{
 					if (!_registeredIds.containsKey(type))
 					{
-						_registeredIds.put(type, new FastList<Integer>().shared());
+						_registeredIds.put(type, new FastSet<Integer>().shared());
 					}
 					_registeredIds.get(type).addAll(ids);
 				}
@@ -1296,7 +1298,7 @@ public abstract class AbstractScript extends ManagedScript
 				
 				if (!_registeredIds.containsKey(registerType))
 				{
-					_registeredIds.put(registerType, new FastList<Integer>().shared());
+					_registeredIds.put(registerType, new FastSet<Integer>().shared());
 				}
 				_registeredIds.get(registerType).add(id);
 			}
@@ -1392,7 +1394,7 @@ public abstract class AbstractScript extends ManagedScript
 			}
 			if (!_registeredIds.containsKey(registerType))
 			{
-				_registeredIds.put(registerType, new FastList<Integer>().shared());
+				_registeredIds.put(registerType, new FastSet<Integer>().shared());
 			}
 			_registeredIds.get(registerType).addAll(ids);
 		}
@@ -1417,9 +1419,9 @@ public abstract class AbstractScript extends ManagedScript
 		return listeners;
 	}
 	
-	public List<Integer> getRegisteredIds(ListenerRegisterType type)
+	public Set<Integer> getRegisteredIds(ListenerRegisterType type)
 	{
-		return _registeredIds.containsKey(type) ? _registeredIds.get(type) : Collections.emptyList();
+		return _registeredIds.containsKey(type) ? _registeredIds.get(type) : Collections.emptySet();
 	}
 	
 	public List<AbstractEventListener> getListeners()