TShock

☕️⚡️TShock provides Terraria servers with server-side characters, anti-cheat, and community management tools.

GPL-3.0 License

Stars
2.3K
Committers
117

Bot releases are hidden (Show)

TShock - TShock 5.2 for Terraria 1.4.4.9 Latest Release

Published by hakusaro over 1 year ago

Welcome to TShock for Terraria 5.2 with support for Terraria 1.4.4.9. This is, of course, also on nuget, but it may take up to an hour to appear.

Before installing, make a complete backup of your existing server and all files and folders, including tshock.sqlite and the tshock folder. We are not responsible for failed installations. Please make sure you backup your data. Severe data loss or gain may occur.

This release was requested by @drunderscore! Thank you so, so much for reaching out to get an update.

Notable changes in this release

  • An additional option pvpwithnoteam is added at PvPMode to enable PVP with no team. (@CelestialAnarchy, #2617, @ATFGK)
  • Corrected and updated deserialization of the following packets (@ATFGK):
    • ProjectileNew: Read the third AI value.
      • Before this change, it was previously possible for the projectile damage limit to falsely trigger, such as when using the Terra Balde and Fire Gauntlet together.
    • PlayerSpawn: Read the NumberOfDeathsPVE and NumberOfDeathsPVP values.
      • Before this change, the PlayerSpawnContext was always read incorrectly, due to the values above being placed in the middle of the existing structure.
    • NpcTeleportPortal: Read the NPC index as a ushort instead of a byte.
    • PlaceObject: Read the Random value.
      • Before this change, the Direction was always read incorrectly, due to the value above being placed in the middle of the existing structure.
    • Zones: Read the zone5 value.
    • PaintTile and PaintWall: Read the coatTile and coatWall values.
    • PlayerHurtV2: Read the cooldownCounter value.
  • Updated SpawnMsg to include the NumberOfDeathsPVE and NumberOfDeathsPVP, and allow them to be optionally used in TSPlayer.Spawn. (@ATFGK)
  • Added WorldTileProvider to the tshock config with values default, constileation or heaptile. This allows tile providers to be changed in environments where CLI args cannot be altered. See the documentation website for more info about these providers. (@SignatureBeef)
  • Updated the Utils.FindByIdOrName to follow same logic. Now fuzzy match fallback to StartsWith and then Contains. (@sgkoishi)
  • Added ShadowCandle and BrainOfConfusionBuff (BoC dodge buff) to the PlayerAddBuffWhitelist (@drunderscore)
  • Improved rejection message and code duplication in OnPlayerBuff. (@drunderscore)
    • This will make it so Bouncer rejections regarding PlayerAddBuff will now always include the sender index, buff type, receiver index, and time in ticks, allowing much faster triage of buff whitelist issues.
  • Allowed Digging Molecart and bomb fish to break tiles and place tracks. (@sgkoishi)
  • Added built-in package management capabilities for plugins. (@pontaoski)
  • Fixed Super Sponge unable to absorb shimmer. (@sgkoishi, #2833)
  • Increased whitelisted duration of the Mighty Wind (WindPushed) buff (from sandstorms). (@drunderscore)
  • Allowed the Hellfire (OnFire3) buff. (@drunderscore)
  • Allowed Digging Molecart and bomb fish to break tiles and place tracks (@sgkoishi)
  • Initialized achievements and the AchievementManager on the server. This ensures that players cannot cause exceptions to be thrown, chat messages are always logged, and allows achievement names to be localized in the console. Also added a test case for this. (@drunderscore)
  • Allowed multiple test cases to be in TShock's test suite. (@drunderscore)
  • Fixed unable to use Purification/Evil Powder in jungle. (@sgkoishi)
  • Set the GetDataHandledEventArgs.Player property for the SyncTilePicking data handler. (@drunderscore)
  • Relaxed custom death message restrictions to allow Inferno potions in PvP. (@drunderscore)
  • Allowed Flower Boots to place Ash Flowers on Ash Grass blocks. (@punchready)
  • Removed unnecessary range check that artifically shortened quick stack reach. (@boddyn, #2885, @bcat)
  • Improved the exploit protection in tile rect handling. (@punchready)
  • Additional translation updates via Crowdin contributors from the past several months.

Upgrading

Before installing, make a complete backup of your existing server and all files and folders, including tshock.sqlite and the tshock folder. We are not responsible for failed installations. Please make sure you backup your data. Severe data loss or gain may occur.

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.

Special note: the arm (x86) version is not provided. Due to serious issues with these versions that make TShock work sub-optimally, we don't suggest them anymore.

TShock - TShock 5.1.3 for Terraria 1.4.4.9 (Thankyou!! <3)

Published by hakusaro almost 2 years ago

Welcome to TShock for Terraria 5.1.3 with support for Terraria 1.4.4.9. This is, of course, also on nuget.

Before installing, make a complete backup of your existing server and all files and folders, including tshock.sqlite and the tshock folder. We are not responsible for failed installations. Please make sure you backup your data. Severe data loss or gain may occur.

Notable changes in this release

  • Added support for Terraria 1.4.4.9 via OTAPI 3.1.20. (@SignatureBeef)

Upgrading

Before installing, make a complete backup of your existing server and all files and folders, including tshock.sqlite and the tshock folder. We are not responsible for failed installations. Please make sure you backup your data. Severe data loss or gain may occur.

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.

TShock - TShock 5.1.2 for Terraria 1.4.4.8.1 (ζ Ori)

Published by hakusaro almost 2 years ago

Welcome to TShock for Terraria 5.1.2 with support for Terraria 1.4.4.8.1. This is, of course, also on nuget.

Before installing, make a complete backup of your existing server and all files and folders, including tshock.sqlite and the tshock folder. We are not responsible for failed installations. Please make sure you backup your data. Severe data loss or gain may occur.

Notable changes in this release

  • Added support for Terraria 1.4.4.8.1 via OTAPI 3.1.19. (@SignatureBeef)

Notable changes in the last release

  • Fixed item giving potentially dropping too many items. (@PotatoCider, @punchready)
  • Excluded GeoIP.dat from release bundle. (@SignatureBeef)
  • Added TownSlimeRed to FishableNpcIDs list, allowing it to be fished up. (@drunderscore)
  • Bump to Terraria 1.4.4.8 via OTAPI 3.1.18. (@hakusaro, @SignatureBeef)
    • In this version of Terraria, Main.maxBuffTypes and other maxWhateverTypes fields have been removed. Their replacements are in Terraria.ID.whateverID.Count. TShock calls to these fields have been swapped in order to bring forward compatibility with Terraria 1.4.4.8.
  • In OTAPI 3.1.17, allowed Crystal Shard to grow. (@sgkoishi, @cc004, SignatureBeef/Open-Terraria-API#96)
  • Added permission for summoning Mechdusa, Deerclops and slime pet. (@sgkoishi, #2808)
  • Changed login to only restrict CC'd players during login whilst SSC is enabled. (@drunderscore)
    • This change allows the config option RequireLogin to function usefully again when SSC is not enabled.
  • Changed PlayerData.RestoreCharacter to remove all buffs. (@drunderscore)
    • Before this change, it was theoretically possible to smuggle buffs onto servers with SSC enabled, by using buff indexes past 22.
  • Allowed Torch God's Favor to place different types of torches and campfires. (@sgkoishi, #2811)
  • Updated translations! Currently, the major projects are at the following completion rates:
    • Chinese (93%)
    • Portuguese, Brazilian (89%)
    • Indonesian (89%)
    • Russian (56%)
    • Spanish (24%)
    • toki pona (10%)
    • Turkish (8%)
    • For complete credits, see the table below.

Translation credits

The following translators contributed changes from November 1, 2022 to November 9, 2022 (from TShock 5.0.0 to 5.1.0).

Contributor Language Translated words
Shiva Goddess (ShivaGoddess) Portuguese, Brazilian 6979
Ricko (Rickojp) Portuguese, Brazilian 3154
RidnRaven (ridwankun2) Indonesian 2329
Janet Blackquill (pontaoski) toki pona 1216
SGKoishi Chinese Simplified 640
Cristofer GamerTVH (cristoferherame) Spanish 622
HDSeventh (hdseventh) Indonesian 315
EMRE ÇELİK (emre0447) Turkish 312
PHPoenX Russian 297
./lemon.sh (lemon-sh) Polish 206
Сергей Червяков (chsergeyg) Russian 182
okaythisisepic Russian 80
KomashiOFC Portuguese, Brazilian 76
Runesicle toki pona 22
Marotheit Pirate English 7
ATFGK Chinese Simplified 4

Upgrading

Before installing, make a complete backup of your existing server and all files and folders, including tshock.sqlite and the tshock folder. We are not responsible for failed installations. Please make sure you backup your data. Severe data loss or gain may occur.

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.

TShock - TShock 5.1.1 for Terraria 1.4.4.8 (ζ Ori)

Published by hakusaro almost 2 years ago

Welcome to TShock for Terraria 5.1.1 with support for Terraria 1.4.4.8.

Before installing, make a complete backup of your existing server and all files and folders, including tshock.sqlite and the tshock folder. We are not responsible for failed installations. Please make sure you backup your data. Severe data loss or gain may occur.

Data loss warning

If you use server-side characters, we recommend enabling login before join. We discovered a bug that existed in the 5.0.0 release just before this release. If a player is disabled by TShock before they login, a situation can occur where all SSC data is erased. We suggest alerting your users to this fact and telling them not to login if they're disabled. If they do this, they may lose all character data in the database. Alternatively, enable login before join.

We hope to fix this in the future but we learned that this bug is present in 5.0.0 and therefore, not a blocker for this release for Terraria compatibility reasons.

Notable changes in this release

  • Fixed item giving potentially dropping too many items. (@PotatoCider, @punchready)
  • Excluded GeoIP.dat from release bundle. (@SignatureBeef)
  • Added TownSlimeRed to FishableNpcIDs list, allowing it to be fished up. (@drunderscore)
  • Bump to Terraria 1.4.4.8 via OTAPI 3.1.18. (@hakusaro, @SignatureBeef)
    • In this version of Terraria, Main.maxBuffTypes and other maxWhateverTypes fields have been removed. Their replacements are in Terraria.ID.whateverID.Count. TShock calls to these fields have been swapped in order to bring forward compatibility with Terraria 1.4.4.8.
  • In OTAPI 3.1.17, allowed Crystal Shard to grow. (@sgkoishi, @cc004, SignatureBeef/Open-Terraria-API#96)
  • Added permission for summoning Mechdusa, Deerclops and slime pet. (@sgkoishi, #2808)
  • Changed login to only restrict CC'd players during login whilst SSC is enabled. (@drunderscore)
    • This change allows the config option RequireLogin to function usefully again when SSC is not enabled.
  • Changed PlayerData.RestoreCharacter to remove all buffs. (@drunderscore)
    • Before this change, it was theoretically possible to smuggle buffs onto servers with SSC enabled, by using buff indexes past 22.
  • Allowed Torch God's Favor to place different types of torches and campfires. (@sgkoishi, #2811)
  • Updated translations! Currently, the major projects are at the following completion rates:
    • Chinese (93%)
    • Portuguese, Brazilian (89%)
    • Indonesian (89%)
    • Russian (56%)
    • Spanish (24%)
    • toki pona (10%)
    • Turkish (8%)
    • For complete credits, see the table below.

Translation credits

The following translators contributed changes from November 1, 2022 to November 9, 2022 (from TShock 5.0.0 to 5.1.0).

Contributor Language Translated words
Shiva Goddess (ShivaGoddess) Portuguese, Brazilian 6979
Ricko (Rickojp) Portuguese, Brazilian 3154
RidnRaven (ridwankun2) Indonesian 2329
Janet Blackquill (pontaoski) toki pona 1216
SGKoishi Chinese Simplified 640
Cristofer GamerTVH (cristoferherame) Spanish 622
HDSeventh (hdseventh) Indonesian 315
EMRE ÇELİK (emre0447) Turkish 312
PHPoenX Russian 297
./lemon.sh (lemon-sh) Polish 206
Сергей Червяков (chsergeyg) Russian 182
okaythisisepic Russian 80
KomashiOFC Portuguese, Brazilian 76
Runesicle toki pona 22
Marotheit Pirate English 7
ATFGK Chinese Simplified 4

Upgrading

Before installing, make a complete backup of your existing server and all files and folders, including tshock.sqlite and the tshock folder. We are not responsible for failed installations. Please make sure you backup your data. Severe data loss or gain may occur.

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.

Note about version 5.1.0

TShock version mastering occurs as the last step in the release process. When we cut a new version, we expect to release that version and all changes made prior to the version being cut. Unfortunately, a late-breaking bug with new internationalization changes between 5.0.0 and 5.1.0 was discovered after 5.1.0 was mastered. Therefore, we opted to tick the version again after fixing the bug, and we mastered this release instead. No download for 5.1.0 will be made available, nor will a release.

TShock - TShock 5 for Terraria 1.4.4.7 (Alnilam)

Published by hakusaro almost 2 years ago

Welcome to TShock for Terraria version 5! This version adds support for Terraria 1.4.4.7, a brand new internationalization/localization/translation system from (@pontaoski), support for .NET 6, OTAPI 3, and a whole host of new features.

Before installing, make a complete backup of your existing server and all files and folders, including tshock.sqlitedb and the tshock folder. We are not responsible for failed installations. Please make sure you backup your data. Severe data loss or gain may occur.

BIG WARNING

This version of TShock is "relatively safe" to use. We cannot guarantee perfect code, accuracy, or completeness of this version.

Back up your server and back up all of the associated files before you install this version.

This software is free software, and the GPL v3 (i.e., our license) states:

  15. Disclaimer of Warranty.

  THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
APPLICABLE LAW.  EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
IS WITH YOU.  SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
ALL NECESSARY SERVICING, REPAIR OR CORRECTION.

  16. Limitation of Liability.

  IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
SUCH DAMAGES.

Notable changes in this release

  • Reduced load/save console spam. (@SignatureBeef, @YehnBeep)
  • Replaced SQLite library with Microsoft.Data.Sqlite for arm64 support. (@SignatureBeef)
  • Initial support for MonoMod hooks on Raspberry Pi (arm64). (@kevzhao2)
  • Ported to OTAPI3 and .NET6. (@SignatureBeef)
  • Introduced a new module framework for TShock developers. (@SignatureBeef)
  • Fixed a secondary crash when server init fails and log services were not initialised. (@SignatureBeef)
  • Added preliminary support for Terraria 1.4.4.4. (@SignatureBeef)
  • GrassSpreadEventArgs Color property has been changed from a Byte to a TileColorCache type. (@SignatureBeef)
  • SetDefaultsEventArgs now includes a nullable ItemVariant instance. (@SignatureBeef)
  • Use a string interpolation and escape single quotes when escaping tables. (@drunderscore)
  • Removed obsolete resource files TShockAPI/Resources.resx and TShockAPI/Resources.Designer.cs. (@Arthri)
  • Fixed hardcore and mediumcore not banning on death when settings are enabled. This also alters the TSPlayer.Ban method to remove the force option which is no longer needed. (@SignatureBeef)
  • Plugins and ./bin dependencies are now loaded relative to the launcher, this improves the use of startup files. (@SignatureBeef)
  • Added preliminary support for Terraria 1.4.4.5. (@drunderscore)
    • For clarity sake, we're listing the individual changes to Terraria's version, despite the fact that this version only supports the latest one.
  • Don't allow players to sync loadout index whilst disabled. (@drunderscore)
  • Fixed painting wall/tile being rejected from hand of creation. (@Rozen4334)
  • Added a second Utils.TryParseTime method for parsing large, positive time spans. (@punchready)
  • Fixed /tempgroup breaking on durations greater than roughly 24 days. (@punchready)
  • Fixed player not being checked for permissions to use the Shellphone (Ocean), Shellphone (Underworld) and Shellphone (Spawn). (@hufang360)
  • Updated to OTAPI 3.1.10-alpha, which allows FreeBSD .NET 6 to use Re-Logic's Linux platform. (@SignatureBeef)
  • Updated Github CI to not tarball files for Windows only. (@PotatoCider)
  • Allow Blood Butcherer and Shimmer buffs to be applied to NPCs by players. (@drunderscore)
  • In OTAPI 3.1.11-alpha, chest stacking was fixed. (@SignatureBeef)
  • In OTAPI 3.1.12-alpha, "server world deletions" were fixed. (@SignatureBeef)
  • Fixed NetTile errors by implementing new packet read/write data. (@SignatureBeef)
  • Fixed Inferno Fork causing kick from rejected abnormal buff. (@Stealownz)
  • Prevented Server Broadcast from executing without a message. (@PackmanDude, @punchready)
  • Added LiquidType.Shimmer. (@drunderscore)
  • Made Bouncer allow Bottomless Honey Bucket usage. (@drunderscore)
  • Made Bouncer reject Shimmer placement without bucket or whilst banned. (@drunderscore)
  • Fixed Bouncer rejecting Explosive Bunny critter release when using the Bunny Cannon, if the player had since stopped selecting the Explosive Bunny. (@drunderscore)
  • Allowed breaking of tiles that are in BreakableWhenPlacing set. This will allow you to place tiles over other tiles (like piles) properly, without being rejected. (@drunderscore)
  • Allowed the Axe of Regrowth and the Rubblemaker to pass Bouncer checks. (@drunderscore)
    • The Axe of Regrowth places a Saplings where a tree used to be, which previously failed.
    • The Rubblemaker places rubble (which are echo piles), of varying styles, which previously failed.
  • Fixed HandlePlayerAddBuff data handler always being marked as Handled, and therefore never allowing the PlayerAddBuff to be sent to anyone. (@drunderscore)
  • Improved OnPlayerBuff logic to properly handle players adding buffs to other players. (@drunderscore)
    • Check if the target ID is within bounds as the first thing to check.
    • Check if the buff type being applied is within bounds.
    • Introduce AddPlayerBuffWhitelist (replacing WhitelistBuffMaxTime), which allows us to specify the maximum amount of ticks a buff can be applied for, and if it can be applied without the target being in PvP.
    • When rejecting from OnPlayerBuff, instead of sending a PlayerAddBuff packet with the rejected buff (essentially a no-op, as the sender implicitly applies the buff to the target, and causes desync as the buff was rejected), send a PlayerBuff to re-sync the target's buffs, without the buff we just rejected.
  • Added new tile provider. Use -constileation or -c to use it. Constileation is an alternative tile provider to Tiled and HeapTile. (@SignatureBeef)
  • Fixed an exploit with grass mowing not removing hanging vines. (@punchready)
  • Added -additionalplugins command line argument to load additional plugins. (@pontaoski)
  • Added localization support for console spam reduction. (@KawaiiYuyu)
  • Added an internationalization system. The base for the i18n system was built by Janet Blackquill (@pontaoski). A small donation in her honor was made to the KDE project as a thankyou for this work. This also includes the TSHOCK_LANGUAGE environment variable. Setting TSHOCK_LANGUAGE=tok will enable a small number of Toki Pona translations as a proof-of-concept. (@pontaoski)
  • Added support for Terraria 1.4.4.6, through OTAPI 3.1.5. (@SignatureBeef)
  • Added GeoIP.dat back to the included list of files. (@SignatureBeef)
  • Allow loadouts to properly sync by allowing the SyncLoadout packet during early connection. (@drunderscore)
  • Introduced support for loadouts, and saving the current loadout index to SSC. Both NetItem and PlayerData were modified to support this. (@drunderscore)
  • Introduced checking of loadout slots for hacked item stacks. (@drunderscore)
  • Fixed players being kicked after using the Flamethrower to apply the OnFire3 debuff for 1200 ticks. (@BashGuy10)
  • Fixed being kicked for using the new sponge types on liquid. (@BashGuy10)
  • Fixed SSC not saving ateArtisanBread, usedAegisCrystal, usedAegisFruit, usedArcaneCrystal, usedGalaxyPearl, usedGummyWorm, usedAmbrosia, unlockedSuperCart, and enabledSuperCart data flags. (@hufang360)
  • Allowed flask buffs to be applied on town npc due to the Flymeal. Add a permission could skip the buff detection. (@KawaiiYuyu)
  • Dockerized TShock. (@PotatoCider)
  • Changed the log system to log the command itself without arguments if the command is not DoLog. (@sgkoishi, #2779)
  • Added ability for items given to players to be inserted directly into their inventory instead of spawned as an item drop. (@pontaoski)
  • Added support of -lang and -language flags for our i18n system. (@KawaiiYuyu)
  • Added support for Terraria 1.4.4.7 (OTAPI 3.1.16). (@drunderscore)
  • Added support for various languages, most notably Chinese (99% complete), Russian (57% complete), Indonesian (53% complete), and Spanish (21% complete). Thank you to the lovely contributors who were responsible for this on Crowdin:
    • RidnRaven (ridwankun2)
    • okaythisisepic
    • xml3344 has stopped making trouble (1212122222)
    • Axeel (AxeelAnder)
    • SGKoishi
    • Leader-txt (Leader_txt)
    • Esteban Delgado (Kojirremer)
    • Cai233
    • Anzhelika (AnzhelikaO)
    • VariolaX
    • hufang 360 (hufang360)
    • AgaSpace (Zoom L1) (agaspacel1)
    • Killia0 (Killia)
    • EMRE ÇELİK (emre0447)
    • Marcus Persson (squidistaken)
    • StarCloud-cy
    • HDSeventh (hdseventh)
    • JJJJGGGG12345
    • xml3344
    • Seele Vollerei (aaa1115910)
    • 问心|MiaoVPS (WenXin_MiaoVPS)
    • avlensa
    • Sykhasamann (Syks)
    • AndPlay
    • TruffleToad
    • kuaizhi
    • Simone Caporale (caporalesimone)
    • josefcorosado
    • kuukiman
    • Kronex (Kronex6)
    • Jifeng
    • Janet Blackquill (pontaoski)
    • Yuiinar (Yuiinars)
    • Muteduanxing

Upgrading

Download the correct version of TShock for your operating system and architecture. If you're not on Windows, extract the tar archive inside the zip archive, which was created to preserve filesystem permissions.

If you're using Windows 10 or earlier, or another operating system, install the latest version of .NET 6.

If you're upgrading from TShock 4, we suggest downloading the new release of TShock, copying the tshock configuration folder over (containing the sqlitedb file as well as the json configuration files, etc) to the new server, and starting the new server that way. This is because many files are removed and the existing files are no longer required from TShock 4. In addition, the new binary you need to run is called TShock.Server.exe or TShock.Server, not TerrariaServer.exe.

In addition, you no longer need to install mono-complete or mono on non-Windows operating systems.

Upgrading plugins

All plugins need updates to support .NET 6.

If you're a developer, use the upgrade assistant from .NET to upgrade to .NET 6. This release also coincides with TShock 5.0.0 on nuget and TSAPI 5.0.0 on nuget.

Updated documentation

Updated documentation for updating or installing TShock is now available on the TShock website. The README.md file on github now corresponds with developer instructions. You'll find that developing TShock is significantly easier on OTAPI 3.

The documentation on readme.io is now considered deprecated. As we work to migrate all documentation to our new service, we will eventually remove or replace readme.io's documentation entirely.

Finding plugins

As we work on a new solution for finding plugins, we'd like to draw attention to the fact that as of December 31, 2021, @hakusaro is no longer approving new plugins on https://github.com/Pryaxis/Plugins. As an alternative, we suggest using plugins that you know you trust from trusted developers, available on GitHub. In addition, we have a Discord "forum" setup for discussing plugins already. To see this, join Discord. If you speak Chinese, we suggest using this fancy plugin repository. If you want to setup or operate a plugin directory, please let us know. We'd be more than happy to link-to and support your efforts.

Questions?

If you have questions, please ask in the release discussion or on Discord. We're sure there will be lots of them. Please ask away.

TShock - TShock 4.5.18

Published by hakusaro about 2 years ago

This version of TShock for Terraria adds updated and improved handling of SendTileRectangle packets. The previous approach acted on a "denylist" basis. That is to say, it attempted to parse out which actions were invalid, and denied based on patterns that matched that. Based on a cheating client that was recently released, @punchready implemented an alternative system, based on an allowlist approach. This approach, in contrast to the prior approach, only permits SendTileRectangle placements that specifically exist in the game, based on hand-analysis of the game logic. If you encounter any normal gameplay situations that render these fixes problematic, please send us a report. This should dramatically increase serverside security and prevent a host of exploits affecting TShock. Also included in this patch is a fix for an exploit that allowed users to place ice tiles in protected regions. This was revealed by a cheat developer to be a method for griefing some public servers with spawn protection.

Notable changes in this version

  • Fixed TSPlayer.GiveItem not working if the player is in lava. (@gohjoseph)
  • Only allow using Teleportation Potions, Magic Conch, and Demon Conch whilst holding them. (@drunderscore)
  • Updated server startup language to be more clear when encountering a fatal startup error. Now, the server gives more context as to what happened so that there's a better chance of people being able to help themselves. (@hakusaro)
  • Added -worldevil <type> command line argument (@NotGeri)
  • Added PlayerHasBuildPermission hook to PlayerHooks. (@AnzhelikaO, @Killia0)
  • Fixed an exploit in which the Ice Block deletion allowance from the Ice Rod bypassed region protection, allowing for deleting all tiles in a protected region and/or replacing them with Ice Blocks. (@punchready)
  • Changed SendTileRect handling from a denylist to an allowlist with stricter checks. This prevents essentially all exploits involving this packet. Most notably this stops people from placing arbitrary tiles with arbitrary framing values, which are the root of most exploits. (@punchready)
  • Removed the config options TileRectangleSizeThreshold and KickOnTileRectangleSizeThresholdBroken because they are made obsolete by the new system, which will only allow valid rectangle sizes (at a maximum of only 4 by 4 tiles in 1.4.3.6). (@punchready)
  • Bumped Newtonsoft Json to 13.0.1. (@dependabot)

Upgrading

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.

TShock - TShock 4.5.17

Published by hakusaro over 2 years ago

This release fixes two really annoying bugs that were contributed by @gohjoseph!

Notable changes

  • Fixed duplicate characters (twins) after repeatedly logging in as the same character due to connection not being immediately closed during NetHooks_NameCollision. (@gohjoseph)
  • Fixed mobs not dropping picked up coins. (@gohjoseph)

Upgrading

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.

TShock - TShock 4.5.16 for Terraria 1.4.3.6

Published by hakusaro over 2 years ago

Notable changes

  • Added preliminary support for Terraria 1.4.3.6. (@SignatureBeef, @hakusaro)

Upgrading

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.

TShock - TShock 4.5.15 for Terraria 1.4.3.6

Published by hakusaro over 2 years ago

Notable changes

  • Added very very preliminary support for Terraria 1.4.3.6. May not work at all.
    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

Upgrading

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.

TShock - TShock 4.5.15 for Terraria 1.4.3.5

Published by hakusaro over 2 years ago

Notable changes

  • Added preliminary support for Terraria 1.4.3.5. (@SignatureBeef, @hakusaro)

Upgrading

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.

TShock - TShock 4.5.14 for Terraria 1.4.3.4

Published by hakusaro over 2 years ago

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.

Notable changes

  • Improved the /grow command to reduce code duplication, use TileID constants for less ambiguous types. (@drunderscore)
  • Fixed item dupe via /logout & NPC. (@Terrarxxn)
  • Added preliminary support for Terraria 1.4.3.4. Note that this has the side-effect of adding 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)

Upgrading

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.

TShock - TShock 4.5.13

Published by hakusaro over 2 years ago

Notable changes

  • Added hook 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)
  • Added filter in GetDataHandlers.HandleCatchNpc that stops unregistered and logged out players on SSC servers to catch critters. (@tru321)
  • Fixed rejection check inside of HandlePaintTile to account for the Paint Sprayer (or Architect Gizmo Pack) being inside your inventory, rather than on an accessory slot. (@drunderscore)
  • Added the lanterns night event to the /worldevent command. (@0x3fcf1bbd)
  • Marked TSPlayer.SendTileSquare as deprecated, and created TSPlayer.SendTileSquareCentered that sends a tile square centered around the passed coordinates. (@0x3fcf1bbd)
  • Added coordinates clamping to TSPlayer.SendTileRect so as to avoid OOBs. (@0x3fcf1bbd)
  • Removed extraneous space causing build commands in README to fail. (@EtherTyper)

Upgrading

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.

TShock - TShock 4.5.12

Published by hakusaro almost 3 years ago

Notable changes

  • Fixed the ability to spawn Zenith projectile with non-original items. (@AgaSpace)
  • Added hook 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)
  • Fixed the ability to create custom messages with your death (or the death of another player) (@AgaSpace)
  • Added the 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)
  • Added check to HandleNpcTalk to ensure the passed NPC index is within bounds (>= -1 && < Main.maxNPCs). (@drunderscore)

Upgrading

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.

TShock - TShock 4.5.11

Published by hakusaro almost 3 years ago

Notable changes

  • Add the new allowed buff TentacleSpike to NPC buff cheat detection bouncer. (@sgkoishi)
  • Changed hook 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)
  • Fixed an issue where certain projectiles could be sent to the server with uncapped size parameters, which resulted in large disruptive client artifacts that could be used to grief players. (@AgaSpace, @Arthri)
  • Added the currently running value of Main.GameMode to /worldmode as "Mode". (@hakusaro)

Upgrading

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.

TShock - TShock 4.5.10

Published by hakusaro almost 3 years ago

This version of TShock is protocol compatible with Terraria 1.4.3.2.

Notable changes

  • Changed the server behavior when 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)

Did you know?

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?

Updating

To update TShock, simply replace all of the files in your server folder with those from the release folder.

TShock - TShock 4.5.9 (Terraria 1.4.3.2)

Published by hakusaro almost 3 years ago

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.

Notable changes

  • Added the ability to change a TSPlayer's PVP mode. (@AgaSpace)
  • Added protocol level support for Terraria 1.4.3.2. (@DeathCradle, @Patrikkk)

Did you know?

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?

Updating

To update TShock, simply replace all of the files in your server folder with those from the release folder.

TShock - TShock 4.5.8 (Terraria 1.4.3.1)

Published by hakusaro almost 3 years ago

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.

Notable changes

  • Removed TShockAPI/DB/DBTools.cs. This appears to have been dead code and not used by anything. (@hakusaro, @DeathCradle)
  • Fixed the /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)
  • Fixed bad XML of TShock code documentation. (@Arthri)
  • Fixed Bouncer exploits allowing for invalid tiles' placement. These tiles(specifically torches) caused clients to crash. The fixed exploits are listed below. (@Arthri, @QuiCM)
    • Biome Torch Correction. Previously, it used unrelated values to validate biome torches, and unintentionally passed on invalid tiles. It's now fixed to use the correct values and block invalid torches. As well as a new right booster track correction/check, to allow right booster tracks to be placed. Right booster track is an extraneous place style because it depends on the direction the player is facing. The new check takes that into consideration so that the place style isn't considered mismatched and rejected.
    • Max Place Styles. Previously, it rejects only if both 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.

Updating

To update TShock, simply replace all of the files in your server folder with those from the release folder.

TShock - TShock 4.5.7 (Terraria 1.4.3.1)

Published by hakusaro almost 3 years ago

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.

Notable changes

  • Fixed the /respawn command to permit respawning players from the console. (@hakusaro, @Kojirremer)
  • Removed the old password hashing system, which predated 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)
  • Updated to OTAPI 2.0.0.46, which adds support for Terraria Protocol 1.4.3.1. (@Patrikkk, @DeathCradle)
  • Change warning: a release of TShock for .NET 5 and OTAPI 3 may be imminent.

