Releases: Pryaxis/TShock
TShock 4.4.0 Pre-release 12 for Terraria 1.4.0.5
To upgrade, simply overwrite all applicable files in your existing server folder. TShock releases are designed so that you can upgrade by copying all files over and clicking "yes" to overwrite any duplicates. All existing world and character and database data will be saved.
- Fixed various bugs related to Snake Charmer's Flute. (@Rustly)
- The entirety of the snake now places.
- The old snake now removes when placing a new snake.
- Players are no longer disabled for breaking TilePlace/TileKill thresholds when modifying snakes.
- Prevented players from seeing the npc spawnrate change permission error on join. (@Rustly)
- Installed new sprinklers!
- Organized parameters by category and relevance in the
config.json
file. (@kubedzero) - Fixed multiple holes in Bouncer OnTileData. (@Patrikkk, @hakusaro)
- Issue where players could replace tiles with banned tiles without permission.
- Including replace action in TilePlace threshold incrementation, so players cannot bypass the threshold while replacing tiles/walls.
- Including check for maxTileSets when player is replacing tiles, so players cannot send invalid tile data through the replace tile action.
- Including a check for ReplaceWall when the tile is a Breakable/CutTile.
- Adding checks in Bouncer OnNewProjectile (@Patrikkk):
- For valid golf club and golf ball creation.
- Renamed stabProjectile to directionalProjectile for a more accurate naming.
- Adding staff projectiles to the directionalProjectiles Dictionary to include staffs in the valid projectile creation check.
- Adding GolfBallItemIDs list in Handlers.LandGolfBallInCupHandler.cs
- Fixed an issue in the SendTileSquare handler that was rejecting valid tile objects. (@QuiCM)
- Fixed the issue where players were unable to place regular ropes because of the valid placement being caught in Bouncer OnTileEdit. (@Patrikkk)
- Added pet license usage permissions to
trustedadmin
andowner
groups. Do note that this has a high network usage and can be easily be abused so it is not recommended to give out this permission to lower level groups. (@moisterrific) - Removed checks that prevented people placing personal storage tiles in SSC as the personal storage is synced with the server. (@Patrikkk)
- Cleaned up a check in Bouner OnTileEdit where it checks for using the respective item when placing a tile to make it clearer. This change also fixed the issue in a previous commit where valid replace action was caught. Moved the check for max tile/wall types to the beginning of the method. (@Patrikkk)
- Improved clarity for insufficient permission related error messages. (@moisterrific)
- Removed redundant Boulder placement check that prevented placing chests on them, as it is no longer possible to place a chest on a boulder, so nothing crashes the server. "1.2.3: Boulders with Chests on them no longer crash the game if the boulder is hit." (@kevzhao2, @Patrikkk)
/itemban
-/projban
-/tileban
- Added adefault:
case to the commands so an invalid subcommand promts the player to enter the help subcommand to get more information on valid subcommands. (@Patrikkk)/world
- Renamed to /worldinfo to be more accurate to it's function. Command now displays the world'sSeed
. Reformatted the world information so each line isn't repeatedly starting with "World". (@Patrikkk)/who
- Changed the display format of the online players when the-i
flag is used. FromPlayerName (ID: 0, ID: 0)
toPlayerName (Index: 0, Account ID: 0)
for clarification. (@Patrikkk)- Added DisplayDollItemSync event. An event that is called when a player modifies the slot of a DisplayDoll (Mannequin). This event provides information about the current item in the displaydoll, as well as the item that the player is about to set. (@Patrikkk)
- Added DisplayDollItemSyncHandler, which checks for building permissions of the player at the position of the DisplayDoll. (If they do not have permissions, it means they are hacking as they could not even open the doll in the first place.) (@Patrikkk)
- Added RequestTileEntity packet handling. (@Patrikkk)
- Implemented the OnRequestTileEntityInteraction even hook in GetDataHandler. (@Patrikkk)
- Created RequestTileEntityInteractionHandler which checks for building permissions when the player is attempting to open a display doll (Mannequin) or a Hat Rack. This now prevents players from opening a Mannequin or a Hat Rack if they have no building permissions at the position of these tile entities. As of 1.4.0.5, these are the only two items that use this packet. (@Patrikkk)
TShock 4.4.0 Pre-release 11 for Terraria 1.4.0.5
- New permission
tshock.tp.pylon
to enable teleporting via Teleportation Pylons (@QuiCM) - New permission
tshock.journey.research
to enable sharing research via item sacrifice (@QuiCM) - Add Emoji event to GetDataHandler. This packet is received when a player tries to display an emote. (who?)
- Adding EmojiHandler to handle an exploit. Adding
tshock.sendemoji
permission and checks. Added this permission to guest group by default. (who?)
- Adding EmojiHandler to handle an exploit. Adding
- Handled SyncCavernMonsterType packet to prevent an exploit where players could modify the server's cavern monster types and make the server spawn any NPCs - including bosses - onto other players. (who?)
- Added LandGolfBallInCup event which is accessible for developers to work with, as well as LandGolfBallInCup handler to handle exploits where players could send direct packets to trigger and imitate golf ball cup landing anywhere in the game world. Added two public lists in Handlers.LandGolfBallInCupHandler: GolfBallProjectileIDs and GolfClubItemIDs. (@Patrikkk)
- Added SyncTilePicking event. This is called when a player damages a tile. Implementing SyncTilePickingHandler and patching tile damaging related exploits. (Preventing player sending invalid world position data which disconnects other players.)
- Fixed the issue where mobs could not be fished out during bloodmoon because of Bouncer checks. (@Patrikkk)
- Update for OTAPI 2.0.0.37 and Terraria 1.4.0.5. (@hakusaro, @Patrikkk)
- Adding missing PlayerInfo data in GetDataHandler. (@Patrikkk)
Usual disclaimers apply.
TShock 4.4.0 Pre-release 10 for Terraria 1.4.0.4
- Fix all rope coils. (@Olink)
- Fixed a longstanding issue with SendTileSquare that could result in desyncs and visual errors. (@QuiCM)
- Fixed placement issues with Item Frames, Teleportation Pylons, etc. (@QuiCM)
- Doors are good now for real probably (@QuiCM, @hakusaro, @Olink)
- Bump default max damage received cap to 42,000 to accommodate the Empress of Light's instant kill death amount. (@hakusaro, @moisterrific, @Irethia, @Ayrawei)
- Updated /spawnboss command to include Empress of Light, Queen Slime, and other additional bosses that have a health bar. (@moisterrific)
Please remove tshock.ignore.sendtilesquare from people's permission buckets to turn back on send tile square protection and only change it if doors don't work still. Please remember that keeping TShock running on a server that is open to the public is currently not advised due to several known anticheat issues.
TShock 4.4.0 Pre-release 9 for Terraria 1.4.0.4
- Fixed pet licenses. (@Olink)
- Added initial support for Journey mode in SSC worlds. (@Olink)
- Made TShock database MySQL 8 compatible by escaping column names in our IQueryBuilder code. (Name
Groups
is a reserved element in this version, which is used in ourRegion
table.) (@Patrikkk) - Reintroduced
-worldselectpath
per feedback from @fjfnaranjo. This command line argument should be used to specify the place where the interactive server startup will look for worlds to show on the world select screen. The original version of this argument,-worldpath
, was removed because several game service providers have broken configurations that stop the server from running with an unhelpful error. This specific configuration was-world
and-worldpath
. In the new world, you can do the following:-worldselectpath
should be used if you want to customize the server interactive boot world list (so that you can select from a number of worlds in non-standard locations).-world
will behave as an absolute path to the world to load. This is the most common thing you want if you're starting the server and have a specific world in mind.-worldselectpath
and-worldname
should work together enabling you to select from a world from the list that you specify. This is not a world file name, but a world name as described by Terraria.-worldselectpath
is identical to the old-worldpath
. If you specify-worldselectpath
and-world
without specifying an absolute path the server will crash for sure.- Thank you again to @fjfnaranjo for supplying a detailed feature request explaining precisely why this option should be available. Without this, we would have had no context as to why this feature was useful or important. Thank you, @fjfnaranjo!
- This change was implemented by (@QuiCM, @hakusaro).
- Updated Bouncer to include Sparkle Slime debuff that can be applied to town NPCs. (@moisterrific)
- Updated
/spawnboss
command to include Empress of Light and Queen Slime. (@moisterrific) - Added journey mode permissions to owner group by default. (@moisterrific)
- Fixed kick on hardcore death / kick on mediumcore death / ban on either from taking action against journey mode players. (@hakusaro)
- Attempted to fix the problem with the magic mirror spawn problems. You should be able to remove your spawn point in SSC by right clicking on a bed now. (@hakusaro, @AxeelAnder)
- Added HandleFoodPlatterTryPlacing event, which is called whenever a player places a food in a plate. Add antihack to bouncer, to prevent removing food from plates if the region is protected; To prevent placement if they are not in range; To prevent placement if the item is not placed from player hand. (@Patrikkk)
- Fixed an offset error in NetTile that impacted
SendTileSquare
. It was being read as abyte
and not aushort
. (@QuiCM) - Fixed coins not dropping after being picked up by npcs. The ExtraValue packet was not being read correctly. (@Olink)
- Removed packet monitoring from debug logs. To achieve the same results, install @QuiCM's packet monitor plugin (it does better things). (@hakusaro)
- Updated packet monitoring in send tile square handler for Bouncer debugging. (@hakusaro)
- Added
/sync
, activated withtshock.synclocalarea
. This is a default guest permission. When the command is issued, the server will resync area around the player in the event of a desync issue. (@hakusaro)- If your doors disappear, this command will allow a player to resync without having to disconnect from the server.
- The default group that gets this permission is
Guest
for the time being. - To add this command to your guest group, give them
tshock.synclocalarea
, with/group addperm guest tshock.synclocalarea
. - This command may be removed at any time in the future (and will likely be removed when send tile square handling is fixed).
- Fixed smart door automatic door desync and deletion issue. (@hakusaro)
Please remove tshock.ignore.sendtilesquare
from people's permission buckets to turn back on send tile square protection and only change it if doors don't work still. Please remember that keeping TShock running on a server that is open to the public is currently not advised due to several known anticheat issues.
TShock 4.4.0 Pre-release 8 for Terraria 1.4.0.4
- Update for OTAPI 2.0.0.36 and Terraria 1.4.0.4. (@hakusaro, @Patrikkk, @DeathCradle)
- Fixed /wind command. (@AxeelAnder)
- Fixed NPC debuff issue when attempting to fight bosses resulting in kicks. (@AxeelAnder)
- Fixed players are unable to remove an NPC. Change
byte NPCHomeChangeEventArgs.Homeless
toHouseholdStatus NPCHomeChangeEventArgs.HouseholdStatus
. (@AxeelAnder) - Fixed lava, wet, honey, and dry bombs;
and lava, wet, honey, and dry grenades;
and lava, wet, honey, and dry rockets;
and lava, wet, honey, and dry mines. (@Olink) - Fix Bloody Tear displaying the wrong text when used. (@Olink)
- Fix the visibility toggle for the last two accessory slots. (@Olink)
- Adding Journey mode user account permissions. Journey mode must be enabled for these to have any effect. (@Patrikkk)
tshock.journey.time.freeze
tshock.journey.time.set
tshock.journey.time.setspeed
tshock.journey.godmode
tshock.journey.wind.strength
tshock.journey.wind.freeze
tshock.journey.rain.strength
tshock.journey.rain.freeze
tshock.journey.placementrange
tshock.journey.setdifficulty
tshock.journey.biomespreadfreeze
tshock.journey.setspawnrate
- Changed default thresholds for some changes in the config file to accommodate new items & changes to Terraria. (@hakusaro)
If you have problems with smart doors and you trust your users unconditionally, you can give them the permission tshock.ignore.sendtilesquare
. Please note that when you do this, you're basically giving them full control of the world. Don't give this to anyone who you don't want to have full control of the world.
Please vote on what you want us to work on next with a thumbs-up emoji. Remember that you can set DebugLogs
to true
and then give us your logs to quickly fix problems. The 1.4 project is public and you can view it right now.
TShock 4.4.0 Pre-release 7 for Terraria 1.4.0.4 (Entangled)
Backup your data! Copy your server's tshock.sqlite, config, and world files to a separate location before unpacking.
- Fixed bed spawn issues when trying to remove spawn point in SSC. (@Olink)
- Fixed Snake Flute. (@Olink)
- Fixed lava absorbant sponge not capturing lava.
LiquidSetEventArgs
now returns aLiquidType
instead of a byte type. (@hakusaro) - Fixed bottomless lava bucket from not being able to create lava. (@hakusaro)
- Ban a lava bucket to ban lava on the server entirely, until we figure out a better way to handle liquids.
- Fixed scarab bombs not detonating on pick style tiles. (@hakusaro)
- Fixed dirt bombs not creating dirt. (@hakusaro)
- Added a ridiculous amount of debug information. If you're experiencing any problems with 1.4 items being caught by the TShock anticheat system, please turn on DebugLogs in your config file and capture log data. It'll be extremely helpful in narrowing down precisely how to fix your problem. (@hakusaro)
- Released with entangled support for 1.4.0.4 based on @Patrikkk local build and latest snapshot gen-dev. (@hakusaro)
This is a release that is suitable for private servers with trusted players: several anticheat checks have been disabled due to changes in the Terraria
protocol. These checks include projectile spam checks and net modules (liquid exploits in particular). We highly suggest making a backup of your world (and potentially any existing server data you have). This is also an interesting release because it includes changes that have been in development for quite some time. If you're a plugin developer, now is the time to start updating. More breaking changes may happen, but there will always be an updated API version to track.
TShock 4.4.0 Pre-release 6 for Terraria 1.4.0.3
Backup your data! Copy your server's tshock.sqlite, config, and world files to a separate location before unpacking.
This is basically identical to pre5, which added support for Terraria 1.4.0.3 and potentially fixed the player desync issue on SSC systems.
This is a release that is suitable for private servers with trusted players: several anticheat checks have been disabled due to changes in the Terraria protocol. These checks include projectile spam checks and net modules (liquid exploits in particular). We highly suggest making a backup of your world (and potentially any existing server data you have). This is also an interesting release because it includes changes that have been in development for quite some time. If you're a plugin developer, now is the time to start updating. More breaking changes may happen, but there will always be an updated API version to track.
Backup your data! Copy your server's tshock.sqlite, config, and world files to a separate location before unpacking.
TShock 4.4.0 Pre-release 4 for Terraria 1.4.0.2
This is TShock 4.4.0 Pre-release 4 for Terraria 1.4.0.2!
- Debug logging now provides ConsoleDebug and ILog has been updated to support the concept of debug logs. Debug logs are now controlled by
config.json
instead of by preprocessor debug flag. (@hakusaro) - Removed
/confuse
command and Terraria player data resync from @zidonuke. (@hakusaro) - Attempted to fix the player desync issue by changing
LastNetPosition
logic and disabling a check in Bouncer that would normally reject player update packets from players. (@QuiCM, @hakusaro)
This is a release that is suitable for private servers with trusted players: several anticheat checks have been disabled due to changes in the Terraria
protocol. These checks include projectile spam checks and net modules (liquid exploits in particular). We highly suggest making a backup of your world (and potentially any existing server data you have). This is also an interesting release because it includes changes that have been in development for quite some time. If you're a plugin developer, now is the time to start updating. More breaking changes may happen, but there will always be an updated API version to track.
Pre-Release: TShock 4.4.0 Pre 3 for Terraria 1.4.0.2
worldmode
has been updated so it now selects the correct mode. Also enabled using 'journey' or 'creative' to select the same thing (i.e., worldmode creative
does the same thing as worldmode journey
)
The following commands have been removed: tbloodmoon
, invade
, dropmeteor
. fullmoon
, sandstorm
, rain
, eclipse
The following command has been added to replace them: worldevent
. This command requires the tshock.world.events
permission.
worldevent
can be used as so:
worldevent [event type] [sub type] [wave (if invasion event)]
Valid event types are meteor
, fullmoon
, bloodmoon
, eclipse
, invasion
, sandstorm
, rain
Valid sub types are goblins
, snowmen
, pirates
, pumpkinmoon
, frostmoon
for invasions, and slime
for rain.
A new set of permissions has been added under the node tshock.world.events
:
tshock.world.events.bloodmoon
: Enables access to the worldevent bloodmoon
command
tshock.world.events.fullmoon
: Enables access to the worldevent fullmoon
command
tshock.world.events.invasion
: Enables access to the worldevent invasion
command
tshock.world.events.eclipse
: Enables access to the worldevent eclipse
command
tshock.world.events.sandstorm
: Enables access to the worldevent sandstorm
command
tshock.world.events.rain
: Enables access to the worldevent rain
command
tshock.world.events.meteor
: Enables access to the worldevent meteor
command
Please note that the permissions previously tied to the removed commands are also still used to confirm access to the new commands, so if you have existing configurations no one should have any new or lost access.
This is a release that is suitable for private servers with trusted players: several anticheat checks have been disabled due to changes in the Terraria protocol. These checks include projectile spam checks and net modules (liquid exploits in particular). We highly suggest making a backup of your world (and potentially any existing server data you have). This is also an interesting release because it includes changes that have been in development for quite some time. If you're a plugin developer, now is the time to start updating. More breaking changes may happen, but there will always be an updated API version to track.
Enjoy :)
Pre-Release: TShock 4.4.0 Pre 2 for Terraria 1.4.0.2
/expert
has been replaced with /worldmode
.
Whips should work again
This is a release that is suitable for private servers with trusted players: several anticheat checks have been disabled due to changes in the Terraria protocol. These checks include projectile spam checks and net modules (liquid exploits in particular). We highly suggest making a backup of your world (and potentially any existing server data you have). This is also an interesting release because it includes changes that have been in development for quite some time. If you're a plugin developer, now is the time to start updating. More breaking changes may happen, but there will always be an updated API version to track.
Enjoy :)