فهرست منبع

BETA: Handlers rework:
* Using generic interface to standardize current and future handlers.
* Added removeHandler method.
* Cleanup of all the package.

* Misc:
* Little cleanup of QuestManager.
* Added the new Say2 npc types (In h5 there is a filter for them)
* TODO: Use them.

Rumen Nikiforov 12 سال پیش
والد
کامیت
f0c3a38690
22فایلهای تغییر یافته به همراه343 افزوده شده و 275 حذف شده
  1. 17 4
      L2J_Server_BETA/java/com/l2jserver/gameserver/handler/ActionHandler.java
  2. 14 8
      L2J_Server_BETA/java/com/l2jserver/gameserver/handler/ActionShiftHandler.java
  3. 27 28
      L2J_Server_BETA/java/com/l2jserver/gameserver/handler/AdminCommandHandler.java
  4. 27 32
      L2J_Server_BETA/java/com/l2jserver/gameserver/handler/BypassHandler.java
  5. 27 22
      L2J_Server_BETA/java/com/l2jserver/gameserver/handler/ChatHandler.java
  6. 19 13
      L2J_Server_BETA/java/com/l2jserver/gameserver/handler/EffectHandler.java
  7. 0 5
      L2J_Server_BETA/java/com/l2jserver/gameserver/handler/IAdminCommandHandler.java
  8. 2 3
      L2J_Server_BETA/java/com/l2jserver/gameserver/handler/IChatHandler.java
  9. 31 0
      L2J_Server_BETA/java/com/l2jserver/gameserver/handler/IHandler.java
  10. 1 2
      L2J_Server_BETA/java/com/l2jserver/gameserver/handler/ISkillHandler.java
  11. 1 1
      L2J_Server_BETA/java/com/l2jserver/gameserver/handler/ITelnetHandler.java
  12. 1 6
      L2J_Server_BETA/java/com/l2jserver/gameserver/handler/IUserCommandHandler.java
  13. 2 7
      L2J_Server_BETA/java/com/l2jserver/gameserver/handler/IVoicedCommandHandler.java
  14. 42 30
      L2J_Server_BETA/java/com/l2jserver/gameserver/handler/ItemHandler.java
  15. 24 16
      L2J_Server_BETA/java/com/l2jserver/gameserver/handler/SkillHandler.java
  16. 17 9
      L2J_Server_BETA/java/com/l2jserver/gameserver/handler/TargetHandler.java
  17. 26 15
      L2J_Server_BETA/java/com/l2jserver/gameserver/handler/TelnetHandler.java
  18. 26 27
      L2J_Server_BETA/java/com/l2jserver/gameserver/handler/UserCommandHandler.java
  19. 27 28
      L2J_Server_BETA/java/com/l2jserver/gameserver/handler/VoicedCommandHandler.java
  20. 9 18
      L2J_Server_BETA/java/com/l2jserver/gameserver/instancemanager/QuestManager.java
  21. 1 1
      L2J_Server_BETA/java/com/l2jserver/gameserver/model/actor/L2Character.java
  22. 2 0
      L2J_Server_BETA/java/com/l2jserver/gameserver/network/clientpackets/Say2.java

+ 17 - 4
L2J_Server_BETA/java/com/l2jserver/gameserver/handler/ActionHandler.java

@@ -14,13 +14,15 @@
  */
 package com.l2jserver.gameserver.handler;
 
+import java.util.HashMap;
 import java.util.Map;
 
-import javolution.util.FastMap;
-
 import com.l2jserver.gameserver.model.L2Object.InstanceType;
 
