From a5719052592f75f417ebea78a834099033e5952f Mon Sep 17 00:00:00 2001 From: UnknownShadow200 Date: Fri, 8 Apr 2016 09:26:19 +1000 Subject: [PATCH] Allow providing a reason for tempbans. --- Commands/Moderation/CmdTempBan.cs | 16 +++++++++++----- Player/Player.Handlers.cs | 6 ++++-- Server/Server.cs | 2 +- 3 files changed, 16 insertions(+), 8 deletions(-) diff --git a/Commands/Moderation/CmdTempBan.cs b/Commands/Moderation/CmdTempBan.cs index 5381ca5c1..7a6dd0089 100644 --- a/Commands/Moderation/CmdTempBan.cs +++ b/Commands/Moderation/CmdTempBan.cs @@ -26,10 +26,11 @@ namespace MCGalaxy.Commands { public override string type { get { return CommandTypes.Moderation; } } public override bool museumUsable { get { return true; } } public override LevelPermission defaultRank { get { return LevelPermission.AdvBuilder; } } + static char[] trimChars = {' '}; public override void Use(Player p, string message) { if (message == "") { Help(p); return; } - string[] args = message.Split(' '); + string[] args = message.Split(trimChars, 3); Player who = PlayerInfo.Find(args[0]); string target = who == null ? args[0] : who.name; @@ -48,15 +49,20 @@ namespace MCGalaxy.Commands { Server.TempBan tBan; tBan.name = target; - tBan.expiryTime = DateTime.Now.AddMinutes(minutes); + tBan.reason = args.Length > 2 ? args[2] : ""; + tBan.expiryTime = DateTime.UtcNow.AddMinutes(minutes); Server.tempBans.Add(tBan); - if (who != null) - who.Kick("Banned for " + minutes + " minutes!"); + + if (who != null) { + string reason = String.IsNullOrEmpty(tBan.reason) ? "" + : " - (" + tBan.reason + ")"; + who.Kick("Banned for " + minutes + " minutes!" + reason); + } Player.SendMessage(p, "Temp banned " + target + " for " + minutes + " minutes."); } public override void Help(Player p) { - Player.SendMessage(p, "/tempban - Bans for "); + Player.SendMessage(p, "/tempban [reason] - Bans for "); Player.SendMessage(p, "Max time is 1440 (1 day). Default is 60"); Player.SendMessage(p, "Temp bans will reset on server restart"); } diff --git a/Player/Player.Handlers.cs b/Player/Player.Handlers.cs index 909108ac4..0cb2d7d7b 100644 --- a/Player/Player.Handlers.cs +++ b/Player/Player.Handlers.cs @@ -309,10 +309,12 @@ namespace MCGalaxy { try { Server.TempBan tBan = Server.tempBans.Find(tB => tB.name.ToLower() == name.ToLower()); - if (tBan.expiryTime < DateTime.Now) { + if (tBan.expiryTime < DateTime.UtcNow) { Server.tempBans.Remove(tBan); } else { - Kick("You're still banned (temporary ban)!", true); + string reason = String.IsNullOrEmpty(tBan.reason) ? "" : + " (" + tBan.reason + ")"; + Kick("You're still temp banned!" + reason, true); } } catch { } diff --git a/Server/Server.cs b/Server/Server.cs index 857ad4244..1cf963f3c 100644 --- a/Server/Server.cs +++ b/Server/Server.cs @@ -115,7 +115,7 @@ namespace MCGalaxy public static List Opstats { get { return new List(opstats); } } public static List tempBans = new List(); - public struct TempBan { public string name; public DateTime expiryTime; } + public struct TempBan { public string name, reason; public DateTime expiryTime; } public static PerformanceCounter PCCounter = null; public static PerformanceCounter ProcessCounter = null;