From 1521c8b28e271272813bcde6f70187fb332d18d4 Mon Sep 17 00:00:00 2001 From: stacey <57187883+moisterrific@users.noreply.github.com> Date: Mon, 19 Jul 2021 20:03:39 -0400 Subject: [PATCH 01/16] Improved login error messages and onboarding process Added config based checks so error messages only tell what is relevant to the user. Doesn't make any sense to tell them you can do /login when UUID is set to false because they will just get the same error message again. Also added an additional info message to the onboarding/password registration process so the next steps will be more obvious for first time users. --- TShockAPI/Commands.cs | 22 +++++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-) diff --git a/TShockAPI/Commands.cs b/TShockAPI/Commands.cs index b6ba179f..a8a287b0 100644 --- a/TShockAPI/Commands.cs +++ b/TShockAPI/Commands.cs @@ -807,9 +807,17 @@ 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); + if (TShock.Config.Settings.DisableUUIDLogin && !TShock.Config.Settings.AllowLoginAnyUsername) + args.Player.SendErrorMessage($"Syntax: {Specifier}login - Logs in using your password and character name"); + else if (TShock.Config.Settings.DisableUUIDLogin && TShock.Config.Settings.AllowLoginAnyUsername) + { + args.Player.SendErrorMessage($"Syntax: {Specifier}login - Logs in using your password and character name"); + args.Player.SendErrorMessage($" {Specifier}login - Logs in using your username and password"); + } + else + { + args.Player.SendErrorMessage($"Syntax: {Specifier}login - Logs in using your UUID and character name"); + } args.Player.SendErrorMessage("If you forgot your password, there is no way to recover it."); return; } @@ -991,6 +999,14 @@ 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 && !TShock.Config.Settings.AllowLoginAnyUsername) + args.Player.SendInfoMessage($"Type {Specifier}login to sign in to your account."); + else if (TShock.Config.Settings.DisableUUIDLogin && TShock.Config.Settings.AllowLoginAnyUsername) + args.Player.SendInfoMessage($"Type {Specifier}login to sign in to your account."); + else + { + args.Player.SendInfoMessage($"Type {Specifier}login to sign in to your account."); + } TShock.UserAccounts.AddUserAccount(account); TShock.Log.ConsoleInfo("{0} registered an account: \"{1}\".", args.Player.Name, account.Name); } From cdafad1d5ab30404cca407e72ef02eaaae518432 Mon Sep 17 00:00:00 2001 From: stacey <57187883+moisterrific@users.noreply.github.com> Date: Mon, 19 Jul 2021 20:10:11 -0400 Subject: [PATCH 02/16] Update CHANGELOG.md --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index e55df643..53ffbb74 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -32,6 +32,7 @@ This is the rolling changelog for TShock for Terraria. Use past tense when addin * Added `summonboss` permission check for Prismatic Lacewing. Players who do not have said permission will be unable to kill this critter, as it will summon the Empress of Light. Also added support for the `AnonymousBossInvasions` config option, if this is set to `false` it will now broadcast the name of the player who summoned her. (@moisterrific) * Added `ForceTime` config setting check for Enchanted Sundial usage. If `ForceTime` is set to anything other than `normal`, Sundial use will be rejected as this would lead to very janky game behavior. Additionally, players with `cfgreload` permission will be advised to change it back to `normal` in order to use sundial. (@moisterrific, @bartico6) * Added `%onlineplayers%` and `%serverslots%` placeholders for MOTD. The default MOTD message was also updated to use this. (@moisterrific, @bartico6) +* Improved `/login` related error messages and made the `/register` process more friendly for players new to TShock. (@moisterrific) ## TShock 4.5.4 * Fixed ridiculous typo in `GetDataHandlers` which caused TShock to read the wrong field in the packet for `usingBiomeTorches`. (@hakusaro, @Arthri) From 640c4ebdb50b601913d74d932bda7413ecf97809 Mon Sep 17 00:00:00 2001 From: stacey <57187883+moisterrific@users.noreply.github.com> Date: Mon, 19 Jul 2021 20:25:20 -0400 Subject: [PATCH 03/16] Slightly even better idea I just realized --- TShockAPI/Commands.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/TShockAPI/Commands.cs b/TShockAPI/Commands.cs index a8a287b0..280c1cfb 100644 --- a/TShockAPI/Commands.cs +++ b/TShockAPI/Commands.cs @@ -1000,9 +1000,9 @@ 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 && !TShock.Config.Settings.AllowLoginAnyUsername) - args.Player.SendInfoMessage($"Type {Specifier}login to sign in to your account."); + args.Player.SendInfoMessage($"Type {Specifier}login {echoPassword} to sign in to your account."); else if (TShock.Config.Settings.DisableUUIDLogin && TShock.Config.Settings.AllowLoginAnyUsername) - args.Player.SendInfoMessage($"Type {Specifier}login to sign in to your account."); + args.Player.SendInfoMessage($"Type {Specifier}login \"{account.Name}\" {echoPassword} to sign in to your account."); else { args.Player.SendInfoMessage($"Type {Specifier}login to sign in to your account."); From 11463930f38e0da2b59a0762375023fb6d57a20c Mon Sep 17 00:00:00 2001 From: stacey <57187883+moisterrific@users.noreply.github.com> Date: Sat, 24 Jul 2021 19:53:13 -0400 Subject: [PATCH 04/16] Add DisablePrimeBombs to OnProjectileSetDefaults --- TShockAPI/TShock.cs | 3 +++ 1 file changed, 3 insertions(+) diff --git a/TShockAPI/TShock.cs b/TShockAPI/TShock.cs index 2114b469..92c8c8af 100644 --- a/TShockAPI/TShock.cs +++ b/TShockAPI/TShock.cs @@ -1627,6 +1627,9 @@ namespace TShockAPI if (e.Info == 109) 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. From 347a23a8bc65e6e5b53257f8610a9ce884b715d1 Mon Sep 17 00:00:00 2001 From: stacey <57187883+moisterrific@users.noreply.github.com> Date: Sat, 24 Jul 2021 19:55:38 -0400 Subject: [PATCH 05/16] Add DisablePrimeBombs to World Settings --- TShockAPI/Configuration/TShockConfig.cs | 6 ++++++ 1 file changed, 6 insertions(+) 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.")] From adeb7225e6df358153b285f67752b95362d05a96 Mon Sep 17 00:00:00 2001 From: stacey <57187883+moisterrific@users.noreply.github.com> Date: Sat, 24 Jul 2021 20:01:21 -0400 Subject: [PATCH 06/16] Add DisablePrimeBombs to Upcoming changes --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 4cba20d9..05f94143 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -14,6 +14,7 @@ This is the rolling changelog for TShock for Terraria. Use past tense when addin ## Upcoming changes * Fixed SendTileRectHandler not sending tile rect updates like Pylons/Mannequins to other clients. (@Stealownz) +* 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) From b5c1640058988d2da036da291c248b5365e1c351 Mon Sep 17 00:00:00 2001 From: stacey <57187883+moisterrific@users.noreply.github.com> Date: Sat, 24 Jul 2021 20:08:51 -0400 Subject: [PATCH 07/16] Refactor: use more human-readable ProjectileID --- TShockAPI/TShock.cs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/TShockAPI/TShock.cs b/TShockAPI/TShock.cs index 92c8c8af..78c13a8d 100644 --- a/TShockAPI/TShock.cs +++ b/TShockAPI/TShock.cs @@ -1618,13 +1618,13 @@ 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) From 5bce3b3492ff60526e3575d96444edeb5e35cbfd Mon Sep 17 00:00:00 2001 From: stacey <57187883+moisterrific@users.noreply.github.com> Date: Sat, 24 Jul 2021 20:13:11 -0400 Subject: [PATCH 08/16] Update CHANGELOG.md with suggested change Co-authored-by: Lucas Nicodemus --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 8ff0dc50..e33eaf01 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -13,7 +13,7 @@ This is the rolling changelog for TShock for Terraria. Use past tense when addin * If there is no section called "Upcoming changes" below this line, please add one with `## Upcoming changes` as the first line, and then a bulleted item directly after with the first change. ## Upcoming changes -* Improved `/login` related error messages and made the `/register` process more friendly for players new to TShock. (@moisterrific) +* Changed `/login` and `/register` 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. (@moisterrific) ## TShock 4.5.5 * Changed the world autosave message so that it no longer warns of a "potential lag spike." (@hakusaro) From 86b5454854f44409cd872be97227ccaee6874290 Mon Sep 17 00:00:00 2001 From: stacey <57187883+moisterrific@users.noreply.github.com> Date: Sat, 24 Jul 2021 20:37:09 -0400 Subject: [PATCH 09/16] Refactor for readability --- TShockAPI/Commands.cs | 30 +++++++++++++++++------------- 1 file changed, 17 insertions(+), 13 deletions(-) diff --git a/TShockAPI/Commands.cs b/TShockAPI/Commands.cs index 280c1cfb..d2659c97 100644 --- a/TShockAPI/Commands.cs +++ b/TShockAPI/Commands.cs @@ -807,17 +807,18 @@ namespace TShockAPI } else { - if (TShock.Config.Settings.DisableUUIDLogin && !TShock.Config.Settings.AllowLoginAnyUsername) - args.Player.SendErrorMessage($"Syntax: {Specifier}login - Logs in using your password and character name"); - else if (TShock.Config.Settings.DisableUUIDLogin && TShock.Config.Settings.AllowLoginAnyUsername) + if (TShock.Config.Settings.DisableUUIDLogin) { - args.Player.SendErrorMessage($"Syntax: {Specifier}login - Logs in using your password and character name"); - args.Player.SendErrorMessage($" {Specifier}login - Logs in using your username and password"); + if (TShock.Config.Settings.AllowLoginAnyUsername) + { + args.Player.SendErrorMessage($"Syntax: {Specifier}login - Logs in using your password and character name"); + args.Player.SendErrorMessage($" {Specifier}login - Logs in using your username and password"); + } + else + args.Player.SendErrorMessage($"Syntax: {Specifier}login - Logs in using your password and character name"); } else - { args.Player.SendErrorMessage($"Syntax: {Specifier}login - Logs in using your UUID and character name"); - } args.Player.SendErrorMessage("If you forgot your password, there is no way to recover it."); return; } @@ -999,14 +1000,17 @@ 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 && !TShock.Config.Settings.AllowLoginAnyUsername) - args.Player.SendInfoMessage($"Type {Specifier}login {echoPassword} to sign in to your account."); - else if (TShock.Config.Settings.DisableUUIDLogin && TShock.Config.Settings.AllowLoginAnyUsername) - args.Player.SendInfoMessage($"Type {Specifier}login \"{account.Name}\" {echoPassword} to sign in to your account."); - else + + if (TShock.Config.Settings.DisableUUIDLogin) { - args.Player.SendInfoMessage($"Type {Specifier}login to sign in to your account."); + if (TShock.Config.Settings.AllowLoginAnyUsername) + args.Player.SendInfoMessage($"Type {Specifier}login \"{account.Name}\" {echoPassword} to sign in to your account."); + else + args.Player.SendInfoMessage($"Type {Specifier}login {echoPassword} to sign in to your account."); } + else + args.Player.SendSuccessMessage($"Type {Specifier}login to sign in to your account."); + TShock.UserAccounts.AddUserAccount(account); TShock.Log.ConsoleInfo("{0} registered an account: \"{1}\".", args.Player.Name, account.Name); } From fc2330458e81fb871271b47336a3a6eac5471018 Mon Sep 17 00:00:00 2001 From: stacey <57187883+moisterrific@users.noreply.github.com> Date: Sat, 24 Jul 2021 22:47:28 -0400 Subject: [PATCH 10/16] Change to independent checks and use colour differentiation --- TShockAPI/Commands.cs | 34 ++++++++++++++-------------------- 1 file changed, 14 insertions(+), 20 deletions(-) diff --git a/TShockAPI/Commands.cs b/TShockAPI/Commands.cs index 8ebea2b9..178c64b7 100644 --- a/TShockAPI/Commands.cs +++ b/TShockAPI/Commands.cs @@ -807,19 +807,15 @@ namespace TShockAPI } else { - if (TShock.Config.Settings.DisableUUIDLogin) - { - if (TShock.Config.Settings.AllowLoginAnyUsername) - { - args.Player.SendErrorMessage($"Syntax: {Specifier}login - Logs in using your password and character name"); - args.Player.SendErrorMessage($" {Specifier}login - Logs in using your username and password"); - } - else - args.Player.SendErrorMessage($"Syntax: {Specifier}login - Logs in using your password and character name"); - } + 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.SendErrorMessage($"Syntax: {Specifier}login - Logs in using your UUID and character name"); - args.Player.SendErrorMessage("If you forgot your password, there is no way to recover it."); + 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 @@ -1001,15 +997,13 @@ 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) - { - if (TShock.Config.Settings.AllowLoginAnyUsername) - args.Player.SendInfoMessage($"Type {Specifier}login \"{account.Name}\" {echoPassword} to sign in to your account."); - else - args.Player.SendInfoMessage($"Type {Specifier}login {echoPassword} to sign in to your account."); - } + if (!TShock.Config.Settings.DisableUUIDLogin) + args.Player.SendMessage($"Type {Specifier}login to sign in to your account.", 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.SendSuccessMessage($"Type {Specifier}login to sign in to your account."); + 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); From ec4b21e78d431c0c13d30691bc7bbd4861420ccb Mon Sep 17 00:00:00 2001 From: stacey <57187883+moisterrific@users.noreply.github.com> Date: Sat, 24 Jul 2021 22:51:38 -0400 Subject: [PATCH 11/16] Fix grammar typo --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 27c710e6..5d634545 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -15,7 +15,7 @@ This is the rolling changelog for TShock for Terraria. Use past tense when addin ## Upcoming changes * 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) -* Changed `/login` and `/register` 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. (@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. (@moisterrific) ## TShock 4.5.5 * Changed the world autosave message so that it no longer warns of a "potential lag spike." (@hakusaro) From 838c03ce3f7f676d4ad8c37c95d91d5f11b840fc Mon Sep 17 00:00:00 2001 From: stacey <57187883+moisterrific@users.noreply.github.com> Date: Sun, 25 Jul 2021 15:45:43 -0400 Subject: [PATCH 12/16] Make UUID login help more descriptive Co-authored-by: Lucas Nicodemus --- TShockAPI/Commands.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/TShockAPI/Commands.cs b/TShockAPI/Commands.cs index 178c64b7..2633d237 100644 --- a/TShockAPI/Commands.cs +++ b/TShockAPI/Commands.cs @@ -998,7 +998,7 @@ namespace TShockAPI 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.", Color.White); + 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); From 46865d2ad4ba5aa1c7727a34cc75ca632faafece Mon Sep 17 00:00:00 2001 From: stacey <57187883+moisterrific@users.noreply.github.com> Date: Sun, 25 Jul 2021 16:10:31 -0400 Subject: [PATCH 13/16] Update CHANGELOG.md --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 5d634545..54ef2466 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -15,7 +15,7 @@ This is the rolling changelog for TShock for Terraria. Use past tense when addin ## Upcoming changes * 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) -* 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. (@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) ## TShock 4.5.5 * Changed the world autosave message so that it no longer warns of a "potential lag spike." (@hakusaro) From e1b78fe71f62a0302f75870f2908e1ba9ec527d8 Mon Sep 17 00:00:00 2001 From: stacey <57187883+moisterrific@users.noreply.github.com> Date: Sun, 25 Jul 2021 22:20:59 -0400 Subject: [PATCH 14/16] Add ban usage examples + minor grammar & visual fixes for ban help Added usage examples for: - banning offline player by account - banning offline player by ip - banning online player by index Added ban help examples after ban help commands and fixed a few minor visual/grammar issues relating to ban help --- TShockAPI/Commands.cs | 25 +++++++++++++++++++------ 1 file changed, 19 insertions(+), 6 deletions(-) diff --git a/TShockAPI/Commands.cs b/TShockAPI/Commands.cs index cae1ebf3..88f44a27 100644 --- a/TShockAPI/Commands.cs +++ b/TShockAPI/Commands.cs @@ -1303,7 +1303,7 @@ namespace TShockAPI args.Player.SendMessage($"ban {"list".Color(Utils.RedHighlight)}", Color.White); args.Player.SendMessage($"ban {"details".Color(Utils.RedHighlight)} ", Color.White); args.Player.SendMessage($"Quick usage: {"ban add".Color(Utils.BoldHighlight)} {args.Player.Name.Color(Utils.RedHighlight)} \"Griefing\"", Color.White); - args.Player.SendMessage($"For more info, use {"ban help".Color(Utils.BoldHighlight)} {"command".Color(Utils.RedHighlight)}", Color.White); + args.Player.SendMessage($"For more info, use {"ban help".Color(Utils.BoldHighlight)} {"command".Color(Utils.RedHighlight)} or {"ban help".Color(Utils.BoldHighlight)} {"examples".Color(Utils.RedHighlight)}", Color.White); } void MoreHelp(string cmd) @@ -1327,7 +1327,7 @@ namespace TShockAPI args.Player.SendMessage("", Color.White); args.Player.SendMessage("Ban Del Syntax", Color.White); args.Player.SendMessage($"{"ban del".Color(Utils.BoldHighlight)} <{"Ticket Number".Color(Utils.RedHighlight)}>", Color.White); - args.Player.SendMessage($"- {"Ticket Number".Color(Utils.RedHighlight)}s are provided when you add a ban, and can also be viewed with the {"ban list".Color(Utils.BoldHighlight)} command.", Color.White); + args.Player.SendMessage($"- {"Ticket Numbers".Color(Utils.RedHighlight)} are provided when you add a ban, and can also be viewed with the {"ban list".Color(Utils.BoldHighlight)} command.", Color.White); args.Player.SendMessage($"Example usage: {"ban del".Color(Utils.BoldHighlight)} {"12345".Color(Utils.RedHighlight)}", Color.White); break; @@ -1343,14 +1343,14 @@ namespace TShockAPI args.Player.SendMessage("", Color.White); args.Player.SendMessage("Ban Details Syntax", Color.White); args.Player.SendMessage($"{"ban details".Color(Utils.BoldHighlight)} <{"Ticket Number".Color(Utils.RedHighlight)}>", Color.White); - args.Player.SendMessage($"- {"Ticket Number".Color(Utils.RedHighlight)}s are provided when you add a ban, and can be found with the {"ban list".Color(Utils.BoldHighlight)} command.", Color.White); + args.Player.SendMessage($"- {"Ticket Numbers".Color(Utils.RedHighlight)} are provided when you add a ban, and can be found with the {"ban list".Color(Utils.BoldHighlight)} command.", Color.White); args.Player.SendMessage($"Example usage: {"ban details".Color(Utils.BoldHighlight)} {"12345".Color(Utils.RedHighlight)}", Color.White); break; case "identifiers": if (!PaginationTools.TryParsePageNumber(args.Parameters, 2, args.Player, out int pageNumber)) { - args.Player.SendMessage($"Invalid page number. Page number should be numeric.", Color.White); + args.Player.SendMessage($"Invalid page number. Page number must be numeric.", Color.White); return; } @@ -1368,10 +1368,23 @@ namespace TShockAPI LineTextColor = Color.White }); break; + + case "examples": + args.Player.SendMessage("", Color.White); + args.Player.SendMessage("Ban Usage Examples", Color.White); + args.Player.SendMessage("- Ban an offline player by account name", Color.White); + args.Player.SendMessage($" {Specifier}{"ban add".Color(Utils.BoldHighlight)} {"acc:".Color(Utils.RedHighlight)}{args.Player.Account.Color(Utils.RedHighlight)} {"\"Multiple accounts are not allowed\"".Color(Utils.BoldHighlight)} (Permanently bans this account name)", Color.White); + args.Player.SendMessage("- Ban an offline player by IP address", Color.White); + args.Player.SendMessage($" {Specifier}{"ai".Color(Utils.BoldHighlight)} \"{args.Player.Account.Color(Utils.RedHighlight)}\" (Find the IP associated with the offline target's account)", Color.White); + args.Player.SendMessage($" {Specifier}{"ban add".Color(Utils.BoldHighlight)} {"ip:".Color(Utils.RedHighlight)}{args.Player.IP.Color(Utils.RedHighlight)} {"\"Griefing\"".Color(Utils.BoldHighlight)} {"-e".Color(Utils.GreenHighlight)} (Permanently bans this IP address)", Color.White); + args.Player.SendMessage($"- Ban an online player by index (Useful for hard to type names)", Color.White); + args.Player.SendMessage($" {Specifier}{"who".Color(Utils.BoldHighlight)} {"-i".Color(Utils.GreenHighlight)} (Find the player index for the target)", Color.White); + args.Player.SendMessage($" {Specifier}{"ban add".Color(Utils.BoldHighlight)} {"tsi:".Color(Utils.RedHighlight)}{args.Player.Index.Color(Utils.RedHighlight)} {"\"Trolling\"".Color(Utils.BoldHighlight)} {"-a -u -ip".Color(Utils.GreenHighlight)} (Permanently bans the online player by Account, UUID, and IP)", Color.White); + // Ban by account ID when? + break; default: - args.Player.SendMessage($"Unknown ban command. Try {"add".Color(Utils.RedHighlight)}, {"del".Color(Utils.RedHighlight)}, {"list".Color(Utils.RedHighlight)}, or {"details".Color(Utils.RedHighlight)}.", Color.White); - break; + args.Player.SendMessage($"Unknown ban command. Try {"ban help".Color(Utils.BoldHighlight)} {"add".Color(Utils.RedHighlight)}, {"del".Color(Utils.RedHighlight)}, {"list".Color(Utils.RedHighlight)}, {"details".Color(Utils.RedHighlight)}, {"identifiers".Color(Utils.RedHighlight)}, or {"examples".Color(Utils.RedHighlight)}.", Color.White); break; } } From da9076058567aef1092bf6e6b834c33841194b21 Mon Sep 17 00:00:00 2001 From: stacey <57187883+moisterrific@users.noreply.github.com> Date: Sun, 25 Jul 2021 22:32:32 -0400 Subject: [PATCH 15/16] Add ban usage examples to changelog --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 73eb4121..a49e14ed 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -15,6 +15,7 @@ This is the rolling changelog for TShock for Terraria. Use past tense when addin ## Upcoming changes * 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) ## TShock 4.5.5 * Changed the world autosave message so that it no longer warns of a "potential lag spike." (@hakusaro) From da8d7d4e7018abb029f2eac683e96d1ec734a135 Mon Sep 17 00:00:00 2001 From: stacey <57187883+moisterrific@users.noreply.github.com> Date: Mon, 26 Jul 2021 08:35:30 -0400 Subject: [PATCH 16/16] Add "" for acc:account name https://github.com/Pryaxis/TShock/issues/2382#issuecomment-870062082 --- TShockAPI/Commands.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/TShockAPI/Commands.cs b/TShockAPI/Commands.cs index 88f44a27..af1a0693 100644 --- a/TShockAPI/Commands.cs +++ b/TShockAPI/Commands.cs @@ -1373,7 +1373,7 @@ namespace TShockAPI args.Player.SendMessage("", Color.White); args.Player.SendMessage("Ban Usage Examples", Color.White); args.Player.SendMessage("- Ban an offline player by account name", Color.White); - args.Player.SendMessage($" {Specifier}{"ban add".Color(Utils.BoldHighlight)} {"acc:".Color(Utils.RedHighlight)}{args.Player.Account.Color(Utils.RedHighlight)} {"\"Multiple accounts are not allowed\"".Color(Utils.BoldHighlight)} (Permanently bans this account name)", Color.White); + args.Player.SendMessage($" {Specifier}{"ban add".Color(Utils.BoldHighlight)} \"{"acc:".Color(Utils.RedHighlight)}{args.Player.Account.Color(Utils.RedHighlight)}\" {"\"Multiple accounts are not allowed\"".Color(Utils.BoldHighlight)} (Permanently bans this account name)", Color.White); args.Player.SendMessage("- Ban an offline player by IP address", Color.White); args.Player.SendMessage($" {Specifier}{"ai".Color(Utils.BoldHighlight)} \"{args.Player.Account.Color(Utils.RedHighlight)}\" (Find the IP associated with the offline target's account)", Color.White); args.Player.SendMessage($" {Specifier}{"ban add".Color(Utils.BoldHighlight)} {"ip:".Color(Utils.RedHighlight)}{args.Player.IP.Color(Utils.RedHighlight)} {"\"Griefing\"".Color(Utils.BoldHighlight)} {"-e".Color(Utils.GreenHighlight)} (Permanently bans this IP address)", Color.White);