public override void Load(bool startup) { command = new CmdCustomModel(); Command.Register(command); OnPlayerConnectEvent.Register(OnPlayerConnect, Priority.Low); OnPlayerDisconnectEvent.Register(OnPlayerDisconnect, Priority.Low); OnJoiningLevelEvent.Register(OnJoiningLevel, Priority.Low); OnJoinedLevelEvent.Register(OnJoinedLevel, Priority.Low); OnSendingModelEvent.Register(OnSendingModel, Priority.Low); OnPlayerCommandEvent.Register(OnPlayerCommand, Priority.Low); // OnEntitySpawnedEvent.Register(OnEntitySpawned, Priority.Low); Directory.CreateDirectory(PublicModelsDirectory); Directory.CreateDirectory(PersonalModelsDirectory); int numModels = CreateMissingCCModels(false); int numPersonalModels = CreateMissingCCModels(true); Logger.Log( LogType.SystemActivity, "CustomModels Loaded with {0} Models and {1} Personal Models", numModels, numPersonalModels ); // initialize because of a late plugin load foreach (Player p in PlayerInfo.Online.Items) { SentCustomModels.TryAdd(p.name, new HashSet <string>(StringComparer.OrdinalIgnoreCase)); ModelNameToIdForPlayer.TryAdd(p.name, new ConcurrentDictionary <string, byte>(StringComparer.OrdinalIgnoreCase)); } }
public override void Unload(bool shutdown) { SentCustomModels.Clear(); ModelNameToIdForPlayer.Clear(); OnPlayerConnectEvent.Unregister(OnPlayerConnect); OnPlayerDisconnectEvent.Unregister(OnPlayerDisconnect); OnJoiningLevelEvent.Unregister(OnJoiningLevel); OnJoinedLevelEvent.Unregister(OnJoinedLevel); OnSendingModelEvent.Unregister(OnSendingModel); OnPlayerCommandEvent.Unregister(OnPlayerCommand); // OnEntitySpawnedEvent.Unregister(OnEntitySpawned); if (command != null) { Command.Unregister(command); command = null; } }