655 lines
		
	
	
		
			22 KiB
		
	
	
	
		
			Java
		
	
	
	
	
	
			
		
		
	
	
			655 lines
		
	
	
		
			22 KiB
		
	
	
	
		
			Java
		
	
	
	
	
	
| /*
 | |
|  * Copyright (C) 2004-2015 L2J DataPack
 | |
|  * 
 | |
|  * This file is part of L2J DataPack.
 | |
|  * 
 | |
|  * L2J DataPack is free software: you can redistribute it and/or modify
 | |
|  * it under the terms of the GNU General Public License as published by
 | |
|  * the Free Software Foundation, either version 3 of the License, or
 | |
|  * (at your option) any later version.
 | |
|  * 
 | |
|  * L2J DataPack 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 handlers;
 | |
| 
 | |
| import handlers.actionhandlers.L2ArtefactInstanceAction;
 | |
| import handlers.actionhandlers.L2DecoyAction;
 | |
| import handlers.actionhandlers.L2DoorInstanceAction;
 | |
| import handlers.actionhandlers.L2ItemInstanceAction;
 | |
| import handlers.actionhandlers.L2NpcAction;
 | |
| import handlers.actionhandlers.L2PcInstanceAction;
 | |
| import handlers.actionhandlers.L2PetInstanceAction;
 | |
| import handlers.actionhandlers.L2StaticObjectInstanceAction;
 | |
| import handlers.actionhandlers.L2SummonAction;
 | |
| import handlers.actionhandlers.L2TrapAction;
 | |
| import handlers.actionshifthandlers.L2DoorInstanceActionShift;
 | |
| import handlers.actionshifthandlers.L2ItemInstanceActionShift;
 | |
| import handlers.actionshifthandlers.L2NpcActionShift;
 | |
| import handlers.actionshifthandlers.L2PcInstanceActionShift;
 | |
| import handlers.actionshifthandlers.L2StaticObjectInstanceActionShift;
 | |
| import handlers.actionshifthandlers.L2SummonActionShift;
 | |
| import handlers.admincommandhandlers.AdminAdmin;
 | |
| import handlers.admincommandhandlers.AdminAnnouncements;
 | |
| import handlers.admincommandhandlers.AdminBBS;
 | |
| import handlers.admincommandhandlers.AdminBuffs;
 | |
| import handlers.admincommandhandlers.AdminCHSiege;
 | |
| import handlers.admincommandhandlers.AdminCamera;
 | |
| import handlers.admincommandhandlers.AdminCastle;
 | |
| import handlers.admincommandhandlers.AdminChangeAccessLevel;
 | |
| import handlers.admincommandhandlers.AdminClan;
 | |
| import handlers.admincommandhandlers.AdminClanHall;
 | |
| import handlers.admincommandhandlers.AdminCreateItem;
 | |
| import handlers.admincommandhandlers.AdminCursedWeapons;
 | |
| import handlers.admincommandhandlers.AdminDebug;
 | |
| import handlers.admincommandhandlers.AdminDelete;
 | |
| import handlers.admincommandhandlers.AdminDisconnect;
 | |
| import handlers.admincommandhandlers.AdminDoorControl;
 | |
| import handlers.admincommandhandlers.AdminEditChar;
 | |
| import handlers.admincommandhandlers.AdminEffects;
 | |
| import handlers.admincommandhandlers.AdminElement;
 | |
| import handlers.admincommandhandlers.AdminEnchant;
 | |
| import handlers.admincommandhandlers.AdminEventEngine;
 | |
| import handlers.admincommandhandlers.AdminEvents;
 | |
| import handlers.admincommandhandlers.AdminExpSp;
 | |
| import handlers.admincommandhandlers.AdminFightCalculator;
 | |
| import handlers.admincommandhandlers.AdminFortSiege;
 | |
| import handlers.admincommandhandlers.AdminGeodata;
 | |
| import handlers.admincommandhandlers.AdminGm;
 | |
| import handlers.admincommandhandlers.AdminGmChat;
 | |
| import handlers.admincommandhandlers.AdminGraciaSeeds;
 | |
| import handlers.admincommandhandlers.AdminGrandBoss;
 | |
| import handlers.admincommandhandlers.AdminHeal;
 | |
| import handlers.admincommandhandlers.AdminHtml;
 | |
| import handlers.admincommandhandlers.AdminInstance;
 | |
| import handlers.admincommandhandlers.AdminInstanceZone;
 | |
| import handlers.admincommandhandlers.AdminInvul;
 | |
| import handlers.admincommandhandlers.AdminKick;
 | |
| import handlers.admincommandhandlers.AdminKill;
 | |
| import handlers.admincommandhandlers.AdminLevel;
 | |
| import handlers.admincommandhandlers.AdminLogin;
 | |
| import handlers.admincommandhandlers.AdminManor;
 | |
| import handlers.admincommandhandlers.AdminMenu;
 | |
| import handlers.admincommandhandlers.AdminMessages;
 | |
| import handlers.admincommandhandlers.AdminMobGroup;
 | |
| import handlers.admincommandhandlers.AdminMonsterRace;
 | |
| import handlers.admincommandhandlers.AdminPCBangPoints;
 | |
| import handlers.admincommandhandlers.AdminPForge;
 | |
| import handlers.admincommandhandlers.AdminPathNode;
 | |
| import handlers.admincommandhandlers.AdminPcCondOverride;
 | |
| import handlers.admincommandhandlers.AdminPetition;
 | |
| import handlers.admincommandhandlers.AdminPledge;
 | |
| import handlers.admincommandhandlers.AdminPolymorph;
 | |
| import handlers.admincommandhandlers.AdminPremium;
 | |
| import handlers.admincommandhandlers.AdminPrimePoints;
 | |
| import handlers.admincommandhandlers.AdminPunishment;
 | |
| import handlers.admincommandhandlers.AdminQuest;
 | |
| import handlers.admincommandhandlers.AdminReload;
 | |
| import handlers.admincommandhandlers.AdminRepairChar;
 | |
| import handlers.admincommandhandlers.AdminRes;
 | |
| import handlers.admincommandhandlers.AdminRide;
 | |
| import handlers.admincommandhandlers.AdminScan;
 | |
| import handlers.admincommandhandlers.AdminServerInfo;
 | |
| import handlers.admincommandhandlers.AdminShop;
 | |
| import handlers.admincommandhandlers.AdminShowQuests;
 | |
| import handlers.admincommandhandlers.AdminShutdown;
 | |
| import handlers.admincommandhandlers.AdminSkill;
 | |
| import handlers.admincommandhandlers.AdminSpawn;
 | |
| import handlers.admincommandhandlers.AdminSummon;
 | |
| import handlers.admincommandhandlers.AdminTarget;
 | |
| import handlers.admincommandhandlers.AdminTargetSay;
 | |
| import handlers.admincommandhandlers.AdminTeleport;
 | |
| import handlers.admincommandhandlers.AdminTest;
 | |
| import handlers.admincommandhandlers.AdminTvTEvent;
 | |
| import handlers.admincommandhandlers.AdminUnblockIp;
 | |
| import handlers.admincommandhandlers.AdminVitality;
 | |
| import handlers.admincommandhandlers.AdminZone;
 | |
| import handlers.bypasshandlers.AlternateClassMaster;
 | |
| import handlers.bypasshandlers.ArcanCityMovie;
 | |
| import handlers.bypasshandlers.Augment;
 | |
| import handlers.bypasshandlers.Buy;
 | |
| import handlers.bypasshandlers.BuyShadowItem;
 | |
| import handlers.bypasshandlers.ChatLink;
 | |
| import handlers.bypasshandlers.ClanWarehouse;
 | |
| import handlers.bypasshandlers.EventEngine;
 | |
| import handlers.bypasshandlers.Freight;
 | |
| import handlers.bypasshandlers.ItemAuctionLink;
 | |
| import handlers.bypasshandlers.Link;
 | |
| import handlers.bypasshandlers.Loto;
 | |
| import handlers.bypasshandlers.Multisell;
 | |
| import handlers.bypasshandlers.NpcViewMod;
 | |
| import handlers.bypasshandlers.Observation;
 | |
| import handlers.bypasshandlers.OlympiadManagerLink;
 | |
| import handlers.bypasshandlers.OlympiadObservation;
 | |
| import handlers.bypasshandlers.PlayerHelp;
 | |
| import handlers.bypasshandlers.PrivateWarehouse;
 | |
| import handlers.bypasshandlers.QuestLink;
 | |
| import handlers.bypasshandlers.QuestList;
 | |
| import handlers.bypasshandlers.ReceivePremium;
 | |
| import handlers.bypasshandlers.ReleaseAttribute;
 | |
| import handlers.bypasshandlers.RentPet;
 | |
| import handlers.bypasshandlers.SkillList;
 | |
| import handlers.bypasshandlers.TerritoryStatus;
 | |
| import handlers.bypasshandlers.TutorialClose;
 | |
| import handlers.bypasshandlers.VoiceCommand;
 | |
| import handlers.bypasshandlers.Wear;
 | |
| import handlers.chathandlers.ChatAlliance;
 | |
| import handlers.chathandlers.ChatClan;
 | |
| import handlers.chathandlers.ChatGeneral;
 | |
| import handlers.chathandlers.ChatHeroVoice;
 | |
| import handlers.chathandlers.ChatParty;
 | |
| import handlers.chathandlers.ChatPartyMatchRoom;
 | |
| import handlers.chathandlers.ChatPartyRoomAll;
 | |
| import handlers.chathandlers.ChatPartyRoomCommander;
 | |
| import handlers.chathandlers.ChatPetition;
 | |
| import handlers.chathandlers.ChatShout;
 | |
| import handlers.chathandlers.ChatTrade;
 | |
| import handlers.chathandlers.ChatWhisper;
 | |
| import handlers.chathandlers.ChatWorld;
 | |
| import handlers.communityboard.ClanBoard;
 | |
| import handlers.communityboard.FavoriteBoard;
 | |
| import handlers.communityboard.FriendsBoard;
 | |
| import handlers.communityboard.HomeBoard;
 | |
| import handlers.communityboard.HomepageBoard;
 | |
| import handlers.communityboard.MailBoard;
 | |
| import handlers.communityboard.MemoBoard;
 | |
| import handlers.communityboard.RegionBoard;
 | |
| import handlers.itemhandlers.Appearance;
 | |
| import handlers.itemhandlers.BeastSoulShot;
 | |
| import handlers.itemhandlers.BeastSpiritShot;
 | |
| import handlers.itemhandlers.BlessedSpiritShot;
 | |
| import handlers.itemhandlers.Book;
 | |
| import handlers.itemhandlers.Bypass;
 | |
| import handlers.itemhandlers.Calculator;
 | |
| import handlers.itemhandlers.ChangeAttribute;
 | |
| import handlers.itemhandlers.CharmOfCourage;
 | |
| import handlers.itemhandlers.Elixir;
 | |
| import handlers.itemhandlers.EnchantAttribute;
 | |
| import handlers.itemhandlers.EnchantScrolls;
 | |
| import handlers.itemhandlers.EventItem;
 | |
| import handlers.itemhandlers.ExtractableItems;
 | |
| import handlers.itemhandlers.FatedSupportBox;
 | |
| import handlers.itemhandlers.FishShots;
 | |
| import handlers.itemhandlers.Harvester;
 | |
| import handlers.itemhandlers.ItemSkills;
 | |
| import handlers.itemhandlers.ItemSkillsTemplate;
 | |
| import handlers.itemhandlers.ManaPotion;
 | |
| import handlers.itemhandlers.Maps;
 | |
| import handlers.itemhandlers.MercTicket;
 | |
| import handlers.itemhandlers.NicknameColor;
 | |
| import handlers.itemhandlers.PetFood;
 | |
| import handlers.itemhandlers.Recipes;
 | |
| import handlers.itemhandlers.RollingDice;
 | |
| import handlers.itemhandlers.Seed;
 | |
| import handlers.itemhandlers.SoulShots;
 | |
| import handlers.itemhandlers.SpecialXMas;
 | |
| import handlers.itemhandlers.SpiritShot;
 | |
| import handlers.itemhandlers.SummonItems;
 | |
| import handlers.itemhandlers.TeleportBookmark;
 | |
| import handlers.punishmenthandlers.BanHandler;
 | |
| import handlers.punishmenthandlers.ChatBanHandler;
 | |
| import handlers.punishmenthandlers.JailHandler;
 | |
| import handlers.targethandlers.Area;
 | |
| import handlers.targethandlers.AreaCorpseMob;
 | |
| import handlers.targethandlers.AreaFriendly;
 | |
| import handlers.targethandlers.AreaSummon;
 | |
| import handlers.targethandlers.Aura;
 | |
| import handlers.targethandlers.AuraCorpseMob;
 | |
| import handlers.targethandlers.AuraFriendly;
 | |
| import handlers.targethandlers.BehindArea;
 | |
| import handlers.targethandlers.BehindAura;
 | |
| import handlers.targethandlers.Clan;
 | |
| import handlers.targethandlers.ClanMember;
 | |
| import handlers.targethandlers.CommandChannel;
 | |
| import handlers.targethandlers.CorpseClan;
 | |
| import handlers.targethandlers.CorpseMob;
 | |
| import handlers.targethandlers.EnemySummon;
 | |
| import handlers.targethandlers.FlagPole;
 | |
| import handlers.targethandlers.FrontArea;
 | |
| import handlers.targethandlers.FrontAura;
 | |
| import handlers.targethandlers.Ground;
 | |
| import handlers.targethandlers.Holy;
 | |
| import handlers.targethandlers.One;
 | |
| import handlers.targethandlers.OneFriendly;
 | |
| import handlers.targethandlers.OwnerPet;
 | |
| import handlers.targethandlers.Party;
 | |
| import handlers.targethandlers.PartyClan;
 | |
| import handlers.targethandlers.PartyMember;
 | |
| import handlers.targethandlers.PartyNotMe;
 | |
| import handlers.targethandlers.PartyOther;
 | |
| import handlers.targethandlers.PcBody;
 | |
| import handlers.targethandlers.Pet;
 | |
| import handlers.targethandlers.Self;
 | |
| import handlers.targethandlers.Servitor;
 | |
| import handlers.targethandlers.Summon;
 | |
| import handlers.targethandlers.TargetParty;
 | |
| import handlers.targethandlers.Unlockable;
 | |
| import handlers.telnethandlers.ChatsHandler;
 | |
| import handlers.telnethandlers.DebugHandler;
 | |
| import handlers.telnethandlers.HelpHandler;
 | |
| import handlers.telnethandlers.PlayerHandler;
 | |
| import handlers.telnethandlers.ReloadHandler;
 | |
| import handlers.telnethandlers.ServerHandler;
 | |
| import handlers.telnethandlers.StatusHandler;
 | |
| import handlers.telnethandlers.ThreadHandler;
 | |
| import handlers.usercommandhandlers.ChannelDelete;
 | |
| import handlers.usercommandhandlers.ChannelInfo;
 | |
| import handlers.usercommandhandlers.ChannelLeave;
 | |
| import handlers.usercommandhandlers.ClanPenalty;
 | |
| import handlers.usercommandhandlers.ClanWarsList;
 | |
| import handlers.usercommandhandlers.Dismount;
 | |
| import handlers.usercommandhandlers.ExperienceGain;
 | |
| import handlers.usercommandhandlers.InstanceZone;
 | |
| import handlers.usercommandhandlers.Loc;
 | |
| import handlers.usercommandhandlers.Mount;
 | |
| import handlers.usercommandhandlers.MyBirthday;
 | |
| import handlers.usercommandhandlers.OlympiadStat;
 | |
| import handlers.usercommandhandlers.PartyInfo;
 | |
| import handlers.usercommandhandlers.SiegeStatus;
 | |
| import handlers.usercommandhandlers.Time;
 | |
| import handlers.usercommandhandlers.Unstuck;
 | |
| import handlers.voicedcommandhandlers.Banking;
 | |
| import handlers.voicedcommandhandlers.ChangePassword;
 | |
| import handlers.voicedcommandhandlers.ChatAdmin;
 | |
| import handlers.voicedcommandhandlers.Debug;
 | |
| import handlers.voicedcommandhandlers.Lang;
 | |
| import handlers.voicedcommandhandlers.Premium;
 | |
| import handlers.voicedcommandhandlers.StatsVCmd;
 | |
| import handlers.voicedcommandhandlers.Wedding;
 | |
| 
 | |
| import java.lang.reflect.Method;
 | |
| import java.util.HashMap;
 | |
| import java.util.Map;
 | |
| import java.util.Map.Entry;
 | |
| import java.util.logging.Level;
 | |
| import java.util.logging.Logger;
 | |
| 
 | |
| import com.l2jserver.Config;
 | |
| import com.l2jserver.gameserver.handler.ActionHandler;
 | |
| import com.l2jserver.gameserver.handler.ActionShiftHandler;
 | |
| import com.l2jserver.gameserver.handler.AdminCommandHandler;
 | |
| import com.l2jserver.gameserver.handler.BypassHandler;
 | |
| import com.l2jserver.gameserver.handler.ChatHandler;
 | |
| import com.l2jserver.gameserver.handler.CommunityBoardHandler;
 | |
| import com.l2jserver.gameserver.handler.IHandler;
 | |
| import com.l2jserver.gameserver.handler.ItemHandler;
 | |
| import com.l2jserver.gameserver.handler.PunishmentHandler;
 | |
| import com.l2jserver.gameserver.handler.TargetHandler;
 | |
| import com.l2jserver.gameserver.handler.TelnetHandler;
 | |
| import com.l2jserver.gameserver.handler.UserCommandHandler;
 | |
| import com.l2jserver.gameserver.handler.VoicedCommandHandler;
 | |
| 
 | |
| /**
 | |
|  * Master handler.
 | |
|  * @author UnAfraid
 | |
|  */
 | |
