Skip to content

TShock 5 for Terraria 1.4.4.7 (Alnilam)

Compare
Choose a tag to compare
@hakusaro hakusaro released this 01 Nov 00:15
· 185 commits to general-devel since this release
1baad06

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.