diff --git a/TShockAPI/TShockAPI.csproj b/TShockAPI/TShockAPI.csproj index 2a137ee9..a7bd7b5c 100644 --- a/TShockAPI/TShockAPI.csproj +++ b/TShockAPI/TShockAPI.csproj @@ -117,7 +117,7 @@ - + True True diff --git a/TShockAPI/Utils.cs b/TShockAPI/Utils.cs index 77d967bc..55ded6c8 100644 --- a/TShockAPI/Utils.cs +++ b/TShockAPI/Utils.cs @@ -243,41 +243,38 @@ namespace TShockAPI } /// - /// Finds a TSPlayer based on name or id + /// Finds a TSPlayer based on name or ID /// - /// Player name + /// Player name or ID /// - public List FindPlayer(string ply) + public List FindPlayer(string plr) { var found = new List(); // Avoid errors caused by null search - if (null == ply) + if (plr == null) return found; - ply = ply.ToLower(); + + byte plrID; + if (byte.TryParse(plr, out plrID)) + { + TSPlayer player = TShock.Players[plrID]; + if (player.Active) + { + return new List { player }; + } + } + + string plrLower = plr.ToLower(); foreach (TSPlayer player in TShock.Players) { - if (player == null) - continue; - - try - { - if (Convert.ToInt32(ply) == player.Index && player.Active) - { - return new List { player }; - } - } -// ReSharper disable EmptyGeneralCatchClause - catch (Exception e) -// ReSharper restore EmptyGeneralCatchClause - { - // Conversion failed - } - - string name = player.Name.ToLower(); - if (name.Equals(ply)) - return new List {player}; - if (name.Contains(ply)) - found.Add(player); + if (player != null) + { + // Must be an EXACT match + if (player.Name == plr) + return new List { player }; + if (player.Name.ToLower().StartsWith(plrLower)) + found.Add(player); + } } return found; } @@ -366,30 +363,16 @@ namespace TShockAPI /// List of Items public List GetItemByName(string name) { - //Method #1 - must be exact match, allows support for different pickaxes/hammers/swords etc - for (int i = 1; i < Main.maxItemTypes; i++) - { - Item item = new Item(); - item.SetDefaults(name); - if (item.name == name) - return new List {item}; - } - //Method #2 - allows impartial matching var found = new List(); + Item item = new Item(); + string nameLower = name.ToLower(); for (int i = -24; i < Main.maxItemTypes; i++) { - try - { - Item item = new Item(); - item.netDefaults(i); - if (item.name.ToLower() == name.ToLower()) - return new List {item}; - if (item.name.ToLower().StartsWith(name.ToLower())) - found.Add(item); - } - catch - { - } + item.netDefaults(i); + if (item.name.ToLower() == nameLower) + return new List {item}; + if (item.name.ToLower().StartsWith(nameLower)) + found.Add(item); } return found; } @@ -477,15 +460,16 @@ namespace TShockAPI /// Matching list of buff ids public List GetBuffByName(string name) { + string nameLower = name.ToLower(); for (int i = 1; i < Main.maxBuffs; i++) { - if (Main.buffName[i].ToLower() == name) + if (Main.buffName[i].ToLower() == nameLower) return new List {i}; } var found = new List(); for (int i = 1; i < Main.maxBuffs; i++) { - if (Main.buffName[i].ToLower().StartsWith(name.ToLower())) + if (Main.buffName[i].ToLower().StartsWith(nameLower)) found.Add(i); } return found; @@ -518,32 +502,12 @@ namespace TShockAPI var found = new List(); for (int i = FirstItemPrefix; i <= LastItemPrefix; i++) { - try - { - item.prefix = (byte)i; - string trimmed = item.AffixName().Trim(); - if (trimmed == name) - { - // Exact match - found.Add(i); - return found; - } - else - { - string trimmedLower = trimmed.ToLower(); - if (trimmedLower == lowerName) - { - // Exact match (caseinsensitive) - found.Add(i); - return found; - } - else if (trimmedLower.StartsWith(lowerName)) // Partial match - found.Add(i); - } - } - catch - { - } + item.prefix = (byte)i; + string prefixName = item.AffixName().Trim().ToLower(); + if (prefixName == lowerName) + return new List() { i }; + else if (prefixName.StartsWith(lowerName)) // Partial match + found.Add(i); } return found; } @@ -650,9 +614,9 @@ namespace TShockAPI if (!silent) { if (string.IsNullOrWhiteSpace(adminUserName)) - Broadcast(string.Format("{0} was {1}kicked for {2}", playerName, verb, reason.ToLower())); + Broadcast(string.Format("{0} was {1}kicked for {2}", playerName, verb, reason.ToLower()), Color.Green); else - Broadcast(string.Format("{0} {1}kicked {2} for {3}", adminUserName, verb, playerName, reason.ToLower())); + Broadcast(string.Format("{0} {1}kicked {2} for {3}", adminUserName, verb, playerName, reason.ToLower()), Color.Green); } return true; }