diff --git a/TShockAPI/ConfigFile.cs b/TShockAPI/ConfigFile.cs index 50135090..98b9bd21 100644 --- a/TShockAPI/ConfigFile.cs +++ b/TShockAPI/ConfigFile.cs @@ -192,6 +192,9 @@ namespace TShockAPI [Description("Disable/Revert a player if they exceed this number of tile places within 1 second.")] public int TilePlaceThreshold = 20; + + [Description("Require all players to register or login before being allowed to play.")] + public bool RequireLogin = false; public static ConfigFile Read(string path) { diff --git a/TShockAPI/GetDataHandlers.cs b/TShockAPI/GetDataHandlers.cs index 38c4dcd0..7ddba6a0 100644 --- a/TShockAPI/GetDataHandlers.cs +++ b/TShockAPI/GetDataHandlers.cs @@ -605,6 +605,10 @@ namespace TShockAPI { args.Player.SendMessage("You have been disabled for cheating! Please login with a new character!", Color.Red); } + else if (TShock.Config.RequireLogin && !args.Player.IsLoggedIn) + { + args.Player.SendMessage("Please /register or /login to play!", Color.Red); + } else if (args.Player.IgnoreActionsForInventory) { args.Player.SendMessage("Server Side Inventory is enabled! Please /register or /login to play!", Color.Red); diff --git a/TShockAPI/TShock.cs b/TShockAPI/TShock.cs index bf68d226..7489e028 100644 --- a/TShockAPI/TShock.cs +++ b/TShockAPI/TShock.cs @@ -728,17 +728,26 @@ namespace TShockAPI NetMessage.syncPlayers(); - if (Config.ServerSideInventory && !player.IsLoggedIn) + if (Config.RequireLogin) + { + player.SendMessage("Please /register or /login to play!", Color.Red); + } + else if (Config.ServerSideInventory) { - player.IgnoreActionsForInventory = true; player.SendMessage("Server Side Inventory is enabled! Please /register or /login to play!", Color.Red); } - if (TShock.Config.PvPMode == "always" && !player.TPlayer.hostile) + if (Config.ServerSideInventory) + { + player.IgnoreActionsForInventory = true; + } + + if (Config.PvPMode == "always" && !player.TPlayer.hostile) { player.IgnoreActionsForPvP = true; player.SendMessage("PvP is forced! Enable PvP else you can't move or do anything!", Color.Red); } + if (player.Group.HasPermission(Permissions.causeevents) && Config.InfiniteInvasion) { StartInvasion(); @@ -1177,6 +1186,8 @@ namespace TShockAPI check = true; if (player.IgnoreActionsForCheating) check = true; + if (!player.IsLoggedIn && Config.RequireLogin) + check = true; return check; }