diff --git a/TShockAPI/TSPlayer.cs b/TShockAPI/TSPlayer.cs index c7a546b4..c5ed9371 100755 --- a/TShockAPI/TSPlayer.cs +++ b/TShockAPI/TSPlayer.cs @@ -875,13 +875,23 @@ namespace TShockAPI } } - var trace = new StackTrace(); - StackFrame frame = null; - frame = trace.GetFrame(1); - if (frame != null && frame.GetMethod().DeclaringType != null) - TShock.Log.Debug(frame.GetMethod().DeclaringType.Name + " called Disable()."); + /* + * Calling new StackTrace() is incredibly expensive, and must be disabled + * in release builds. Use a conditional call instead. + */ + LogStackFrame(); } + [Conditional("DEBUG")] + private void LogStackFrame() + { + var trace = new StackTrace(); + StackFrame frame = null; + frame = trace.GetFrame(1); + if (frame != null && frame.GetMethod().DeclaringType != null) + TShock.Log.Debug(frame.GetMethod().DeclaringType.Name + " called Disable()."); + } + public virtual void Whoopie(object time) { var time2 = (int) time; diff --git a/TShockAPI/TShock.cs b/TShockAPI/TShock.cs index eaf38a5e..ecf16a75 100755 --- a/TShockAPI/TShock.cs +++ b/TShockAPI/TShock.cs @@ -966,7 +966,7 @@ namespace TShockAPI { if (CheckIgnores(player)) { - player.Disable("not being logged in while SSC is enabled", flags); + player.Disable(flags: flags); } else if (Itembans.ItemIsBanned(player.TPlayer.inventory[player.TPlayer.selectedItem].name, player)) { @@ -1046,7 +1046,7 @@ namespace TShockAPI if (CheckIgnores(player)) { - player.Disable("check ignores failed in OnSecondUpdate()", flags); + player.Disable(flags: flags); } else if (Itembans.ItemIsBanned(player.TPlayer.inventory[player.TPlayer.selectedItem].name, player)) {