This commit is contained in:
630
trunk/dist/game/data/scripts/handlers/MasterHandler.java
vendored
Normal file
630
trunk/dist/game/data/scripts/handlers/MasterHandler.java
vendored
Normal file
@ -0,0 +1,630 @@
|
||||
/*
|
||||
* Copyright (C) 2004-2014 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 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;
|
||||
|
||||
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.AdminChangeAccessLevel;
|
||||
import handlers.admincommandhandlers.AdminClan;
|
||||
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.AdminGeoEditor;
|
||||
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.AdminPForge;
|
||||
import handlers.admincommandhandlers.AdminPathNode;
|
||||
import handlers.admincommandhandlers.AdminPcCondOverride;
|
||||
import handlers.admincommandhandlers.AdminPetition;
|
||||
import handlers.admincommandhandlers.AdminPledge;
|
||||
import handlers.admincommandhandlers.AdminPolymorph;
|
||||
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.AdminShop;
|
||||
import handlers.admincommandhandlers.AdminShowQuests;
|
||||
import handlers.admincommandhandlers.AdminShutdown;
|
||||
import handlers.admincommandhandlers.AdminSiege;
|
||||
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.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.SupportBlessing;
|
||||
import handlers.bypasshandlers.SupportMagic;
|
||||
import handlers.bypasshandlers.TerritoryStatus;
|
||||
import handlers.bypasshandlers.TutorialClose;
|
||||
import handlers.bypasshandlers.VoiceCommand;
|
||||
import handlers.bypasshandlers.Wear;
|
||||
import handlers.chathandlers.ChatAll;
|
||||
import handlers.chathandlers.ChatAlliance;
|
||||
import handlers.chathandlers.ChatClan;
|
||||
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.ChatTell;
|
||||
import handlers.chathandlers.ChatTrade;
|
||||
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.BeastSoulShot;
|
||||
import handlers.itemhandlers.BeastSpiritShot;
|
||||
import handlers.itemhandlers.BlessedSpiritShot;
|
||||
import handlers.itemhandlers.Book;
|
||||
import handlers.itemhandlers.Bypass;
|
||||
import handlers.itemhandlers.Calculator;
|
||||
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.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.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.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.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.StatsVCmd;
|
||||
import handlers.voicedcommandhandlers.Wedding;
|
||||
|
||||
/**
|
||||
* 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,
|
||||
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,
|
||||
AdminGeoEditor.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,
|
||||
AdminPetition.class,
|
||||
AdminPForge.class,
|
||||
AdminPledge.class,
|
||||
AdminPolymorph.class,
|
||||
AdminPunishment.class,
|
||||
AdminQuest.class,
|
||||
AdminReload.class,
|
||||
AdminRepairChar.class,
|
||||
AdminRes.class,
|
||||
AdminRide.class,
|
||||
AdminScan.class,
|
||||
AdminShop.class,
|
||||
AdminShowQuests.class,
|
||||
AdminShutdown.class,
|
||||
AdminSiege.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
|
||||
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,
|
||||
SupportBlessing.class,
|
||||
SupportMagic.class,
|
||||
TerritoryStatus.class,
|
||||
TutorialClose.class,
|
||||
VoiceCommand.class,
|
||||
Wear.class,
|
||||
},
|
||||
{
|
||||
// Chat Handlers
|
||||
ChatAll.class,
|
||||
ChatAlliance.class,
|
||||
ChatClan.class,
|
||||
ChatHeroVoice.class,
|
||||
ChatParty.class,
|
||||
ChatPartyMatchRoom.class,
|
||||
ChatPartyRoomAll.class,
|
||||
ChatPartyRoomCommander.class,
|
||||
ChatPetition.class,
|
||||
ChatShout.class,
|
||||
ChatTell.class,
|
||||
ChatTrade.class,
|
||||
},
|
||||
{
|
||||
// Community Board
|
||||
ClanBoard.class,
|
||||
FavoriteBoard.class,
|
||||
FriendsBoard.class,
|
||||
HomeBoard.class,
|
||||
HomepageBoard.class,
|
||||
MailBoard.class,
|
||||
MemoBoard.class,
|
||||
RegionBoard.class,
|
||||
},
|
||||
{
|
||||
// Item Handlers
|
||||
BeastSoulShot.class,
|
||||
BeastSpiritShot.class,
|
||||
BlessedSpiritShot.class,
|
||||
Book.class,
|
||||
Bypass.class,
|
||||
Calculator.class,
|
||||
CharmOfCourage.class,
|
||||
Elixir.class,
|
||||
EnchantAttribute.class,
|
||||
EnchantScrolls.class,
|
||||
EventItem.class,
|
||||
ExtractableItems.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,
|
||||
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),
|
||||
},
|
||||
{
|
||||
// Target Handlers
|
||||
Area.class,
|
||||
AreaCorpseMob.class,
|
||||
AreaFriendly.class,
|
||||
AreaSummon.class,
|
||||
Aura.class,
|
||||
AuraCorpseMob.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,
|
||||
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...");
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user