コード例 #1
0
        public void RemoveHooks(BasePlugin plugin)
        {
            if (plugin.State != PluginState.Loaded)
            {
                return;
            }

            foreach (string method in plugin.Globals)
            {
                if (HookNames.Contains(method))
                {
                    Logger.LogDebug($"[{plugin.Type}] Removing hook: {plugin.Name}.{method}");

                    switch (method)
                    {
                    case "On_ServerInit":
                        Hooks.OnServerInit -= new Hooks.ServerInitDelegate(plugin.OnServerInit);
                        break;

                    case "On_ServerShutdown":
                        Hooks.OnServerShutdown -= new Hooks.ServerShutdownDelegate(plugin.OnServerShutdown);
                        break;

                    case "On_ItemsLoaded":
                        Hooks.OnItemsLoaded -= new Hooks.ItemsDatablocksLoaded(plugin.OnItemsLoaded);
                        break;

                    case "On_TablesLoaded":
                        Hooks.OnTablesLoaded -= new Hooks.LootTablesLoaded(plugin.OnTablesLoaded);
                        break;

                    case "On_Chat":
                        Hooks.OnChat -= new Hooks.ChatHandlerDelegate(plugin.OnChat);
                        break;

                    case "On_Console":
                        Hooks.OnConsoleReceived -= plugin.OnConsole;
                        break;

                    case "On_Command":
                        Hooks.OnCommand -= new Hooks.CommandHandlerDelegate(plugin.OnCommand);
                        break;

                    case "On_PlayerConnected":
                        Hooks.OnPlayerConnected -=
                            new Hooks.ConnectionHandlerDelegate(plugin.OnPlayerConnected);
                        break;

                    case "On_PlayerDisconnected":
                        Hooks.OnPlayerDisconnected -=
                            new Hooks.DisconnectionHandlerDelegate(plugin.OnPlayerDisconnected);
                        break;

                    case "On_PlayerKilled":
                        Hooks.OnPlayerKilled -= new Hooks.KillHandlerDelegate(plugin.OnPlayerKilled);
                        break;

                    case "On_PlayerHurt":
                        Hooks.OnPlayerHurt -= new Hooks.HurtHandlerDelegate(plugin.OnPlayerHurt);
                        break;

                    case "On_PlayerSpawn":
                        Hooks.OnPlayerSpawning -= new Hooks.PlayerSpawnHandlerDelegate(plugin.OnPlayerSpawn);
                        break;

                    case "On_PlayerSpawned":
                        Hooks.OnPlayerSpawned -= new Hooks.PlayerSpawnHandlerDelegate(plugin.OnPlayerSpawned);
                        break;

                    case "On_PlayerGathering":
                        Hooks.OnPlayerGathering -=
                            new Hooks.PlayerGatheringHandlerDelegate(plugin.OnPlayerGathering);
                        break;

                    case "On_EntityHurt":
                        Hooks.OnEntityHurt -= new Hooks.EntityHurtDelegate(plugin.OnEntityHurt);
                        break;

                    case "On_EntityDecay":
                        Hooks.OnEntityDecay -= new Hooks.EntityDecayDelegate(plugin.OnEntityDecay);
                        break;

                    case "On_EntityDestroyed":
                        Hooks.OnEntityDestroyed -= new Hooks.EntityDestroyedDelegate(plugin.OnEntityDestroyed);
                        break;

                    case "On_EntityDeployed":
                        Hooks.OnEntityDeployedWithPlacer -=
                            new Hooks.EntityDeployedWithPlacerDelegate(plugin.OnEntityDeployed);
                        break;

                    case "On_NPCHurt":
                        Hooks.OnNPCHurt -= new Hooks.HurtHandlerDelegate(plugin.OnNPCHurt);
                        break;

                    case "On_NPCKilled":
                        Hooks.OnNPCKilled -= new Hooks.KillHandlerDelegate(plugin.OnNPCKilled);
                        break;

                    case "On_BlueprintUse":
                        Hooks.OnBlueprintUse -= new Hooks.BlueprintUseHandlerDelegate(plugin.OnBlueprintUse);
                        break;

                    case "On_DoorUse":
                        Hooks.OnDoorUse -= new Hooks.DoorOpenHandlerDelegate(plugin.OnDoorUse);
                        break;

                    case "On_AllPluginsLoaded":
                        Hooks.OnAllPluginsLoaded -=
                            new Hooks.AllPluginsLoadedDelegate(plugin.OnAllPluginsLoaded);
                        break;

                    case "On_PlayerTeleport":
                        Hooks.OnPlayerTeleport -= new Hooks.TeleportDelegate(plugin.OnPlayerTeleport);
                        break;

                    //case "On_PluginInit": plugin.Invoke("On_PluginInit", new object[0]); break;
                    case "On_Crafting":
                        Hooks.OnCrafting -= new Hooks.CraftingDelegate(plugin.OnCrafting);
                        break;

                    case "On_ResourceSpawn":
                        Hooks.OnResourceSpawned -= new Hooks.ResourceSpawnDelegate(plugin.OnResourceSpawned);
                        break;

                    case "On_ItemAdded":
                        Hooks.OnItemAdded -= new Hooks.ItemAddedDelegate(plugin.OnItemAdded);
                        break;

                    case "On_ItemRemoved":
                        Hooks.OnItemRemoved -= new Hooks.ItemRemovedDelegate(plugin.OnItemRemoved);
                        break;

                    case "On_Airdrop":
                        Hooks.OnAirdropCalled -= new Hooks.AirdropDelegate(plugin.OnAirdrop);
                        break;

                    //case "On_AirdropCrateDropped": Hooks.OnAirdropCrateDropped -= new Hooks.AirdropCrateDroppedDelegate(plugin.OnAirdropCrateDropped); break;
                    case "On_SteamDeny":
                        Hooks.OnSteamDeny -= new Hooks.SteamDenyDelegate(plugin.OnSteamDeny);
                        break;

                    case "On_PlayerApproval":
                        Hooks.OnPlayerApproval -= new Hooks.PlayerApprovalDelegate(plugin.OnPlayerApproval);
                        break;

                    case "On_Research":
                        Hooks.OnResearch -= new Hooks.ResearchDelegate(plugin.OnResearch);
                        break;

                    case "On_ServerSaved":
                        Hooks.OnServerSaved -= new Hooks.ServerSavedDelegate(plugin.OnServerSaved);
                        break;

                    case "On_VoiceChat":
                        Hooks.OnShowTalker -= new Hooks.ShowTalkerDelegate(plugin.OnShowTalker);
                        break;

                    case "On_ItemPickup":
                        Hooks.OnItemPickup -= new Hooks.ItemPickupDelegate(plugin.OnItemPickup);
                        break;

                    case "On_FallDamage":
                        Hooks.OnFallDamage -= new Hooks.FallDamageDelegate(plugin.OnFallDamage);
                        break;

                    case "On_LootUse":
                        Hooks.OnLootUse -= new Hooks.LootEnterDelegate(plugin.OnLootUse);
                        break;

                    case "On_PlayerBan":
                        Hooks.OnPlayerBan -= new Hooks.BanEventDelegate(plugin.OnBanEvent);
                        break;

                    case "On_RepairBench":
                        Hooks.OnRepairBench -= new Hooks.RepairBenchEventDelegate(plugin.OnRepairBench);
                        break;

                    case "On_ItemMove":
                        Hooks.OnItemMove -= new Hooks.ItemMoveEventDelegate(plugin.OnItemMove);
                        break;

                    case "On_GenericSpawnLoad":
                        Hooks.OnGenericSpawnerLoad -=
                            new Hooks.GenericSpawnerLoadDelegate(plugin.OnGenericSpawnLoad);
                        break;

                    case "On_ServerLoaded":
                        Hooks.OnServerLoaded -= new Hooks.ServerLoadedDelegate(plugin.OnServerLoaded);
                        break;

                    case "On_SupplySignalExploded":
                        Hooks.OnSupplySignalExpode -=
                            new Hooks.SupplySignalDelegate(plugin.OnSupplySignalExploded);
                        break;

                    case "On_PlayerMove":
                        if (plugin.Type == PluginType.CSharp || plugin.Type == PluginType.CSScript)
                        {
                            Hooks.OnPlayerMove -= new Hooks.PlayerMoveDelegate(plugin.OnPlayerMove);
                        }
                        break;

                    case "On_BeltUse":
                        Hooks.OnBeltUse -= new Hooks.BeltUseDelegate(plugin.OnBeltUse);
                        break;
                    }
                }

                if (plugin.Globals.Contains("On_PluginShutdown"))
                {
                    plugin.OnPluginShutdown();
                }
            }
        }