Updating

To update TShock, simply replace all of the files in your server folder with those from the release folder.

TShock - TShock 4.5.6 (Terraria 1.4.3.0)

Published by hakusaro almost 3 years ago

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.

Notable changes

  • Updated Linux guide. (@NezbednikSK)
  • Fixed SendTileRectHandler not sending tile rect updates like Pylons/Mannequins to other clients. (@Stealownz)
  • Introduced SoftcoreOnly config option to allow only softcore characters to connect. (@drunderscore)
  • Fixed some typos that have been in the repository for over a lustrum. (@Killia0)
  • Added a 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)
  • 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)
  • Added a new /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)
  • Added a notification message and silent command support for permanently changing a target player's user group. Now players who received a group change will be notified of their new group if they are currently online. (@moisterrific, @QuiCM)
  • Changed the TSPlayer IP method to return the loopback IP if RealPlayer is false. (@Rozen4334)
  • Fixed a bug that caused sundials to be ignored all the time, instead of only when the player has no permission or time is frozen. (@Rozen4334)
  • Added colours and usage examples (similiar to how the new ban system looks) for many more commands. (@moisterrific)
  • Changed RespawnSeconds and RespawnBossSeconds from 10 to 0 to respect the game's default respawn timers. (@moisterrific)
  • Updated Open Terraria API (OTAPI) and TSAPI for preliminary support of Terraria 1.4.3.0. This functionally changes OTAPI and points to 2.0.0.45 from 2.0.0.43 in previous versions. Developer note: 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)
  • Added Deerclops to /spawnboss command. (@hakusaro, @HiddenStriker)
  • Fixed GHSA-6w5v-hxr3-m2wx. (@Yoraiz0r, @Arthri)
  • Fixed an issue where player build permissions would reject gem lock changes, even if 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)
  • Fixed an issue where /god [player] would tell [player] that they were in godmode regardless of whether or not they were or not. (@hakusaro, @Kojirremer)
  • In TSAPI: Updated PacketTypes to support SetMiscEventValues (140), RequestLucyPopup (141), and SyncProjectileTrackers (142). (@hakusaro)
  • Added 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)
  • Blank passwords will be upgraded to 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)

