diff --git a/TShockAPI/Commands.cs b/TShockAPI/Commands.cs index c48abe6e..5ba4201e 100644 --- a/TShockAPI/Commands.cs +++ b/TShockAPI/Commands.cs @@ -1945,9 +1945,12 @@ namespace TShockAPI args.Player.SendMessage("Missing item name/id", Color.Red); return; } - int itemAmount = 0; - int.TryParse( args.Parameters[args.Parameters.Count - 1 ], out itemAmount ); var items = Tools.GetItemByIdOrName(args.Parameters[0]); + args.Parameters.RemoveAt(0); + int itemAmount = 0; + if( args.Parameters.Count > 0 ) + int.TryParse( args.Parameters[0], out itemAmount ); + if (items.Count == 0) { args.Player.SendMessage("Invalid item type!", Color.Red); @@ -1998,8 +2001,13 @@ namespace TShockAPI return; } int itemAmount = 0; - int.TryParse(args.Parameters[args.Parameters.Count - 1], out itemAmount); var items = Tools.GetItemByIdOrName(args.Parameters[0]); + args.Parameters.RemoveAt(0); + string plStr = args.Parameters[0]; + args.Parameters.RemoveAt(0); + if( args.Parameters.Count > 0 ) + int.TryParse(args.Parameters[args.Parameters.Count - 1], out itemAmount); + if (items.Count == 0) { @@ -2014,7 +2022,6 @@ namespace TShockAPI var item = items[0]; if (item.type >= 1 && item.type < Main.maxItemTypes) { - string plStr = args.Parameters[1]; var players = Tools.FindPlayer(plStr); if (players.Count == 0) { diff --git a/TShockAPI/DB/ItemManager.cs b/TShockAPI/DB/ItemManager.cs index 91bd66d9..3f3e985c 100644 --- a/TShockAPI/DB/ItemManager.cs +++ b/TShockAPI/DB/ItemManager.cs @@ -36,7 +36,7 @@ namespace TShockAPI.DB String line; while ((line = sr.ReadLine()) != null) { - if (!line.Equals("") && !line.Substring( 0, 1 ).Equals("#") ) + if (!line.Equals("") && !line.Substring(0, 1).Equals("#")) { if (TShock.Config.StorageType.ToLower() == "sqlite") com.CommandText = "INSERT OR IGNORE INTO 'ItemBans' (ItemName) VALUES (@name);"; @@ -44,8 +44,8 @@ namespace TShockAPI.DB com.CommandText = "INSERT IGNORE INTO ItemBans SET ItemName=@name;"; int id = 0; - int.TryParse(line, out id ); - com.AddParameter("@name", Tools.GetItemById( id ).name ); + int.TryParse(line, out id); + com.AddParameter("@name", Tools.GetItemById(id).name); com.ExecuteNonQuery(); com.Parameters.Clear(); } @@ -60,19 +60,25 @@ namespace TShockAPI.DB File.Delete(file2); File.Move(file, file2); } + } + UpdateItemBans(); + } + + public void UpdateItemBans() + { + ItemBans.Clear(); + using (var com = database.CreateCommand()) + { com.CommandText = "SELECT * FROM ItemBans"; using (var reader = com.ExecuteReader()) { - while (reader.Read()) + while (reader!=null&&reader.Read()) ItemBans.Add(reader.Get("ItemName")); - - reader.Close(); } } } - public void AddNewBan(string itemname = "") { try @@ -82,6 +88,7 @@ namespace TShockAPI.DB com.CommandText = "INSERT INTO ItemBans (ItemName) VALUES (@itemname);"; com.AddParameter("@itemname", Tools.GetItemByName(itemname)[0].name); com.ExecuteNonQuery(); + ItemBans.Add(itemname); } } catch (Exception ex) @@ -99,6 +106,7 @@ namespace TShockAPI.DB com.CommandText = "DELETE FROM ItemBans WHERE ItemName=@itemname;"; com.AddParameter("@itemname", Tools.GetItemByName(itemname)[0].name); com.ExecuteNonQuery(); + ItemBans.Remove(itemname); } } catch (Exception ex) diff --git a/TShockAPI/TShockAPI.csproj b/TShockAPI/TShockAPI.csproj index 6cef2940..7f1be464 100644 --- a/TShockAPI/TShockAPI.csproj +++ b/TShockAPI/TShockAPI.csproj @@ -162,7 +162,7 @@ - +