TShock: Server-Side Characters and Anti-Cheat for Terraria Servers
☕️⚡️TShock provides Terraria servers with server-side characters, anti-cheat, and community management tools.
At a glance
- What is it?
- TShock is a Terraria server toolbox that moves characters, permissions and item bans to the server side. It is built with the .NET 9 SDK, ships a Dockerfile, and is licensed GPL-3.0.
- Who is it for?
- Adopt TShock if you run a public or semi-public Terraria server and need characters stored server-side, per-group permissions and item bans, and you are willing to keep a .NET 9 toolchain and a plugin set in step with each Terraria update. Do not adopt it if you want a vanilla server, cannot rebuild on release day, or need a client-side-only modpack.
- Can I use it commercially?
- Yes, with conditions. GPL-3.0 is a copyleft licence: if you distribute software that includes it, you must release that software's source code under the same licence. Running it internally without distributing it does not trigger that obligation.
- Is it still maintained?
- Yes. The repository last received commits 7 days ago.
- What is it written in?
- Mainly C#, according to GitHub's language statistics.
Answers come from the project's GitHub data, last synced on September 24, 2026, and from our analysis. They are not legal advice.
Editorial analysis
What TShock Adds to a Terraria Server
A vanilla Terraria server trusts the client. Character inventory, health and progress live on the player's machine, and the server accepts what the client reports. TShock changes that arrangement by acting as a plugin on top of the Terraria server: the README describes it as a toolbox for Terraria servers and communities with anti-cheat tools, server-side characters, groups, permissions and item bans. The audience is server operators who host for other people, and plugin developers who want to extend the server. The README is explicit that this document is written for developers and hackers, and that operator-facing documentation is being built separately at ikebukuro.tshock.co and is a work in progress. That split matters when you evaluate it: the repository is a build guide, not a manual. The project is licensed GPL-3.0, with COPYING at the repository root, and the last push to the default branch general-devel was on 2026-09-23.
How TShock Sits on Top of the Terraria Server API
TShock is itself a plugin. It loads through the Terraria Server API, and the repository carries TerrariaServerAPI as a submodule, which is why the clone command in the README uses --recurse-submodules. The README explains the unusual part of this API: because of how OTAPI works, plugins have direct access to all public fields in the Terraria namespace, so TShock and other plugins call Terraria member methods directly, for example calls to Main. The README compares this to net.minecraft.server calls in CraftBukkit. Practically, that means TShock is coupled to a specific Terraria server build. The release names make the coupling visible: v6.1.0 is labelled TShock 6.1 for Terraria 1.4.5.6, and v6.0.0 for Terraria 1.4.5.5. A Terraria update that changes those fields is not a cosmetic event for this codebase. The repository layout reinforces the plugin model: TShockAPI holds the core, TShockLauncher runs a server, TShockPluginManager and TShockInstaller are separate projects, and prebuilts and scripts sit alongside them.
Building TShock from Source with the .NET 9 SDK
The README states the guide assumes the .NET 9 SDK is installed and that you are comfortable on the command line, and notes that Visual Studio 2022 or Visual Studio Code should work as well. Clone with submodules, enter the directory, then build. The README's own wording is that dotnet build really will build things.
git clone https://github.com/Pryaxis/TShock.git --recurse-submodules
cd TShock
dotnet buildTo start a server rather than just compile, the README points at the launcher project.
dotnet run --project TShockLauncherFor a distributable package the README gives a publish command for win-x64, and notes the same pattern works for osx-x64, linux-x64, linux-arm64 and linux-arm, with output landing in TShockLauncher/bin/Release/net9.0/ under the architecture you chose.
cd TShockLauncher
dotnet publish -r win-x64 -f net9.0 -c Release -p:PublishSingleFile=true --self-contained falseIf you would rather not build, the repository includes a Dockerfile that builds the server image and runs TShock.Server as the entrypoint, exposing ports 7777 and 7878 and declaring volumes for /tshock, /worlds and /plugins. The entrypoint passes -configpath, -logpath, -crashdir, -worldselectpath and -additionalplugins, so a container deployment separates configuration, worlds and plugins into three mounts.
Where TShock Is the Wrong Tool
Server-side characters change the game for players who expect their local character to carry over, and that is a design decision, not a bug you can patch around. If your group plays co-op from local saves, TShock's core feature is friction. The dependency on the Terraria Server API is the sharper limitation. Because plugins reach directly into Terraria's public fields, a Terraria patch can break TShock and every plugin built against it until each is updated. The release history shows how tightly releases track game versions: v6.0.0-pre3 was tagged for .NET 9, v6.0.0 for Terraria 1.4.5.5, and v6.1.0 for Terraria 1.4.5.6, all within days of each other in March 2026. If you cannot rebuild and redeploy on that cadence, pin your Terraria version and stay on the matching TShock release. There is also an access asymmetry worth knowing before you plan plugin work: the README says Pryaxis provides decompiled Terraria server Sources updated with each release, and that access is granted to developers who have submitted a pull request to TShock, via Discord. Everyone else is told to decompile with ILSpy. Finally, the README does not document rollback of a TShock upgrade or a downgrade path for worlds touched by a newer version.
TShock Compared with a Plain Terraria Server
The alternative most operators weigh is the stock Terraria server with no plugin layer. It is simpler: no .NET SDK, no submodule clone, no plugin version matrix, and characters stay on the client as the game intends. What you give up is the entire reason TShock exists. A vanilla server has no groups or permissions model, no item bans, and no server-side character storage, so you cannot grant a trusted player limited commands or keep an inventory out of a client's reach. The trade is operational cost against control. TShock asks you to track Terraria releases, TShock releases and plugin releases together, and the release naming makes that a three-way match. If you only ever play with people you know and you do not need command tiers or bans, the stock server is the smaller system and the one less likely to break on patch day.
Licence, Maintenance and Upgrade Cost
TShock is GPL-3.0, and COPYING sits at the repository root. That is a copyleft licence, which is worth understanding before you build a closed plugin against TShockAPI or redistribute a modified server; the project's own README does not discuss the implications, so read COPYING and, if the answer affects a product, take proper advice rather than treating this paragraph as legal guidance. On maintenance: the repository is not archived, and the last push to general-devel was on 2026-09-23. The upgrade cost is the real line item. Each Terraria release can require a TShock release, and each TShock release can require every plugin to be rebuilt because of the direct field access described in the README. The repository ships TShockLauncher.Tests and CI configuration in .github and appveyor.yml, which tells you the project tests its own launcher, but nothing in the README promises your third-party plugins will survive a version bump.
Getting Help and Contributing
The README directs developers to Discord for help and for access to the decompiled Terraria Sources, and points to the TShockResources organization for other open source plugins to read and build on. It also carries a code of conduct that applies to community spaces, including a clause against circumventing it through clever reasoning. For plugin authors, the practical starting point is reading TShock itself as a plugin, since the README notes that TShock is a plugin and most plugins are open source. Localisation runs through Crowdin, with crowdin.yml in the repository and i18n in the tree.
Editorial conclusion
Adopt TShock if you run a public or semi-public Terraria server and need characters stored server-side, per-group permissions and item bans, and you are willing to keep a .NET 9 toolchain and a plugin set in step with each Terraria update. Do not adopt it if you want a vanilla server, cannot rebuild on release day, or need a client-side-only modpack. Verify first that your Terraria version matches the TShock release you pick, that your world and config directories are the ones the launcher is pointed at, and that every plugin you rely on has been rebuilt against the same TShock version.
Frequently asked questions
Is TShock free?
Yes. TShock is distributed under GPL-3.0, and the licence text is in COPYING at the repository root. There is no paid tier described in the README.
What is TShock?
TShock is a toolbox for Terraria servers and communities. The README lists anti-cheat tools, server-side characters, groups, permissions, item bans and commands among its features, and it runs as a plugin on the Terraria Server API.
How do I install TShock from source?
The README assumes the .NET 9 SDK is installed, then has you clone with --recurse-submodules, enter the TShock directory and run dotnet build. Running a server is a separate step with dotnet run --project TShockLauncher.
How do I set up a TShock server?
Build the repository, then start TShockLauncher. The Dockerfile shows the server entrypoint running TShock.Server with -configpath, -logpath, -crashdir, -worldselectpath and -additionalplugins, and it exposes ports 7777 and 7878.
How do I install TShock plugins?
Plugins are loaded through the Terraria Server API, and the launcher accepts an -additionalplugins path, which the Dockerfile points at /plugins. The README also suggests the TShockResources organization as a place to find plugins to read and build on.
Official sources
Add this badge to your README
If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.
[](https://hysenlabs.com/projects/pryaxis-tshock)