Updating

To update TShock, simply replace all of the files in your server folder with those from the release folder.

TShock - TShock 4.5.5

Published by hakusaro about 3 years ago

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.

Notable changes

  • Changed the world autosave message so that it no longer warns of a "potential lag spike." (@hakusaro)
  • Added /slay as an alias for /kill to be more consistent with other server mods. (@hakusaro)
  • Added /god as an alias for /godmode to be more consistent with other server mods. (@hakusaro)
  • Fixed ridiculous typo in Amethyst Gemtree text. (@hakusaro)
  • Fixed 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)
  • Changed "success message" color to 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)
  • Changed the default respawn timer to 10 seconds, so as to not desynchronize from the game by default. (@hakusaro)
  • Fixed /home allowing players to bypass the respawn timer. (@hakusaro, @moisterrific, @Arthri)
  • Added the config option 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)
  • Fixed /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)
  • Fixed /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, GroupManagerExceptions 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)
  • Removed the old 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)
  • Added 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)
  • Correct rejection message in LandGolfBallInCupHandler to output the proper expected player id. (@drunderscore)
  • Clarified the error mesage that the console is presented if a rate-limit is reached over REST to indicate that "tokens" actually refers to rate-limit tokens, and not auth tokens, and added a hint as to what config setting determines this. (@hakusaro, @patsore)
  • Fixed an issue where, when the console was redirected, input was disabled and commands didn't work, in TSAPI. You can now pass -disable-commands to disable the input thread, but by default, it will be enabled. Fixes #1450. (@DeathCradle, @QuiCM)
  • 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)
  • Fixed Bouncer inconsistently using 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.

Updating

To update TShock, simply replace all of the files in your server folder with those from the release folder.