diff --git a/TShockAPI/Commands.cs b/TShockAPI/Commands.cs index 436ae4ee..29923559 100755 --- a/TShockAPI/Commands.cs +++ b/TShockAPI/Commands.cs @@ -786,7 +786,7 @@ namespace TShockAPI string reason = args.Parameters.Count > 1 ? String.Join(" ", args.Parameters.GetRange(1, args.Parameters.Count - 1)) : "Misbehaviour."; - if (!TShock.Utils.Kick(players[0], reason)) + if (!TShock.Utils.Kick(players[0], reason, !args.Player.RealPlayer, false, args.Player.Name)) { args.Player.SendMessage("You can't kick another admin!", Color.Red); } @@ -833,7 +833,7 @@ namespace TShockAPI string reason = args.Parameters.Count > 1 ? String.Join(" ", args.Parameters.GetRange(1, args.Parameters.Count - 1)) : "Misbehaviour."; - if (!TShock.Utils.Ban(players[0], reason)) + if (!TShock.Utils.Ban(players[0], reason, !args.Player.RealPlayer, args.Player.Name)) { args.Player.SendMessage("You can't ban another admin!", Color.Red); } diff --git a/TShockAPI/Utils.cs b/TShockAPI/Utils.cs index ca28491f..d5caa544 100644 --- a/TShockAPI/Utils.cs +++ b/TShockAPI/Utils.cs @@ -535,21 +535,10 @@ namespace TShockAPI /// /// int player /// string reason - public void ForceKick(TSPlayer player, string reason) + /// bool silent (default: false) + public void ForceKick(TSPlayer player, string reason, bool silent = false) { - if (!player.ConnectionAlive) - return; - player.Disconnect(reason); - Log.ConsoleInfo(string.Format("{0} was force kicked for : {1}", player.IP, reason)); - } - - public void ForceKick(TSPlayer player, string reason, bool silent) - { - player.SilentKickInProgress = true; - if (!player.ConnectionAlive) - return; - player.Disconnect(reason); - Log.ConsoleInfo(string.Format("{0} was force kicked for : {1}", player.IP, reason)); + Kick(player, reason, true, silent); } /// @@ -557,19 +546,24 @@ namespace TShockAPI /// /// int player /// string reason - public bool Kick(TSPlayer player, string reason, string adminUserName = "") + /// bool force (default: false) + /// bool silent (default: false) + /// bool silent (default: null) + public bool Kick(TSPlayer player, string reason, bool force = false, bool silent = false, string adminUserName = null) { if (!player.ConnectionAlive) return true; - if (!player.Group.HasPermission(Permissions.immunetokick)) + if (force || !player.Group.HasPermission(Permissions.immunetokick)) { string playerName = player.Name; + player.SilentKickInProgress = silent; player.Disconnect(string.Format("Kicked: {0}", reason)); Log.ConsoleInfo(string.Format("Kicked {0} for : {1}", playerName, reason)); - if (adminUserName.Length == 0) - Broadcast(string.Format("{0} was kicked for {1}", playerName, reason.ToLower())); + string verb = force ? "force " : ""; + if (string.IsNullOrWhiteSpace(adminUserName)) + Broadcast(string.Format("{0} was {1}kicked for {2}", playerName, verb, reason.ToLower())); else - Broadcast(string.Format("{0} kicked {1} for {2}", adminUserName, playerName, reason.ToLower())); + Broadcast(string.Format("{0} {1}kicked {2} for {3}", adminUserName, verb, playerName, reason.ToLower())); return true; } return false; @@ -580,21 +574,24 @@ namespace TShockAPI /// /// int player /// string reason - public bool Ban(TSPlayer player, string reason, string adminUserName = "") + /// bool force (default: false) + /// bool silent (default: null) + public bool Ban(TSPlayer player, string reason, bool force = false, string adminUserName = null) { if (!player.ConnectionAlive) return true; - if (!player.Group.HasPermission(Permissions.immunetoban)) + if (force || !player.Group.HasPermission(Permissions.immunetoban)) { string ip = player.IP; string playerName = player.Name; TShock.Bans.AddBan(ip, playerName, reason); player.Disconnect(string.Format("Banned: {0}", reason)); Log.ConsoleInfo(string.Format("Banned {0} for : {1}", playerName, reason)); - if (adminUserName.Length == 0) - Broadcast(string.Format("{0} was banned for {1}", playerName, reason.ToLower())); + string verb = force ? "force " : ""; + if (string.IsNullOrWhiteSpace(adminUserName)) + Broadcast(string.Format("{0} was {1}banned for {1}", playerName, verb, reason.ToLower())); else - Broadcast(string.Format("{0} banned {1} for {2}", adminUserName, playerName, reason.ToLower())); + Broadcast(string.Format("{0} {1}banned {1} for {2}", adminUserName, verb, playerName, reason.ToLower())); return true; } return false;