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;