diff --git a/CHANGELOG.md b/CHANGELOG.md index a49e14ed..5dcb0f60 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -16,6 +16,8 @@ This is the rolling changelog for TShock for Terraria. Use past tense when addin * Fixed SendTileRectHandler not sending tile rect updates like Pylons/Mannequins to other clients. (@Stealownz) * Fix some typos that have been in the repository for over a lustrum. (@Killia0) * Added more usage examples for the `ban` command under `ban help examples` to explain how users can ban: offline players by account, offline players by IP, and online players by player index - useful for banning hard to type character names. (@moisterrific) +* Changed `/login` and `/register` to provide login help depending on if UUID login is enabled or disabled, and whether or not a player can login via any username or not. In addition, the message parameters will now be differentiated by colour instead of `<>` (@moisterrific, @hakusaro) +* Added a new `DisablePrimeBombs` config option (`false` by default). Highly recommended to set this to `true` in order to prevent griefing on servers doing a `for the worthy` play-through, since the prime bombs on this seed can destroy most tiles and bypass region protection. (@moisterrific) ## TShock 4.5.5 * Changed the world autosave message so that it no longer warns of a "potential lag spike." (@hakusaro) diff --git a/TShockAPI/Commands.cs b/TShockAPI/Commands.cs index af1a0693..0b98c8a5 100644 --- a/TShockAPI/Commands.cs +++ b/TShockAPI/Commands.cs @@ -807,10 +807,15 @@ namespace TShockAPI } else { - args.Player.SendErrorMessage("Syntax: {0}login - Logs in using your UUID and character name", Specifier); - args.Player.SendErrorMessage(" {0}login - Logs in using your password and character name", Specifier); - args.Player.SendErrorMessage(" {0}login - Logs in using your username and password", Specifier); - args.Player.SendErrorMessage("If you forgot your password, there is no way to recover it."); + if (!TShock.Config.Settings.DisableUUIDLogin) + args.Player.SendMessage($"{Specifier}login - Logs in using your UUID and character name.", Color.White); + + if (TShock.Config.Settings.AllowLoginAnyUsername) + args.Player.SendMessage($"{Specifier}login {"username".Color(Utils.GreenHighlight)} {"password".Color(Utils.BoldHighlight)} - Logs in using your username and password.", Color.White); + else + args.Player.SendMessage($"{Specifier}login {"password".Color(Utils.BoldHighlight)} - Logs in using your password and character name.", Color.White); + + args.Player.SendWarningMessage("If you forgot your password, there is no way to recover it."); return; } try @@ -991,6 +996,15 @@ namespace TShockAPI { args.Player.SendSuccessMessage("Account \"{0}\" has been registered.", account.Name); args.Player.SendSuccessMessage("Your password is {0}.", echoPassword); + + if (!TShock.Config.Settings.DisableUUIDLogin) + args.Player.SendMessage($"Type {Specifier}login to sign in to your account using your UUID.", Color.White); + + if (TShock.Config.Settings.AllowLoginAnyUsername) + args.Player.SendMessage($"Type {Specifier}login \"{account.Name.Color(Utils.GreenHighlight)}\" {echoPassword.Color(Utils.BoldHighlight)} to sign in to your account.", Color.White); + else + args.Player.SendMessage($"Type {Specifier}login {echoPassword.Color(Utils.BoldHighlight)} to sign in to your account.", Color.White); + TShock.UserAccounts.AddUserAccount(account); TShock.Log.ConsoleInfo("{0} registered an account: \"{1}\".", args.Player.Name, account.Name); } diff --git a/TShockAPI/Configuration/TShockConfig.cs b/TShockAPI/Configuration/TShockConfig.cs index 801a4c5f..7fe74884 100644 --- a/TShockAPI/Configuration/TShockConfig.cs +++ b/TShockAPI/Configuration/TShockConfig.cs @@ -156,6 +156,12 @@ namespace TShockAPI.Configuration /// Disables tombstone dropping during death for all players. [Description("Disables tombstone dropping during death for all players.")] public bool DisableTombstones = true; + + /// + /// Disables Skeletron Prime Bombs from spawning, useful for preventing unwanted world destruction on for the worthy seed world. + /// + [Description("Disables Skeletron Prime Bombs from spawning, useful for preventing unwanted world destruction on for the worthy seed world.")] + public bool DisablePrimeBombs; /// Forces the world time to be normal, day, or night. [Description("Forces the world time to be normal, day, or night.")] diff --git a/TShockAPI/TShock.cs b/TShockAPI/TShock.cs index 5a874e55..16fc1cb9 100644 --- a/TShockAPI/TShock.cs +++ b/TShockAPI/TShock.cs @@ -1618,15 +1618,18 @@ namespace TShockAPI private void OnProjectileSetDefaults(SetDefaultsEventArgs e) { //tombstone fix. - if (e.Info == 43 || (e.Info >= 201 && e.Info <= 205) || (e.Info >= 527 && e.Info <= 531)) + if (e.Info == ProjectileID.Tombstone || (e.Info >= ProjectileID.GraveMarker && e.Info <= ProjectileID.Obelisk) || (e.Info >= ProjectileID.RichGravestone1 && e.Info <= ProjectileID.RichGravestone5)) if (Config.Settings.DisableTombstones) e.Object.SetDefaults(0); - if (e.Info == 75) + if (e.Info == ProjectileID.HappyBomb) if (Config.Settings.DisableClownBombs) e.Object.SetDefaults(0); - if (e.Info == 109) + if (e.Info == ProjectileID.SnowBallHostile) if (Config.Settings.DisableSnowBalls) e.Object.SetDefaults(0); + if (e.Info == ProjectileID.BombSkeletronPrime) + if (Config.Settings.DisablePrimeBombs) + e.Object.SetDefaults(0); } /// NetHooks_SendData - Fired when the server sends data.