diff --git a/TShockAPI/BanManager.cs b/TShockAPI/BanManager.cs index f62883ca..f7c615e0 100644 --- a/TShockAPI/BanManager.cs +++ b/TShockAPI/BanManager.cs @@ -80,7 +80,7 @@ namespace TShockAPI var namecol = casesensitive ? "Name" : "UPPER(Name)"; if (!casesensitive) name = name.ToUpper(); - com.CommandText = "SELECT *, COUNT(*) FROM Bans WHERE " + namecol + "=@name LIMIT 5"; + com.CommandText = "SELECT * FROM Bans WHERE " + namecol + "=@name"; AddParameter(com, "@name", name); using (var reader = com.ExecuteReader()) { @@ -132,6 +132,22 @@ namespace TShockAPI } return false; } + public bool ClearBans() + { + try + { + using (var com = database.CreateCommand()) + { + com.CommandText = "DELETE FROM Bans"; + com.ExecuteNonQuery(); + return true; + } + } + catch (SqliteExecutionException ex) + { + } + return false; + } } public class Ban diff --git a/TShockAPI/Commands.cs b/TShockAPI/Commands.cs index 0fa33de0..c666e8a3 100755 --- a/TShockAPI/Commands.cs +++ b/TShockAPI/Commands.cs @@ -112,6 +112,7 @@ namespace TShockAPI ChatCommands.Add(new Command("ban", BanIP, "banip")); ChatCommands.Add(new Command("unban", UnBan, "unban")); ChatCommands.Add(new Command("unban", UnBanIP, "unbanip")); + ChatCommands.Add(new Command("maintenance", ClearBans, "clearbans")); ChatCommands.Add(new Command("whitelist", Whitelist, "whitelist")); ChatCommands.Add(new Command("maintenance", Off, "off")); ChatCommands.Add(new Command("maintenance", OffNoSave, "off-nosave")); @@ -467,6 +468,47 @@ namespace TShockAPI } } + static int ClearBansCode = -1; + private static void ClearBans(CommandArgs args) + { + if (args.Parameters.Count < 1 && ClearBansCode == -1) + { + ClearBansCode = new Random().Next(0, short.MaxValue); + args.Player.SendMessage("ClearBans Code: " + ClearBansCode, Color.Red); + return; + } + if (args.Parameters.Count < 1) + { + args.Player.SendMessage("Invalid syntax! Proper syntax: /clearbans "); + return; + } + + int num; + if (!int.TryParse(args.Parameters[0], out num)) + { + args.Player.SendMessage("Invalid syntax! Expecting number"); + return; + } + + if (num == ClearBansCode) + { + ClearBansCode = -1; + if (TShock.Bans.ClearBans()) + { + Log.ConsoleInfo("Bans cleared"); + args.Player.SendMessage("Bans cleared"); + } + else + { + args.Player.SendMessage("Failed to clear bans"); + } + } + else + { + args.Player.SendMessage("Incorrect clear code"); + } + } + private static void UnBanIP(CommandArgs args) { if (args.Parameters.Count < 1) diff --git a/TShockAPI/Tools.cs b/TShockAPI/Tools.cs index 7392b8db..5963829c 100755 --- a/TShockAPI/Tools.cs +++ b/TShockAPI/Tools.cs @@ -29,7 +29,7 @@ namespace TShockAPI { internal class Tools { - private static Random random = new Random(); + public static Random Random = new Random(); private static List groups = new List(); /// @@ -191,8 +191,8 @@ namespace TShockAPI break; } - tileX = startTileX + random.Next(tileXRange * -1, tileXRange); - tileY = startTileY + random.Next(tileYRange * -1, tileYRange); + tileX = startTileX + Random.Next(tileXRange * -1, tileXRange); + tileY = startTileY + Random.Next(tileYRange * -1, tileYRange); j++; } while (TileValid(tileX, tileY) && !TileClear(tileX, tileY));