123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644 |
- /*
- * 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.AdminMammon;
- 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.AdminTerritoryWar;
- 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.Festival;
- 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.Rift;
- 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.ChatBattlefield;
- 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.Disguise;
- 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.SevenSignsRecord;
- 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,
- AdminMammon.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,
- AdminTerritoryWar.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,
- Festival.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,
- Rift.class,
- SkillList.class,
- SupportBlessing.class,
- SupportMagic.class,
- TerritoryStatus.class,
- TutorialClose.class,
- VoiceCommand.class,
- Wear.class,
- },
- {
- // Chat Handlers
- ChatAll.class,
- ChatAlliance.class,
- ChatBattlefield.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,
- Disguise.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,
- SevenSignsRecord.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...");
- }
- }
|