public static PlayerInfo AddFakeEntry([NotNull] string name, RankChangeType rankChangeType) { if (name == null) { throw new ArgumentNullException("name"); } CheckIfLoaded(); PlayerInfo info; lock ( AddLocker ) { info = Trie.Get(name); if (info != null) { throw new ArgumentException("A PlayerDB entry already exists for this name.", "name"); } var e = new PlayerInfoCreatingEventArgs(name, IPAddress.None, RankManager.DefaultRank, true); PlayerInfo.RaiseCreatingEvent(e); if (e.Cancel) { throw new OperationCanceledException("Cancelled by a plugin."); } info = new PlayerInfo(name, e.StartingRank, false, rankChangeType); list.Add(info); Trie.Add(info.Name, info); UpdateCache(); } PlayerInfo.RaiseCreatedEvent(info, false); return(info); }
/// <summary> Finds player by exact name. </summary> /// <param name="fullName"> Full, case-insensitive name of the player. </param> /// <returns> PlayerInfo if player was found, or null if not found. </returns> public PlayerInfo FindExact(string fullName) { if (fullName == null) { throw new ArgumentNullException("fullName"); } lock (trie.SyncRoot) { return(trie.Get(fullName)); } }