☕️⚡️TShock provides Terraria servers with server-side characters, anti-cheat, and community management tools.
This update adds preliminary support for Terraria 1.4.3.4, which is primarily a maintenance release that adds support for the Steam Deck!
Thank you to everyone who gave us feedback about Raspberry Pi and arm support. We do not intend to discontinue support for arm, based on your feedback.
/grow
command to reduce code duplication, use TileID
constants for less ambiguous types. (@drunderscore)IEntitySource
as the first parameter to Item.NewItem
and NPC.NewNPC
, and in TSAPI
, NpcLootDropEventArgs
passes IEntitySource
as Source
. If you're updating a plugin, you can either make something that implements with IEntitySource
or just use new EntitySource_DebugCommand()
like TShock does. (@SignatureBeef, @Patrikkk, @hakusaro)To upgrade TShock, replace all of the files in the location of your server installation with all of the files from the release zip we provide. Overwrite all files. No data will be lost.
GetDataHandlers.OnReleaseNpc
to handling ReleaseNPC packet and a bouncer to stops unregistered and logged out players on SSC servers from releasing critters NPC. The bouncer has additional filter to stops players who tried to release different critter using crafted packet, e.g. using bunny item to release golden bunny. (@tru321)GetDataHandlers.HandleCatchNpc
that stops unregistered and logged out players on SSC servers to catch critters. (@tru321)HandlePaintTile
to account for the Paint Sprayer (or Architect Gizmo Pack) being inside your inventory, rather than on an accessory slot. (@drunderscore)/worldevent
command. (@0x3fcf1bbd)TSPlayer.SendTileSquare
as deprecated, and created TSPlayer.SendTileSquareCentered
that sends a tile square centered around the passed coordinates. (@0x3fcf1bbd)TSPlayer.SendTileRect
so as to avoid OOBs. (@0x3fcf1bbd)To upgrade TShock, replace all of the files in the location of your server installation with all of the files from the release zip we provide. Overwrite all files. No data will be lost.
GetDataHandlers.OnNpcTalk
for NpcTalk and a handler for it that stops unregistered and logged out players from interacting with NPCs, preventing them from smuggling or duplicating items via NPC item slots. (@tru321)OnSignRead
handler in GetDataHandler
, and added the SignRead
event. Added check to ensure the sign being read is within world bounds (x >= 0 && y >= 0 && x < Main.maxTilesX && y < Main.maxTilesY)
. (@drunderscore)HandleNpcTalk
to ensure the passed NPC index is within bounds (>= -1 && < Main.maxNPCs
). (@drunderscore)To upgrade TShock, replace all of the files in the location of your server installation with all of the files from the release zip we provide. Overwrite all files. No data will be lost.
GetDataHandlers.OnNewProjectile
so that it passes the projectile's AI (by updating NewProjectileEventArgs
and parsing this during the TShock hook) to support processing projectile AI in bouncer. (@AgaSpace)Main.GameMode
to /worldmode
as "Mode". (@hakusaro)To upgrade TShock, replace all of the files in the location of your server installation with all of the files from the release zip we provide. Overwrite all files. No data will be lost.
This version of TShock is protocol compatible with Terraria 1.4.3.2.
SIGINT
is received. When SIGINT
is trapped, the server will attempt to shut down safely. When it is trapped a second time in a session, it will immediately exit. (SIGINT
is typically triggered via CTRL + C.) This means that it is possible to corrupt your world if you force shutdown at the wrong time (e.g., while the world is saving), but hopefully you expect this to happen if you hit CTRL + C twice in a session and you read the warning. (@hakusaro, @Onusai)DeathCradle now accepts GitHub sponsorships. Did you know that DeathCradle is the reason why TShock is about to switch to .NET 5 and/or 6 and ditch mono? Isn't that neat?
To update TShock, simply replace all of the files in your server folder with those from the release folder.
Did you miss version 4.5.6? A lot of stuff changed in TShock 4.5.6 so you might want to read those change notes too.
Did you miss version 4.5.7? Some stuff changed in that release too.
Did you miss version 4.5.8? Yep that also changed some stuff in that release.
TSPlayer
's PVP mode. (@AgaSpace)DeathCradle now accepts GitHub sponsorships. Did you know that DeathCradle is the reason why TShock is about to switch to .NET 5 and/or 6 and ditch mono?
To update TShock, simply replace all of the files in your server folder with those from the release folder.
This release includes a security fix for GHSA-6w5v-hxr3-m2wx.
Did you miss version 4.5.6? A lot of stuff changed in TShock 4.5.6 so you might want to read those change notes too.
Did you miss version 4.5.7? Some stuff changed in that release too.
TShockAPI/DB/DBTools.cs
. This appears to have been dead code and not used by anything. (@hakusaro, @DeathCradle)/firework
command not sending fireworks when specified without a firework color. The firework command now correctly sends red fireworks to a target if a color is not specified. (@hakusaro, @Kojirremer)MaxPlaceStyles
and ExtraneousPlaceStyles
contains an entry for a tile, and unintentionally passed on invalid tiles. ExtraneousPlaceStyles
only contains special max placeStyles, not all placeables unlike MaxPlaceStyles
. It's now corrected to take from ExtraneousPlaceStyles
first, then fallback to MaxPlaceStyles
if there's no entry for that tile, and then finally -1 if there's no entry in either.To update TShock, simply replace all of the files in your server folder with those from the release folder.
This release includes protocol compatibility with Terraria 1.4.3.1.
Did you miss version 4.5.6? A lot of stuff changed in TShock 4.5.6 so you might want to read those change notes too.
/respawn
command to permit respawning players from the console. (@hakusaro, @Kojirremer)bcrypt
hashes and allowed specifying the hash algorithm in the config file. This also removes the config option for setting the hash algorithm (HashAlgorithm
). This is because it helps clear the way for .NET5/6 and OTAPI 3, and because bcrypt
has been the default since TShock 4.3 in 2015. (@hakusaro)To update TShock, simply replace all of the files in your server folder with those from the release folder.
This release includes protocol compatibility with Terraria 1.4.3.0.
This release includes a security fix for GHSA-6w5v-hxr3-m2wx. The details around of vulnerability and additional patches will be provided as a defense-in-depth measure in the next release. This security advisory will be made public and additional patches provided on Tuesday, November 23rd, at 22:00 MST.
SoftcoreOnly
config option to allow only softcore characters to connect. (@drunderscore)tshock.npc.summonboss
permission check for Lunatic Cultist, players who do not have this permission will not be able to kill Cultist Archers/Devotees to summon the Lunatic Cultist. (@moisterrific)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)/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)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)/respawn
command that lets you respawn yourself or another player. Respawning yourself requires the tshock.respawn
permission and respawning others requires the tshock.respawn.other
permission. The full command syntax is /respawn [player]
. (@moisterrific)RespawnSeconds
and RespawnBossSeconds
from 10
to 0
to respect the game's default respawn timers. (@moisterrific)SendData
takes an extra arg in this version of Terraria but that's slated to be removed in a Terraria hotfix. This is vestigial and OTAPI "hacks that out" to preserve plugin compatibility. That's why it'll differ from the source code. (@Patrikkk, @DeathCradle, honorable mention: @Moneylover3246)/spawnboss
command. (@hakusaro, @HiddenStriker)RegionProtectGemLocks
was disabled in the config file. Now, players will be permitted to use gem locks if they don't have build permission in a region, but RegionProtectGemLocks
is disabled. If RegionProtectGemLocks
is enabled, players will be unable to use gem locks in a build region. (@hakusaro, @Kojirremer, @Arthri)/god [player]
would tell [player]
that they were in godmode regardless of whether or not they were or not. (@hakusaro, @Kojirremer)TSAPI
: Updated PacketTypes
to support SetMiscEventValues
(140), RequestLucyPopup
(141), and SyncProjectileTrackers
(142). (@hakusaro)DisableDefaultIPBan
to the config file. If set to true
, the server will not automatically IP ban players when banning them. This is useful if you run an intercepting proxy in front of TShock, and all players share the same IP. (@hakusaro, and Telegram user xmzzhh233)bcrypt
hashes automatically. Previously, blank passwords were not upgraded to bcrypt hashes. This is in preparation to remove the old password hashing system and related fallback components in the next release. Most users have been using bcrypt hashes for the past...few years. (@hakusaro)To update TShock, simply replace all of the files in your server folder with those from the release folder.
This version of TShock includes a fix for GHSA-jq4j-v8pr-jv7j. For more information, see the advisory.
We are aware of at least three other security issues, but they are still in-progress. At least one of those will be shipping in the near future.
/slay
as an alias for /kill
to be more consistent with other server mods. (@hakusaro)/god
as an alias for /godmode
to be more consistent with other server mods. (@hakusaro)Amethyst Gemtree
text. (@hakusaro)CTRL + C
/ interactive console interrupt not safely shutting down the server. Now, interrupts will cause a safe shutdown (saving the world and disconnecting all players before fully shutting down). Previously, interrupts caused an unsafe shutdown (not saving the world). (@hakusaro)Color.LimeGreen
instead of Color.Green
. Color.Green
looks ugly. Color.LimeGreen
looks less ugly but isn't as offensively bright as pure green. (@hakusaro)/home
allowing players to bypass the respawn timer. (@hakusaro, @moisterrific, @Arthri)SuppressPermissionFailureNotices
. When set to true
, the server will not send warning messages to players when they fail a build permission check from TSPlayer.HasBuildPermission
(even if shouldWarnPlayer
is set to true. (@hakusaro)/warp send
failing a nullcheck if the warp didn't exist. The previous behavior may have always been buggy or broken. In other words, sending someone to a warp that doesn't exist should result in a nicer error. (@hakusaro, @punchready)/group del
allowing server operators to delete the default group that guests are put into. This is a really critical group and the server doesn't behave correctly when it happens. As a result, it's better to prevent this from happening than not. Additionally, GroupManagerException
s will be thrown if this is attempted programmatically. Finally, if the exception is thrown in response to /group del
(or if any other exception is thrown that the command handler can handle), the stack trace will no longer be present. Fixes #2165. (@hakusaro, @DeveloperLuxo, @Rozen4334, @moisterrific, @bartico6, @Quinci135)ConfigFile
class. If you are updating a plugin, you should use TShock.Config.Settings
instead of the accessor you were using. This is typically a really easy change. For most plugin authors, updating to the new config format is as simple as changing the reference to the old static config to point to the new location. If you were using this for your own configs, you should swap to using a IConfigFile
(see TShockAPI.Configuration.ConfigFile
). (@hakusaro, @bartico6)Main.worldPathName
to /worldinfo
command. Now, if you need to see what the location on disk for your world file is, you can simply run /worldinfo
to find out. This is particularly helpful on Linux and macOS, where the world path isn't obvious. (@hakusaro)-disable-commands
to disable the input thread, but by default, it will be enabled. Fixes #1450. (@DeathCradle, @QuiCM)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)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)%onlineplayers%
and %serverslots%
placeholders for MOTD. The default MOTD message was also updated to use this. (@moisterrific, @bartico6)TilePlacementValid
when validating tile coordinates, which could cause a DoS attack due to unexpectedly large world framing. The list below shows the corrected methods within Bouncer. This was assigned GHSA-jq4j-v8pr-jv7j. (@drunderscore)
OnTileEdit
: The check was moved to be the first, and will no longer SendTileSquare
upon failure.OnPlaceObject
: The check was moved to be the first, and will no longer SendTileSquare
upon failure.OnPlaceTileEntity
: The check was newly added.OnPlaceItemFrame
: The check was newly added.OnFoodPlatterTryPlacing
: The check was newly added.To update TShock, simply replace all of the files in your server folder with those from the release folder.