| public class MasterHandler
 | |
| {
 | |
| 	private static final Logger _log = Logger.getLogger(MasterHandler.class.getName());
 | |
| 	
 | |
| 	private static final IHandler<?, ?>[] LOAD_INSTANCES =
 | |
| 	{
 | |
| 		ActionHandler.getInstance(),
 | |
| 		ActionShiftHandler.getInstance(),
 | |
| 		AdminCommandHandler.getInstance(),
 | |
| 		BypassHandler.getInstance(),
 | |
| 		ChatHandler.getInstance(),
 | |
| 		CommunityBoardHandler.getInstance(),
 | |
| 		ItemHandler.getInstance(),
 | |
| 		PunishmentHandler.getInstance(),
 | |
| 		UserCommandHandler.getInstance(),
 | |
| 		VoicedCommandHandler.getInstance(),
 | |
| 		TargetHandler.getInstance(),
 | |
| 		TelnetHandler.getInstance(),
 | |
| 	};
 | |
| 	
 | |
| 	private static final Class<?>[][] HANDLERS =
 | |
| 	{
 | |
| 		{
 | |
| 			// Action Handlers
 | |
| 			L2ArtefactInstanceAction.class,
 | |
| 			L2DecoyAction.class,
 | |
| 			L2DoorInstanceAction.class,
 | |
| 			L2ItemInstanceAction.class,
 | |
| 			L2NpcAction.class,
 | |
| 			L2PcInstanceAction.class,
 | |
| 			L2PetInstanceAction.class,
 | |
| 			L2StaticObjectInstanceAction.class,
 | |
| 			L2SummonAction.class,
 | |
| 			L2TrapAction.class,
 | |
| 		},
 | |
| 		{
 | |
| 			// Action Shift Handlers
 | |
| 			L2DoorInstanceActionShift.class,
 | |
| 			L2ItemInstanceActionShift.class,
 | |
| 			L2NpcActionShift.class,
 | |
| 			L2PcInstanceActionShift.class,
 | |
| 			L2StaticObjectInstanceActionShift.class,
 | |
| 			L2SummonActionShift.class,
 | |
| 		},
 | |
| 		{
 | |
| 			// Admin Command Handlers
 | |
| 			AdminAdmin.class,
 | |
| 			AdminAnnouncements.class,
 | |
| 			AdminBBS.class,
 | |
| 			AdminBuffs.class,
 | |
| 			AdminCamera.class,
 | |
| 			AdminChangeAccessLevel.class,
 | |
| 			AdminCHSiege.class,
 | |
| 			AdminClan.class,
 | |
| 			AdminCastle.class,
 | |
| 			AdminPcCondOverride.class,
 | |
| 			AdminCreateItem.class,
 | |
| 			AdminCursedWeapons.class,
 | |
| 			AdminDebug.class,
 | |
| 			AdminDelete.class,
 | |
| 			AdminDisconnect.class,
 | |
| 			AdminDoorControl.class,
 | |
| 			AdminEditChar.class,
 | |
| 			AdminEffects.class,
 | |
| 			AdminElement.class,
 | |
| 			AdminEnchant.class,
 | |
| 			AdminEventEngine.class,
 | |
| 			AdminEvents.class,
 | |
| 			AdminExpSp.class,
 | |
| 			AdminFightCalculator.class,
 | |
| 			AdminFortSiege.class,
 | |
| 			AdminGeodata.class,
 | |
| 			AdminGm.class,
 | |
| 			AdminGmChat.class,
 | |
| 			AdminGraciaSeeds.class,
 | |
| 			AdminGrandBoss.class,
 | |
| 			AdminHeal.class,
 | |
| 			AdminHtml.class,
 | |
| 			AdminInstance.class,
 | |
| 			AdminInstanceZone.class,
 | |
| 			AdminInvul.class,
 | |
| 			AdminKick.class,
 | |
| 			AdminKill.class,
 | |
| 			AdminLevel.class,
 | |
| 			AdminLogin.class,
 | |
| 			AdminManor.class,
 | |
| 			AdminMenu.class,
 | |
| 			AdminMessages.class,
 | |
| 			AdminMobGroup.class,
 | |
| 			AdminMonsterRace.class,
 | |
| 			AdminPathNode.class,
 | |
| 			AdminPCBangPoints.class,
 | |
| 			AdminPetition.class,
 | |
| 			AdminPForge.class,
 | |
| 			AdminPledge.class,
 | |
| 			AdminPolymorph.class,
 | |
| 			AdminPremium.class,
 | |
| 			AdminPrimePoints.class,
 | |
| 			AdminPunishment.class,
 | |
| 			AdminQuest.class,
 | |
| 			AdminReload.class,
 | |
| 			AdminRepairChar.class,
 | |
| 			AdminRes.class,
 | |
| 			AdminRide.class,
 | |
| 			AdminScan.class,
 | |
| 			AdminServerInfo.class,
 | |
| 			AdminShop.class,
 | |
| 			AdminShowQuests.class,
 | |
| 			AdminShutdown.class,
 | |
| 			AdminClanHall.class,
 | |
| 			AdminSkill.class,
 | |
| 			AdminSpawn.class,
 | |
| 			AdminSummon.class,
 | |
| 			AdminTarget.class,
 | |
| 			AdminTargetSay.class,
 | |
| 			AdminTeleport.class,
 | |
| 			AdminTest.class,
 | |
| 			AdminTvTEvent.class,
 | |
| 			AdminUnblockIp.class,
 | |
| 			AdminVitality.class,
 | |
| 			AdminZone.class,
 | |
| 		},
 | |
| 		{
 | |
| 			// Bypass Handlers
 | |
| 			AlternateClassMaster.class,
 | |
| 			ArcanCityMovie.class,
 | |
| 			Augment.class,
 | |
| 			Buy.class,
 | |
| 			BuyShadowItem.class,
 | |
| 			ChatLink.class,
 | |
| 			ClanWarehouse.class,
 | |
| 			EventEngine.class,
 | |
| 			Freight.class,
 | |
| 			ItemAuctionLink.class,
 | |
| 			Link.class,
 | |
| 			Loto.class,
 | |
| 			Multisell.class,
 | |
| 			NpcViewMod.class,
 | |
| 			Observation.class,
 | |
| 			OlympiadObservation.class,
 | |
| 			OlympiadManagerLink.class,
 | |
| 			QuestLink.class,
 | |
| 			PlayerHelp.class,
 | |
| 			PrivateWarehouse.class,
 | |
| 			QuestList.class,
 | |
| 			ReceivePremium.class,
 | |
| 			ReleaseAttribute.class,
 | |
| 			RentPet.class,
 | |
| 			SkillList.class,
 | |
| 			TerritoryStatus.class,
 | |
| 			TutorialClose.class,
 | |
| 			VoiceCommand.class,
 | |
| 			Wear.class,
 | |
| 		},
 | |
| 		{
 | |
| 			// Chat Handlers
 | |
| 			ChatGeneral.class,
 | |
| 			ChatAlliance.class,
 | |
| 			ChatClan.class,
 | |
| 			ChatHeroVoice.class,
 | |
| 			ChatParty.class,
 | |
| 			ChatPartyMatchRoom.class,
 | |
| 			ChatPartyRoomAll.class,
 | |
| 			ChatPartyRoomCommander.class,
 | |
| 			ChatPetition.class,
 | |
| 			ChatShout.class,
 | |
| 			ChatWhisper.class,
 | |
| 			ChatTrade.class,
 | |
| 			ChatWorld.class,
 | |
| 		},
 | |
| 		{
 | |
| 			// Community Board
 | |
| 			ClanBoard.class,
 | |
| 			FavoriteBoard.class,
 | |
| 			FriendsBoard.class,
 | |
| 			HomeBoard.class,
 | |
| 			HomepageBoard.class,
 | |
| 			MailBoard.class,
 | |
| 			MemoBoard.class,
 | |
| 			RegionBoard.class,
 | |
| 		},
 | |
| 		{
 | |
| 			// Item Handlers
 | |
| 			Appearance.class,
 | |
| 			BeastSoulShot.class,
 | |
| 			BeastSpiritShot.class,
 | |
| 			BlessedSpiritShot.class,
 | |
| 			Book.class,
 | |
| 			Bypass.class,
 | |
| 			Calculator.class,
 | |
| 			ChangeAttribute.class,
 | |
| 			CharmOfCourage.class,
 | |
| 			Elixir.class,
 | |
| 			EnchantAttribute.class,
 | |
| 			EnchantScrolls.class,
 | |
| 			EventItem.class,
 | |
| 			ExtractableItems.class,
 | |
| 			FatedSupportBox.class,
 | |
| 			FishShots.class,
 | |
| 			Harvester.class,
 | |
| 			ItemSkills.class,
 | |
| 			ItemSkillsTemplate.class,
 | |
| 			ManaPotion.class,
 | |
| 			Maps.class,
 | |
| 			MercTicket.class,
 | |
| 			NicknameColor.class,
 | |
| 			PetFood.class,
 | |
| 			Recipes.class,
 | |
| 			RollingDice.class,
 | |
| 			Seed.class,
 | |
| 			SoulShots.class,
 | |
| 			SpecialXMas.class,
 | |
| 			SpiritShot.class,
 | |
| 			SummonItems.class,
 | |
| 			TeleportBookmark.class,
 | |
| 		},
 | |
| 		{
 | |
| 			// Punishment Handlers
 | |
| 			BanHandler.class,
 | |
| 			ChatBanHandler.class,
 | |
| 			JailHandler.class,
 | |
| 		},
 | |
| 		{
 | |
| 			// User Command Handlers
 | |
| 			ClanPenalty.class,
 | |
| 			ClanWarsList.class,
 | |
| 			Dismount.class,
 | |
| 			ExperienceGain.class,
 | |
| 			Unstuck.class,
 | |
| 			InstanceZone.class,
 | |
| 			Loc.class,
 | |
| 			Mount.class,
 | |
| 			PartyInfo.class,
 | |
| 			Time.class,
 | |
| 			OlympiadStat.class,
 | |
| 			ChannelLeave.class,
 | |
| 			ChannelDelete.class,
 | |
| 			ChannelInfo.class,
 | |
| 			MyBirthday.class,
 | |
| 			SiegeStatus.class,
 | |
| 		},
 | |
| 		{
 | |
| 			// Voiced Command Handlers
 | |
| 			StatsVCmd.class,
 | |
| 			// TODO: Add configuration options for this voiced commands:
 | |
| 			// CastleVCmd.class,
 | |
| 			// SetVCmd.class,
 | |
| 			(Config.L2JMOD_ALLOW_WEDDING ? Wedding.class : null),
 | |
| 			(Config.BANKING_SYSTEM_ENABLED ? Banking.class : null),
 | |
| 			(Config.L2JMOD_CHAT_ADMIN ? ChatAdmin.class : null),
 | |
| 			(Config.L2JMOD_MULTILANG_ENABLE && Config.L2JMOD_MULTILANG_VOICED_ALLOW ? Lang.class : null),
 | |
| 			(Config.L2JMOD_DEBUG_VOICE_COMMAND ? Debug.class : null),
 | |
| 			(Config.L2JMOD_ALLOW_CHANGE_PASSWORD ? ChangePassword.class : null),
 | |
| 			(Config.PREMIUM_SYSTEM_ENABLED ? Premium.class : null),
 | |
| 		},
 | |
| 		{
 | |
| 			// Target Handlers
 | |
| 			Area.class,
 | |
| 			AreaCorpseMob.class,
 | |
| 			AreaFriendly.class,
 | |
| 			AreaSummon.class,
 | |
| 			Aura.class,
 | |
| 			AuraCorpseMob.class,
 | |
| 			AuraFriendly.class,
 | |
| 			BehindArea.class,
 | |
| 			BehindAura.class,
 | |
| 			Clan.class,
 | |
| 			ClanMember.class,
 | |
| 			CommandChannel.class,
 | |
| 			CorpseClan.class,
 | |
| 			CorpseMob.class,
 | |
| 			EnemySummon.class,
 | |
| 			FlagPole.class,
 | |
| 			FrontArea.class,
 | |
| 			FrontAura.class,
 | |
| 			Ground.class,
 | |
| 			Holy.class,
 | |
| 			One.class,
 | |
| 			OneFriendly.class,
 | |
| 			OwnerPet.class,
 | |
| 			Party.class,
 | |
| 			PartyClan.class,
 | |
| 			PartyMember.class,
 | |
| 			PartyNotMe.class,
 | |
| 			PartyOther.class,
 | |
| 			PcBody.class,
 | |
| 			Pet.class,
 | |
| 			Self.class,
 | |
| 			Servitor.class,
 | |
| 			Summon.class,
 | |
| 			TargetParty.class,
 | |
| 			Unlockable.class,
 | |
| 		},
 | |
| 		{
 | |
| 			// Telnet Handlers
 | |
| 			ChatsHandler.class,
 | |
| 			DebugHandler.class,
 | |
| 			HelpHandler.class,
 | |
| 			PlayerHandler.class,
 | |
| 			ReloadHandler.class,
 | |
| 			ServerHandler.class,
 | |
| 			StatusHandler.class,
 | |
| 			ThreadHandler.class,
 | |
| 		},
 | |
| 	};
 | |
| 	
 | |
| 	public static void main(String[] args)
 | |
| 	{
 | |
| 		_log.log(Level.INFO, "Loading Handlers...");
 | |
| 		
 | |
| 		Map<IHandler<?, ?>, Method> registerHandlerMethods = new HashMap<>();
 | |
| 		for (IHandler<?, ?> loadInstance : LOAD_INSTANCES)
 | |
| 		{
 | |
| 			registerHandlerMethods.put(loadInstance, null);
 | |
| 			for (Method method : loadInstance.getClass().getMethods())
 | |
| 			{
 | |
| 				if (method.getName().equals("registerHandler") && !method.isBridge())
 | |
| 				{
 | |
| 					registerHandlerMethods.put(loadInstance, method);
 | |
| 				}
 | |
| 			}
 | |
| 		}
 | |
| 		
 | |
| 		registerHandlerMethods.entrySet().stream().filter(e -> e.getValue() == null).forEach(e ->
 | |
| 		{
 | |
| 			_log.log(Level.WARNING, "Failed loading handlers of: " + e.getKey().getClass().getSimpleName() + " seems registerHandler function does not exist.");
 | |
| 		});
 | |
| 		
 | |
| 		for (Class<?> classes[] : HANDLERS)
 | |
| 		{
 | |
| 			for (Class<?> c : classes)
 | |
| 			{
 | |
| 				if (c == null)
 | |
| 				{
 | |
| 					continue; // Disabled handler
 | |
| 				}
 | |
| 				
 | |
| 				try
 | |
| 				{
 | |
| 					Object handler = c.newInstance();
 | |
| 					for (Entry<IHandler<?, ?>, Method> entry : registerHandlerMethods.entrySet())
 | |
| 					{
 | |
| 						if ((entry.getValue() != null) && entry.getValue().getParameterTypes()[0].isInstance(handler))
 | |
| 						{
 | |
| 							entry.getValue().invoke(entry.getKey(), handler);
 | |
| 						}
 | |
| 					}
 | |
| 				}
 | |
| 				catch (Exception e)
 | |
| 				{
 | |
| 					_log.log(Level.WARNING, "Failed loading handler: " + c.getSimpleName(), e);
 | |
| 					continue;
 | |
| 				}
 | |
| 			}
 | |
| 		}
 | |
| 		
 | |
| 		for (IHandler<?, ?> loadInstance : LOAD_INSTANCES)
 | |
| 		{
 | |
| 			_log.log(Level.INFO, loadInstance.getClass().getSimpleName() + ": Loaded " + loadInstance.size() + " Handlers");
 | |
| 		}
 | |
| 		
 | |
| 		_log.log(Level.INFO, "Handlers Loaded...");
 | |
| 	}
 | |
| }
 | 