-public class ActionHandler
+/**
+ * @author UnAfraid
+ */
+public class ActionHandler implements IHandler<IActionHandler, InstanceType>
 {
 	private final Map<InstanceType, IActionHandler> _actions;
 	
@@ -31,14 +33,22 @@ public class ActionHandler
 	
 	protected ActionHandler()
 	{
-		_actions = new FastMap<>();
+		_actions = new HashMap<>();
 	}
 	
+	@Override
 	public void registerHandler(IActionHandler handler)
 	{
 		_actions.put(handler.getInstanceType(), handler);
 	}
 	
+	@Override
+	public synchronized void removeHandler(IActionHandler handler)
+	{
+		_actions.remove(handler.getInstanceType());
+	}
+	
+	@Override
 	public IActionHandler getHandler(InstanceType iType)
 	{
 		IActionHandler result = null;
@@ -46,11 +56,14 @@ public class ActionHandler
 		{
 			result = _actions.get(t);
 			if (result != null)
+			{
 				break;
+			}
 		}
 		return result;
 	}
 	
+	@Override
 	public int size()
 	{
 		return _actions.size();

+ 14 - 8
L2J_Server_BETA/java/com/l2jserver/gameserver/handler/ActionShiftHandler.java

@@ -14,10 +14,9 @@
  */
 package com.l2jserver.gameserver.handler;
 
+import java.util.HashMap;
 import java.util.Map;
 
-import javolution.util.FastMap;
-
 import com.l2jserver.gameserver.model.L2Object.InstanceType;
 
 /**
@@ -27,14 +26,9 @@ public class ActionShiftHandler
 {
 	private final Map<InstanceType, IActionHandler> _actionsShift;
 	
-	public static ActionShiftHandler getInstance()
-	{
-		return SingletonHolder._instance;
-	}
-	
 	protected ActionShiftHandler()
 	{
-		_actionsShift = new FastMap<>();
+		_actionsShift = new HashMap<>();
 	}
 	
 	public void registerHandler(IActionHandler handler)
@@ -42,6 +36,11 @@ public class ActionShiftHandler
 		_actionsShift.put(handler.getInstanceType(), handler);
 	}
 	
+	public synchronized void removeHandler(IActionHandler handler)
+	{
+		_actionsShift.remove(handler.getInstanceType());
+	}
+	
 	public IActionHandler getHandler(InstanceType iType)
 	{
 		IActionHandler result = null;
@@ -49,7 +48,9 @@ public class ActionShiftHandler
 		{
 			result = _actionsShift.get(t);
 			if (result != null)
+			{
 				break;
+			}
 		}
 		return result;
 	}
@@ -59,6 +60,11 @@ public class ActionShiftHandler
 		return _actionsShift.size();
 	}
 	
+	public static ActionShiftHandler getInstance()
+	{
+		return SingletonHolder._instance;
+	}
+	
 	private static class SingletonHolder
 	{
 		protected static final ActionShiftHandler _instance = new ActionShiftHandler();

+ 27 - 28
L2J_Server_BETA/java/com/l2jserver/gameserver/handler/AdminCommandHandler.java

@@ -14,64 +14,63 @@
  */
 package com.l2jserver.gameserver.handler;
 
-import gnu.trove.map.hash.TIntObjectHashMap;
-
-import java.util.logging.Logger;
-
-import com.l2jserver.Config;
+import java.util.HashMap;
+import java.util.Map;
 
 /**
- * This class ...
- *
- * @version $Revision: 1.1.4.5 $ $Date: 2005/03/27 15:30:09 $
+ * @author UnAfraid
  */
-public class AdminCommandHandler
+public class AdminCommandHandler implements IHandler<IAdminCommandHandler, String>
 {
-	private static Logger _log = Logger.getLogger(AdminCommandHandler.class.getName());
-	
-	private final TIntObjectHashMap<IAdminCommandHandler> _datatable;
+	private final Map<String, IAdminCommandHandler> _datatable;
 	
-	public static AdminCommandHandler getInstance()
+	protected AdminCommandHandler()
 	{
-		return SingletonHolder._instance;
+		_datatable = new HashMap<>();
 	}
 	
-	protected AdminCommandHandler()
+	@Override
+	public void registerHandler(IAdminCommandHandler handler)
 	{
-		_datatable = new TIntObjectHashMap<>();
+		String[] ids = handler.getAdminCommandList();
+		for (String id : ids)
+		{
+			_datatable.put(id, handler);
+		}
 	}
 	
-	public void registerHandler(IAdminCommandHandler handler)
+	@Override
+	public synchronized void removeHandler(IAdminCommandHandler handler)
 	{
 		String[] ids = handler.getAdminCommandList();
-		for (int i = 0; i < ids.length; i++)
+		for (String id : ids)
 		{
-			if (Config.DEBUG)
-				_log.fine("Adding handler for command " + ids[i]);
-			_datatable.put(ids[i].hashCode(), handler);
+			_datatable.remove(id);
 		}
 	}
 	
+	@Override
 	public IAdminCommandHandler getHandler(String adminCommand)
 	{
 		String command = adminCommand;
-		if (adminCommand.indexOf(" ") != -1)
+		if (adminCommand.contains(" "))
 		{
 			command = adminCommand.substring(0, adminCommand.indexOf(" "));
 		}
-		if (Config.DEBUG)
-			_log.fine("getting handler for command: " + command + " -> " + (_datatable.get(command.hashCode()) != null));
-		return _datatable.get(command.hashCode());
+		return _datatable.get(command);
 	}
 	
-	/**
-	 * @return
-	 */
+	@Override
 	public int size()
 	{
 		return _datatable.size();
 	}
 	
+	public static AdminCommandHandler getInstance()
+	{
+		return SingletonHolder._instance;
+	}
+	
 	private static class SingletonHolder
 	{
 		protected static final AdminCommandHandler _instance = new AdminCommandHandler();

+ 27 - 32
L2J_Server_BETA/java/com/l2jserver/gameserver/handler/BypassHandler.java

@@ -14,65 +14,60 @@
  */
 package com.l2jserver.gameserver.handler;
 
-import gnu.trove.map.hash.TIntObjectHashMap;
-
-import java.util.logging.Level;
-import java.util.logging.Logger;
-
-import com.l2jserver.Config;
+import java.util.HashMap;
+import java.util.Map;
 
 /**
- * 
- * @author nBd
- *
+ * @author nBd, UnAfraid
  */
-public class BypassHandler
+public class BypassHandler implements IHandler<IBypassHandler, String>
 {
-	private static Logger _log = Logger.getLogger(BypassHandler.class.getName());
+	private final Map<String, IBypassHandler> _datatable;
 	
-	private final TIntObjectHashMap<IBypassHandler> _datatable;
-	
-	public static BypassHandler getInstance()
+	protected BypassHandler()
 	{
-		return SingletonHolder._instance;
+		_datatable = new HashMap<>();
 	}
 	
-	protected BypassHandler()
+	@Override
+	public void registerHandler(IBypassHandler handler)
 	{
-		_datatable = new TIntObjectHashMap<>();
+		for (String element : handler.getBypassList())
+		{
+			_datatable.put(element.toLowerCase(), handler);
+		}
 	}
 	
-	public void registerHandler(IBypassHandler handler)
+	@Override
+	public synchronized void removeHandler(IBypassHandler handler)
 	{
 		for (String element : handler.getBypassList())
 		{
-			if (Config.DEBUG)
-				_log.log(Level.FINE, "Adding handler for command " + element);
-			
-			_datatable.put(element.toLowerCase().hashCode(), handler);
+			_datatable.remove(element.toLowerCase());
 		}
 	}
 	
-	public IBypassHandler getHandler(String BypassCommand)
+	@Override
+	public IBypassHandler getHandler(String command)
 	{
-		String command = BypassCommand;
-		
-		if (BypassCommand.indexOf(" ") != -1)
+		if (command.contains(" "))
 		{
-			command = BypassCommand.substring(0, BypassCommand.indexOf(" "));
+			command = command.substring(0, command.indexOf(" "));
 		}
-		
-		if (Config.DEBUG)
-			_log.log(Level.FINE, "getting handler for command: " + command + " -> " + (_datatable.get(command.hashCode()) != null));
-		
-		return _datatable.get(command.toLowerCase().hashCode());
+		return _datatable.get(command.toLowerCase());
 	}
 	
+	@Override
 	public int size()
 	{
 		return _datatable.size();
 	}
 	
+	public static BypassHandler getInstance()
+	{
+		return SingletonHolder._instance;
+	}
+	
 	private static class SingletonHolder
 	{
 		protected static final BypassHandler _instance = new BypassHandler();

+ 27 - 22
L2J_Server_BETA/java/com/l2jserver/gameserver/handler/ChatHandler.java

@@ -14,48 +14,46 @@
  */
 package com.l2jserver.gameserver.handler;
 
-import gnu.trove.map.hash.TIntObjectHashMap;
-
-import java.util.logging.Logger;
-
-import com.l2jserver.Config;
+import java.util.HashMap;
+import java.util.Map;
 
 /**
  * This class handles all chat handlers
- *
- * @author  durgus
+ * @author durgus, UnAfraid
  */
-public class ChatHandler
+public class ChatHandler implements IHandler<IChatHandler, Integer>
 {
-	private static Logger _log = Logger.getLogger(ChatHandler.class.getName());
-	
-	private final TIntObjectHashMap<IChatHandler> _datatable;
-	
-	public static ChatHandler getInstance()
-	{
-		return SingletonHolder._instance;
-	}
+	private final Map<Integer, IChatHandler> _datatable;
 	
 	/**
 	 * Singleton constructor
 	 */
 	protected ChatHandler()
 	{
-		_datatable = new TIntObjectHashMap<>();
+		_datatable = new HashMap<>();
 	}
 	
 	/**
 	 * Register a new chat handler
 	 * @param handler
 	 */
+	@Override
 	public void registerHandler(IChatHandler handler)
 	{
 		int[] ids = handler.getChatTypeList();
-		for (int i = 0; i < ids.length; i++)
+		for (int id : ids)
 		{
-			if (Config.DEBUG)
-				_log.fine("Adding handler for chat type " + ids[i]);
-			_datatable.put(ids[i], handler);
+			_datatable.put(id, handler);
+		}
+	}
+	
+	@Override
+	public synchronized void removeHandler(IChatHandler handler)
+	{
+		int[] ids = handler.getChatTypeList();
+		for (int id : ids)
+		{
+			_datatable.remove(id);
 		}
 	}
 	
@@ -64,7 +62,8 @@ public class ChatHandler
 	 * @param chatType
 	 * @return
 	 */
-	public IChatHandler getHandler(int chatType)
+	@Override
+	public IChatHandler getHandler(Integer chatType)
 	{
 		return _datatable.get(chatType);
 	}
@@ -73,11 +72,17 @@ public class ChatHandler
 	 * Returns the size
 	 * @return
 	 */
+	@Override
 	public int size()
 	{
 		return _datatable.size();
 	}
 	
+	public static ChatHandler getInstance()
+	{
+		return SingletonHolder._instance;
+	}
+	
 	private static class SingletonHolder
 	{
 		protected static final ChatHandler _instance = new ChatHandler();

+ 19 - 13
L2J_Server_BETA/java/com/l2jserver/gameserver/handler/EffectHandler.java

@@ -15,37 +15,43 @@
 package com.l2jserver.gameserver.handler;
 
 import java.io.File;
-import java.util.logging.Level;
-import java.util.logging.Logger;
-
-import javolution.util.FastMap;
+import java.util.HashMap;
+import java.util.Map;
 
 import com.l2jserver.gameserver.model.effects.L2Effect;
 import com.l2jserver.gameserver.scripting.L2ScriptEngineManager;
 
 /**
- * @author BiggBoss
+ * @author BiggBoss, UnAfraid
  */
-public final class EffectHandler
+public final class EffectHandler implements IHandler<Class<? extends L2Effect>, String>
 {
-	private static final Logger _log = Logger.getLogger(EffectHandler.class.getName());
-	private final FastMap<Integer, Class<? extends L2Effect>> _handlers;
+	private final Map<String, Class<? extends L2Effect>> _handlers;
 	
 	protected EffectHandler()
 	{
-		_handlers = new FastMap<>();
+		_handlers = new HashMap<>();
+	}
+	
+	@Override
+	public void registerHandler(Class<? extends L2Effect> handler)
+	{
+		_handlers.put(handler.getSimpleName(), handler);
 	}
 	
-	public void registerHandler(String name, Class<? extends L2Effect> func)
+	@Override
+	public synchronized void removeHandler(Class<? extends L2Effect> handler)
 	{
-		_handlers.put(name.hashCode(), func);
+		_handlers.remove(handler.getSimpleName());
 	}
 	
+	@Override
 	public final Class<? extends L2Effect> getHandler(String name)
 	{
-		return _handlers.get(name.hashCode());
+		return _handlers.get(name);
 	}
 	
+	@Override
 	public int size()
 	{
 		return _handlers.size();
@@ -60,7 +66,7 @@ public final class EffectHandler
 		}
 		catch (Exception e)
 		{
-			_log.log(Level.WARNING, "Problems while running EffectMansterHandler", e);
+			throw new Error("Problems while running EffectMansterHandler", e);
 		}
 	}
 	

+ 0 - 5
L2J_Server_BETA/java/com/l2jserver/gameserver/handler/IAdminCommandHandler.java

@@ -16,11 +16,6 @@ package com.l2jserver.gameserver.handler;
 
 import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
 
-/**
- * This class ...
- *
- * @version $Revision: 1.1.4.2 $ $Date: 2005/03/27 15:30:09 $
- */
 public interface IAdminCommandHandler
 {
 	/**

+ 2 - 3
L2J_Server_BETA/java/com/l2jserver/gameserver/handler/IChatHandler.java

@@ -18,8 +18,7 @@ import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
 
 /**
  * Interface for chat handlers
- *
- * @author  durgus
+ * @author durgus
  */
 public interface IChatHandler
 {
@@ -28,7 +27,7 @@ public interface IChatHandler
 	 * @param type
 	 * @param activeChar
 	 * @param target
-	 * @param text 
+	 * @param text
 	 */
 	public void handleChat(int type, L2PcInstance activeChar, String target, String text);
 	

+ 31 - 0
L2J_Server_BETA/java/com/l2jserver/gameserver/handler/IHandler.java

@@ -0,0 +1,31 @@
+/*
+ * This program 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.
+ * 
+ * This program 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.handler;
+
+/**
+ * @author UnAfraid
+ * @param <K>
+ * @param <V>
+ */
+public interface IHandler<K, V>
+{
+	public void registerHandler(K handler);
+	
+	public void removeHandler(K handler);
+	
+	public K getHandler(V val);
+	
+	public int size();
+}

+ 1 - 2
L2J_Server_BETA/java/com/l2jserver/gameserver/handler/ISkillHandler.java

@@ -23,12 +23,11 @@ import com.l2jserver.gameserver.model.skills.L2SkillType;
 
 /**
  * an IItemHandler implementation has to be stateless
- *
- * @version $Revision: 1.2.2.2.2.3 $ $Date: 2005/04/03 15:55:06 $
  */
 public interface ISkillHandler
 {
 	public static Logger _log = Logger.getLogger(ISkillHandler.class.getName());
+	
 	/**
 	 * this is the worker method that is called when using an item.
 	 * @param activeChar

+ 1 - 1
L2J_Server_BETA/java/com/l2jserver/gameserver/handler/ITelnetHandler.java

@@ -28,7 +28,7 @@ public interface ITelnetHandler
 	/**
 	 * this is the worker method that is called when someone uses an bypass command
 	 * @param command
-	 * @param _print 
+	 * @param _print
 	 * @param _cSocket
 	 * @param __uptime
 	 * @return success

+ 1 - 6
L2J_Server_BETA/java/com/l2jserver/gameserver/handler/IUserCommandHandler.java

@@ -18,15 +18,10 @@ import java.util.logging.Logger;
 
 import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
 
-
-/**
- * This class ...
- *
- * @version $Revision: 1.1.2.1.2.2 $ $Date: 2005/03/27 15:30:10 $
- */
 public interface IUserCommandHandler
 {
 	public static Logger _log = Logger.getLogger(IUserCommandHandler.class.getName());
+	
 	/**
 	 * this is the worker method that is called when someone uses an admin command.
 	 * @param id

+ 2 - 7
L2J_Server_BETA/java/com/l2jserver/gameserver/handler/IVoicedCommandHandler.java

@@ -18,20 +18,15 @@ import java.util.logging.Logger;
 
 import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
 
-
-/**
- * This class ...
- *
- * @version $Revision: 1.1.4.2 $ $Date: 2005/03/27 15:30:09 $
- */
 public interface IVoicedCommandHandler
 {
 	public static Logger _log = Logger.getLogger(IVoicedCommandHandler.class.getName());
+	
 	/**
 	 * this is the worker method that is called when someone uses an admin command.
 	 * @param activeChar
 	 * @param command
-	 * @param params 
+	 * @param params
 	 * @return command success
 	 */
 	public boolean useVoicedCommand(String command, L2PcInstance activeChar, String params);

+ 42 - 30
L2J_Server_BETA/java/com/l2jserver/gameserver/handler/ItemHandler.java

@@ -14,55 +14,44 @@
  */
 package com.l2jserver.gameserver.handler;
 
-import gnu.trove.map.hash.TIntObjectHashMap;
+import java.util.HashMap;
+import java.util.Map;
 
 import com.l2jserver.gameserver.model.items.L2EtcItem;
 
 /**
  * This class manages handlers of items
- *
- * @version $Revision: 1.1.4.3 $ $Date: 2005/03/27 15:30:09 $
+ * @author UnAfraid
  */
-public class ItemHandler
+public class ItemHandler implements IHandler<IItemHandler, L2EtcItem>
 {
-	private final TIntObjectHashMap<IItemHandler> _datatable;
-	
-	/**
-	 * Create ItemHandler if doesn't exist and returns ItemHandler
-	 * @return ItemHandler
-	 */
-	public static ItemHandler getInstance()
-	{
-		return SingletonHolder._instance;
-	}
-	
-	/**
-	 * Returns the number of elements contained in datatable
-	 * @return int : Size of the datatable
-	 */
-	public int size()
-	{
-		return _datatable.size();
-	}
+	private final Map<String, IItemHandler> _datatable;
 	
 	/**
 	 * Constructor of ItemHandler
 	 */
 	protected ItemHandler()
 	{
-		_datatable = new TIntObjectHashMap<>();
+		_datatable = new HashMap<>();
 	}
 	
 	/**
-	 * Adds handler of item type in <I>datatable</I>.<BR><BR>
+	 * Adds handler of item type in <I>datatable</I>.<BR>
+	 * <BR>
 	 * <B><I>Concept :</I></U><BR>
-	 * This handler is put in <I>datatable</I> Map &lt;String ; IItemHandler &gt; for each ID corresponding to an item type
-	 * (existing in classes of package itemhandlers) sets as key of the Map.
+	 * This handler is put in <I>datatable</I> Map &lt;String ; IItemHandler &gt; for each ID corresponding to an item type (existing in classes of package itemhandlers) sets as key of the Map.
 	 * @param handler (IItemHandler)
 	 */
+	@Override
 	public void registerHandler(IItemHandler handler)
 	{
-		_datatable.put(handler.getClass().getSimpleName().intern().hashCode(), handler);
+		_datatable.put(handler.getClass().getSimpleName(), handler);
+	}
+	
+	@Override
+	public synchronized void removeHandler(IItemHandler handler)
+	{
+		_datatable.remove(handler.getClass().getSimpleName());
 	}
 	
 	/**
@@ -70,13 +59,36 @@ public class ItemHandler
 	 * @param item
 	 * @return IItemHandler
 	 */
+	@Override
 	public IItemHandler getHandler(L2EtcItem item)
 	{
-		if (item == null || item.getHandlerName() == null)
+		if ((item == null) || (item.getHandlerName() == null))
+		{
 			return null;
-		return _datatable.get(item.getHandlerName().hashCode());
+		}
+		return _datatable.get(item.getHandlerName());
+	}
+	
+	/**
+	 * Returns the number of elements contained in datatable
+	 * @return int : Size of the datatable
+	 */
+	@Override
+	public int size()
+	{
+		return _datatable.size();
 	}
 	
+	/**
+	 * Create ItemHandler if doesn't exist and returns ItemHandler
+	 * @return ItemHandler
+	 */
+	public static ItemHandler getInstance()
+	{
+		return SingletonHolder._instance;
+	}
+	
+	
 	private static class SingletonHolder
 	{
 		protected static final ItemHandler _instance = new ItemHandler();

+ 24 - 16
L2J_Server_BETA/java/com/l2jserver/gameserver/handler/SkillHandler.java

@@ -14,30 +14,24 @@
  */
 package com.l2jserver.gameserver.handler;
 
-import gnu.trove.map.hash.TIntObjectHashMap;
+import java.util.HashMap;
+import java.util.Map;
 
 import com.l2jserver.gameserver.model.skills.L2SkillType;
 
-
 /**
- * This class ...
- *
- * @version $Revision: 1.1.4.4 $ $Date: 2005/04/03 15:55:06 $
+ * @author UnAfraid
  */
-public class SkillHandler
+public class SkillHandler implements IHandler<ISkillHandler, L2SkillType>
 {
-	private final TIntObjectHashMap<ISkillHandler> _datatable;
-	
-	public static SkillHandler getInstance()
-	{
-		return SingletonHolder._instance;
-	}
+	private final Map<Integer, ISkillHandler> _datatable;
 	
 	protected SkillHandler()
 	{
-		_datatable = new TIntObjectHashMap<>();
+		_datatable = new HashMap<>();
 	}
 	
+	@Override
 	public void registerHandler(ISkillHandler handler)
 	{
 		L2SkillType[] types = handler.getSkillIds();
@@ -47,19 +41,33 @@ public class SkillHandler
 		}
 	}
 	
+	@Override
+	public synchronized void removeHandler(ISkillHandler handler)
+	{
+		L2SkillType[] types = handler.getSkillIds();
+		for (L2SkillType t : types)
+		{
+			_datatable.remove(t.ordinal());
+		}
+	}
+	
+	@Override
 	public ISkillHandler getHandler(L2SkillType skillType)
 	{
 		return _datatable.get(skillType.ordinal());
 	}
 	
-	/**
-	 * @return
-	 */
+	@Override
 	public int size()
 	{
 		return _datatable.size();
 	}
 	
+	public static SkillHandler getInstance()
+	{
+		return SingletonHolder._instance;
+	}
+	
 	private static class SingletonHolder
 	{
 		protected static final SkillHandler _instance = new SkillHandler();

+ 17 - 9
L2J_Server_BETA/java/com/l2jserver/gameserver/handler/TargetHandler.java

@@ -14,44 +14,52 @@
  */
 package com.l2jserver.gameserver.handler;
 
+import java.util.HashMap;
 import java.util.Map;
 
-import javolution.util.FastMap;
-
 import com.l2jserver.gameserver.model.skills.targets.L2TargetType;
 
 /**
  * @author UnAfraid
  */
-public class TargetHandler
+public class TargetHandler implements IHandler<ITargetTypeHandler, Enum<L2TargetType>>
 {
 	private final Map<Enum<L2TargetType>, ITargetTypeHandler> _datatable;
 	
-	public static TargetHandler getInstance()
-	{
-		return SingletonHolder._instance;
-	}
-	
 	protected TargetHandler()
 	{
-		_datatable = new FastMap<>();
+		_datatable = new HashMap<>();
 	}
 	
+	@Override
 	public void registerHandler(ITargetTypeHandler handler)
 	{
 		_datatable.put(handler.getTargetType(), handler);
 	}
 	
+	@Override
+	public synchronized void removeHandler(ITargetTypeHandler handler)
+	{
+		_datatable.remove(handler.getTargetType());
+	}
+	
+	@Override
 	public ITargetTypeHandler getHandler(Enum<L2TargetType> targetType)
 	{
 		return _datatable.get(targetType);
 	}
 	
+	@Override
 	public int size()
 	{
 		return _datatable.size();
 	}
 	
+	public static TargetHandler getInstance()
+	{
+		return SingletonHolder._instance;
+	}
+	
 	private static class SingletonHolder
 	{
 		protected static final TargetHandler _instance = new TargetHandler();

+ 26 - 15
L2J_Server_BETA/java/com/l2jserver/gameserver/handler/TelnetHandler.java

@@ -14,50 +14,61 @@
  */
 package com.l2jserver.gameserver.handler;
 
-import gnu.trove.map.hash.TIntObjectHashMap;
+import java.util.HashMap;
+import java.util.Map;
 
 /**
  * @author UnAfraid
  */
-public class TelnetHandler
+public class TelnetHandler implements IHandler<ITelnetHandler, String>
 {
-	private final TIntObjectHashMap<ITelnetHandler> _telnetHandlers;
+	private final Map<String, ITelnetHandler> _telnetHandlers;
 	
-	public static TelnetHandler getInstance()
+	protected TelnetHandler()
 	{
-		return SingletonHolder._instance;
+		_telnetHandlers = new HashMap<>();
 	}
 	
-	protected TelnetHandler()
+	@Override
+	public void registerHandler(ITelnetHandler handler)
 	{
-		_telnetHandlers = new TIntObjectHashMap<>();
+		for (String element : handler.getCommandList())
+		{
+			_telnetHandlers.put(element.toLowerCase(), handler);
+		}
 	}
 	
-	public void registerHandler(ITelnetHandler handler)
+	@Override
+	public synchronized void removeHandler(ITelnetHandler handler)
 	{
 		for (String element : handler.getCommandList())
 		{
-			_telnetHandlers.put(element.toLowerCase().hashCode(), handler);
+			_telnetHandlers.remove(element.toLowerCase());
 		}
 	}
 	
-	public ITelnetHandler getHandler(String BypassCommand)
+	@Override
+	public ITelnetHandler getHandler(String command)
 	{
-		String command = BypassCommand;
-		
-		if (BypassCommand.indexOf(" ") != -1)
+		if (command.contains(" "))
 		{
-			command = BypassCommand.substring(0, BypassCommand.indexOf(" "));
+			command = command.substring(0, command.indexOf(" "));
 		}
 		
-		return _telnetHandlers.get(command.toLowerCase().hashCode());
+		return _telnetHandlers.get(command.toLowerCase());
 	}
 	
+	@Override
 	public int size()
 	{
 		return _telnetHandlers.size();
 	}
 	
+	public static TelnetHandler getInstance()
+	{
+		return SingletonHolder._instance;
+	}
+	
 	private static class SingletonHolder
 	{
 		protected static final TelnetHandler _instance = new TelnetHandler();

+ 26 - 27
L2J_Server_BETA/java/com/l2jserver/gameserver/handler/UserCommandHandler.java

@@ -14,59 +14,58 @@
  */
 package com.l2jserver.gameserver.handler;
 
-import gnu.trove.map.hash.TIntObjectHashMap;
-
-import java.util.logging.Logger;
-
-import com.l2jserver.Config;
+import java.util.HashMap;
+import java.util.Map;
 
 /**
- * This class ...
- *
- * @version $Revision: 1.1.2.1.2.5 $ $Date: 2005/03/27 15:30:09 $
+ * @author UnAfraid
  */
-public class UserCommandHandler
+public class UserCommandHandler implements IHandler<IUserCommandHandler, Integer>
 {
-	private static Logger _log = Logger.getLogger(UserCommandHandler.class.getName());
-	
-	private final TIntObjectHashMap<IUserCommandHandler> _datatable;
+	private final Map<Integer, IUserCommandHandler> _datatable;
 	
-	public static UserCommandHandler getInstance()
+	protected UserCommandHandler()
 	{
-		return SingletonHolder._instance;
+		_datatable = new HashMap<>();
 	}
 	
-	protected UserCommandHandler()
+	@Override
+	public void registerHandler(IUserCommandHandler handler)
 	{
-		_datatable = new TIntObjectHashMap<>();
+		int[] ids = handler.getUserCommandList();
+		for (int id : ids)
+		{
+			_datatable.put(id, handler);
+		}
 	}
 	
-	public void registerHandler(IUserCommandHandler handler)
+	@Override
+	public synchronized void removeHandler(IUserCommandHandler handler)
 	{
 		int[] ids = handler.getUserCommandList();
-		for (int i = 0; i < ids.length; i++)
+		for (int id : ids)
 		{
-			if (Config.DEBUG)
-				_log.fine("Adding handler for user command " + ids[i]);
-			_datatable.put(ids[i], handler);
+			_datatable.remove(id);
 		}
 	}
 	
-	public IUserCommandHandler getHandler(int userCommand)
+	@Override
+	public IUserCommandHandler getHandler(Integer userCommand)
 	{
-		if (Config.DEBUG)
-			_log.fine("getting handler for user command: " + userCommand);
 		return _datatable.get(userCommand);
 	}
 	
-	/**
-	 * @return
-	 */
+	@Override
 	public int size()
 	{
 		return _datatable.size();
 	}
 	
+	public static UserCommandHandler getInstance()
+	{
+		return SingletonHolder._instance;
+	}
+	
 	private static class SingletonHolder
 	{
 		protected static final UserCommandHandler _instance = new UserCommandHandler();

+ 27 - 28
L2J_Server_BETA/java/com/l2jserver/gameserver/handler/VoicedCommandHandler.java

@@ -14,64 +14,63 @@
  */
 package com.l2jserver.gameserver.handler;
 
-import gnu.trove.map.hash.TIntObjectHashMap;
-
-import java.util.logging.Logger;
-
-import com.l2jserver.Config;
+import java.util.HashMap;
+import java.util.Map;
 
 /**
- * This class ...
- *
- * @version $Revision: 1.1.4.5 $ $Date: 2005/03/27 15:30:09 $
+ * @author UnAfraid
  */
-public class VoicedCommandHandler
+public class VoicedCommandHandler implements IHandler<IVoicedCommandHandler, String>
 {
-	private static Logger _log = Logger.getLogger(VoicedCommandHandler.class.getName());
-	
-	private final TIntObjectHashMap<IVoicedCommandHandler> _datatable;
+	private final Map<String, IVoicedCommandHandler> _datatable;
 	
-	public static VoicedCommandHandler getInstance()
+	protected VoicedCommandHandler()
 	{
-		return SingletonHolder._instance;
+		_datatable = new HashMap<>();
 	}
 	
-	protected VoicedCommandHandler()
+	@Override
+	public void registerHandler(IVoicedCommandHandler handler)
 	{
-		_datatable = new TIntObjectHashMap<>();
+		String[] ids = handler.getVoicedCommandList();
+		for (String id : ids)
+		{
+			_datatable.put(id, handler);
+		}
 	}
 	
-	public void registerHandler(IVoicedCommandHandler handler)
+	@Override
+	public synchronized void removeHandler(IVoicedCommandHandler handler)
 	{
 		String[] ids = handler.getVoicedCommandList();
-		for (int i = 0; i < ids.length; i++)
+		for (String id : ids)
 		{
-			if (Config.DEBUG)
-				_log.fine("Adding handler for command " + ids[i]);
-			_datatable.put(ids[i].hashCode(), handler);
+			_datatable.remove(id);
 		}
 	}
 	
+	@Override
 	public IVoicedCommandHandler getHandler(String voicedCommand)
 	{
 		String command = voicedCommand;
-		if (voicedCommand.indexOf(" ") != -1)
+		if (voicedCommand.contains(" "))
 		{
 			command = voicedCommand.substring(0, voicedCommand.indexOf(" "));
 		}
-		if (Config.DEBUG)
-			_log.fine("getting handler for command: " + command + " -> " + (_datatable.get(command.hashCode()) != null));
-		return _datatable.get(command.hashCode());
+		return _datatable.get(command);
 	}
 	
-	/**
-	 * @return
-	 */
+	@Override
 	public int size()
 	{
 		return _datatable.size();
 	}
 	
+	public static VoicedCommandHandler getInstance()
+	{
+		return SingletonHolder._instance;
+	}
+	
 	private static class SingletonHolder
 	{
 		protected static final VoicedCommandHandler _instance = new VoicedCommandHandler();

+ 9 - 18
L2J_Server_BETA/java/com/l2jserver/gameserver/instancemanager/QuestManager.java

@@ -31,11 +31,6 @@ public class QuestManager extends ScriptManager<Quest>
 {
 	protected static final Logger _log = Logger.getLogger(QuestManager.class.getName());
 	
-	public static final QuestManager getInstance()
-	{
-		return SingletonHolder._instance;
-	}
-	
 	private Map<String, Quest> _quests = new FastMap<>();
 	
 	protected QuestManager()
@@ -60,7 +55,7 @@ public class QuestManager extends ScriptManager<Quest>
 	 */
 	public final boolean reload(int questId)
 	{
-		Quest q = this.getQuest(questId);
+		Quest q = getQuest(questId);
 		if (q == null)
 		{
 			return false;
@@ -131,7 +126,7 @@ public class QuestManager extends ScriptManager<Quest>
 		
 		// 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
-		// an unpredictable number of tasks with that data.  The old quest will now
+		// an unpredictable number of tasks with that data. The old quest will now
 		// save data which will never be read.
 		// However, requesting the newQuest to re-read the data is not necessarily a
 		// good option, since the newQuest may have already started timers, spawned NPCs
@@ -152,32 +147,28 @@ public class QuestManager extends ScriptManager<Quest>
 		return _quests.remove(q.getName()) != null;
 	}
 	
-	/**
-	 * @see com.l2jserver.gameserver.scripting.ScriptManager#getAllManagedScripts()
-	 */
 	@Override
 	public Iterable<Quest> getAllManagedScripts()
 	{
 		return _quests.values();
 	}
 	
-	/**
-	 * @see com.l2jserver.gameserver.scripting.ScriptManager#unload(com.l2jserver.gameserver.scripting.ManagedScript)
-	 */
 	@Override
 	public boolean unload(Quest ms)
 	{
 		ms.saveGlobalData();
-		return this.removeQuest(ms);
+		return removeQuest(ms);
 	}
 	
-	/**
-	 * @see com.l2jserver.gameserver.scripting.ScriptManager#getScriptManagerName()
-	 */
 	@Override
 	public String getScriptManagerName()
 	{
-		return "QuestManager";
+		return getClass().getSimpleName();
+	}
+	
+	public static final QuestManager getInstance()
+	{
+		return SingletonHolder._instance;
 	}
 	
 	private static class SingletonHolder

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

@@ -498,7 +498,7 @@ public abstract class L2Character extends L2Object
 	public void onSpawn()
 	{
 		super.onSpawn();
-		this.revalidateZone(true);
+		revalidateZone(true);
 	}
 	
 	public void onTeleported()

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

@@ -69,6 +69,8 @@ public final class Say2 extends L2GameClientPacket
 	public static final int SCREEN_ANNOUNCE = 19;
 	public static final int BATTLEFIELD = 20;
 	public static final int MPCC_ROOM = 21;
+	public static final int NPC_ALL = 22;
+	public static final int NPC_SHOUT = 23;
 	
 	private static final String[] CHAT_NAMES =
 	{