diff --git a/CHANGELOG.md b/CHANGELOG.md
index c5b80940..083462ba 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -24,6 +24,7 @@ This is the rolling changelog for TShock for Terraria. Use past tense when addin
* SetDefaultsEventArgs now includes a nullable ItemVariant instance. (@SignatureBeef)
* Use a string interpolation and escape single quotes when escaping tables (@drunderscore)
* Removed obsolete resource files `TShockAPI/Resources.resx` and `TShockAPI/Resources.Designer.cs`. (@Arthri)
+* Fixed hardcore and mediumcore not banning on death when settings are enabled. This also alters the TSPlayer.Ban method to remove the force option which is no longer needed. (@SignatureBeef)
* Plugins and ./bin dependencies are now loaded relative to the launcher, this improves the use of startup files (@SignatureBeef)
## TShock 4.5.18
diff --git a/TShockAPI/GetDataHandlers.cs b/TShockAPI/GetDataHandlers.cs
index ace40b78..476c42e3 100644
--- a/TShockAPI/GetDataHandlers.cs
+++ b/TShockAPI/GetDataHandlers.cs
@@ -4157,7 +4157,7 @@ namespace TShockAPI
if (shouldBan)
{
- if (!args.Player.Ban(banReason, false, "TShock"))
+ if (!args.Player.Ban(banReason, "TShock"))
{
TShock.Log.ConsoleDebug("GetDataHandlers / HandlePlayerKillMeV2 kicked with difficulty {0} {1}", args.Player.Name, args.TPlayer.difficulty);
args.Player.Kick("You died! Normally, you'd be banned.", true, true);
diff --git a/TShockAPI/TSPlayer.cs b/TShockAPI/TSPlayer.cs
index 194d11f0..15001757 100644
--- a/TShockAPI/TSPlayer.cs
+++ b/TShockAPI/TSPlayer.cs
@@ -1701,30 +1701,26 @@ namespace TShockAPI
/// Bans and disconnects the player from the server.
///
/// The reason to be displayed to the server.
- /// If the ban should bypass immunity to ban checks.
/// The player who initiated the ban.
- public bool Ban(string reason, bool force = false, string adminUserName = null)
+ public bool Ban(string reason, string adminUserName = null)
{
if (!ConnectionAlive)
return true;
- if (force)
- {
- TShock.Bans.InsertBan($"{Identifier.IP}{IP}", reason, adminUserName, DateTime.UtcNow, DateTime.MaxValue);
- TShock.Bans.InsertBan($"{Identifier.UUID}{UUID}", reason, adminUserName, DateTime.UtcNow, DateTime.MaxValue);
- if (Account != null)
- {
- TShock.Bans.InsertBan($"{Identifier.Account}{Account.Name}", reason, adminUserName, DateTime.UtcNow, DateTime.MaxValue);
- }
- Disconnect(string.Format("Banned: {0}", reason));
- string verb = force ? "force " : "";
- if (string.IsNullOrWhiteSpace(adminUserName))
- TSPlayer.All.SendInfoMessage("{0} was {1}banned for '{2}'.", Name, verb, reason);
- else
- TSPlayer.All.SendInfoMessage("{0} {1}banned {2} for '{3}'.", adminUserName, verb, Name, reason);
- return true;
+ TShock.Bans.InsertBan($"{Identifier.IP}{IP}", reason, adminUserName, DateTime.UtcNow, DateTime.MaxValue);
+ TShock.Bans.InsertBan($"{Identifier.UUID}{UUID}", reason, adminUserName, DateTime.UtcNow, DateTime.MaxValue);
+ if (Account != null)
+ {
+ TShock.Bans.InsertBan($"{Identifier.Account}{Account.Name}", reason, adminUserName, DateTime.UtcNow, DateTime.MaxValue);
}
- return false;
+
+ Disconnect(string.Format("Banned: {0}", reason));
+
+ if (string.IsNullOrWhiteSpace(adminUserName))
+ TSPlayer.All.SendInfoMessage("{0} was banned for '{1}'.", Name, reason);
+ else
+ TSPlayer.All.SendInfoMessage("{0} banned {1} for '{2}'.", adminUserName, Name, reason);
+ return true;
}
///