diff --git a/TShockAPI/ConfigurationManager.cs b/TShockAPI/ConfigurationManager.cs
index 93fa6fa7..2b06d766 100644
--- a/TShockAPI/ConfigurationManager.cs
+++ b/TShockAPI/ConfigurationManager.cs
@@ -17,7 +17,6 @@ namespace TShockAPI
public static bool infiniteInvasion;
public static bool permaPvp;
public static int killCount;
- public static bool startedInvasion;
public static bool kickCheater = true;
public static bool banCheater = true;
public static bool kickGriefer = true;
diff --git a/TShockAPI/TShock.cs b/TShockAPI/TShock.cs
index 6bc85336..7f28b468 100644
--- a/TShockAPI/TShock.cs
+++ b/TShockAPI/TShock.cs
@@ -840,8 +840,11 @@ namespace TShockAPI
public static void Ban(int plr, string reason = "")
{
- Tools.Kick(plr, reason);
- Bans.AddBan(Tools.GetPlayerIP(plr), Main.player[plr].name, reason);
+ if (!players[plr].group.HasPermission("immunetoban"))
+ {
+ Tools.Kick(plr,"Banned: " + reason);
+ Bans.AddBan(Tools.GetPlayerIP(plr), Main.player[plr].name, reason);
+ }
}
public class Position
diff --git a/TShockAPI/Tools.cs b/TShockAPI/Tools.cs
index 2a2bee95..513e3961 100644
--- a/TShockAPI/Tools.cs
+++ b/TShockAPI/Tools.cs
@@ -215,9 +215,12 @@ namespace TShockAPI
/// string reason
public static void Kick(int ply, string reason)
{
- string displayName = FindPlayer(ply).Equals("") ? GetPlayerIP(ply) : FindPlayer(ply);
- NetMessage.SendData(0x2, ply, -1, reason, 0x0, 0f, 0f, 0f);
- Log.Info("Kicked " + displayName + " for : " + reason);
+ if (!TShock.players[ply].group.HasPermission("immunetokick") || reason.Contains("Banned: "))
+ {
+ string displayName = FindPlayer(ply).Equals("") ? GetPlayerIP(ply) : FindPlayer(ply);
+ NetMessage.SendData(0x2, ply, -1, reason, 0x0, 0f, 0f, 0f);
+ Log.Info("Kicked " + displayName + " for : " + reason);
+ }
}
///