1. tModLoader
  2. News

tModLoader News

April 2024 Stable Update

It is time for the April Fools 2024 Stable Update.

The tModLoader team and our amazing community of contributors continues to improve tModLoader.

This month we've fixed several issues, the most impactful being the issue with corrupted config.json files preventing the game from loading for some users. We hope this fix allows users experiencing this issue to continue playing tModLoader.

Notably, the mod loading and syncing logic has been reworked in this month's release. Users will see a new menu when joining a multiplayer server if mods need to be reloaded, explaining which mods will be downloaded, enabled, or disabled.
The new menu can be seen in the image below.



As well, mod loading speed has been improved by roughly 10%. We expect to see faster mod loading times and more consistent syncing of mods in multiplayer.

We would like to encourage modders to read the new Assets wiki page and apply the contained guidelines to their mods. We have noticed that many mods are incorrectly using the Asset system, leading to slow mod loading as a result.

As always, if you are having issues of any sort, definitely don't hesitate to check out our FAQ on GitHub or reach out to us at our Discord.

New Changes' Highlights

The following is a list of the most noteworthy changes made for this release. As a reminder, modders should consult the Update Migration Guide to see how to adapt to the new changes after running tModPorter.

New Features

[h2]API Changes[/h2]
Chicken-Bones, JavidPack: Massive rework to mod version selection and multiplayer mod syncing user experience Ishigh1, JavidPack: Edit ModConfig directly on server console before loading world Brian Hansen, JavidPack: Modded Sand and Sandgun support, ExampleSandBlock Cyrilly: Add more features to BuilderToggle API JavidPack: Mod.DisplayNameClean added for situations where DisplayName chat tags are not desired BasicallyIAmFox: Added Main.ActiveNPCs/Projectiles/Players/Items iterators to write more convenient code for correctly iterating over active entities

Bug Fixes

[h2]Gameplay Fixes[/h2]
JavidPack: Fix shop sell back price issue JavidPack: Restore full shop sell behavior direwolf420: Fix celebrationmk10 treasure bag item issue

[h2]Quality of Life and Other Fixes[/h2]
JavidPack: Prevent config.json corruption and workaround existing corruption JavidPack: Fix malformed language packs preventing game launch Johannes Grimm, JavidPack: Improved handling of world save and load errors Mirsario: Fix incorrect date handling and other logging issues JavidPack: Item/NPC/Projectile/NPCDefinition config elements are now more responsive Chicken-Bones: Improve speed of AssetRequestMode.ImmediateLoad during mod loading Johannes Grimm: Allow Journeys End menu to persist on restart Johannes Grimm: Fix sorting of searched mods in download mods menu JavidPack: Prevent EnableAll/Doubleclick from enabling mod requiring update

[h2]API Fixes and Changes[/h2]
Mirsario: Allow .hjson files to be used for non-localization purposes R.Phoenix: Fix fishing line drawing issue when using bobbers, ModifyFishingLine moved from ModProjectile to ModItem Chicken-Bones: Add Asset constructors to ShaderData for easier async asset usage Chicken-Bones: Warn when mods spend a long time blocking on asset loading Chicken-Bones: Report total mod load time in logs Chicken-Bones, JavidPack: Zip library updated from Ionic.Zip.Reduced v1.9.1.8 to DotNetZip v1.16.0 Solxan: Continuous Integration work Chicken-Bones: Add new MethodOverrideQuery for faster HasOverride checks Chicken-Bones: Remove IIndexed constraint from IEntityWithInstances so that HookList can be used more generally (#4088) Chicken-Bones: Remove unnecessary computation in Cloning when not needed Chicken-Bones: Improve usability of method reference override queries by allowing the delegate type to be unspecified Johannes Grimm: Fix tModLoader test code JavidPack: Fix #4132 - Server Map Bug

Other

[h2]ExampleMod and API Documentation[/h2]
JavidPack: ExampleMod updated according to Asset wiki page guidelines JavidPack: Closed door randomization feature documentation JavidPack: Chain item drop method documentation Chicken-Bones: Improve documentation on ModContent.Request JavidPack: Fix ExampleCampfire nearby logic JavidPack: Added an example of adding a shop item after a modded boss is defeated

[h2]Localization[/h2]
Johannes Grimm: German RazzSG: Russian, more Tomasz: Polish lace-wing: Chinese Pixelnando: Brazilian Portuguese

March 2024 Stable Update

It is time for the March 2024 Stable Update!

The tModLoader team and our amazing community of contributors continues to improve tModLoader. This month's release mainly contains bug fixes.

This month we've continued our work to harden multiplayer by updating the server host scripts, made several improvements to Mod Config support, and fixed a dozen or so bugs.

As always, if you are having issues of any sort, definitely don't hesitate to check out our FAQ on GitHub or reach out to us at our Discord.

Important Feature in Preview


This month we will be testing a major rework of how mods are loaded and synced on the [c]preview-v2024.02[/c] beta branch. When joining a server, a new menu will inform the user about pending mod downloads and config changes. Modders should read the How does this affect modders? section of the pull request. Users will be happy to know that local mods will no longer override workshop mods, reducing potential errors from loading outdated mods significantly. The new UI will greatly help users avoid lengthy mod reloads in multiplayer. See this video to see the new UI in action. We hope to perfect this user experience in anticipation for next months release.

New Changes' Highlights


The following is a list of the most noteworthy changes made for this release. As a reminder, modders should consult the Update Migration Guide to see how to adapt to the new changes after running tModPorter.

New Features

[h2]API Changes[/h2]
Destructor_Ben: Description Parameter Interpolation Destructor_Ben: Added TileDefinition class direwolf420: Added Player.hasGemRobe

Bug Fixes

[h2]Quality of Life and Other Fixes[/h2]
John Baglio: Implement Caching for Mod.GetContent() Results turtletowerz: Docker and Management Script Bugfixes JavidPack: -skipselect now works on server launches JavidPack: Additional ControlledFolderAccessDetected logging JavidPack: Fix issue causing the workshop menu to display improperly JavidPack: Fix WaspNest accessory not resetting properly Chicken-Bones: Remove redundant and erroneous PPID reassignment in launch script Solxan: Fix Author Search in Mod Browser JavidPack: Add log message to indicate which mod's config is triggering reload in MP join Chicken-Bones: Fix a missing load time performance optimization when building global hook lists. JavidPack: Clarify serverconfig.txt being automatic default JavidPack: Fix Display Issue for Sonar Buff and pickup counts when fishing with multiple lures JavidPack: Fix Mods Not Loading for some GOG users

[h2]API Fixes and Changes[/h2]
Chicken-Bones: Update MonoMod JavidPack: Added HitModifiers.DisableKnockback to fix Flat modifier applying to knockBackResist==0 NPC JavidPack: Fix issue with ModProjectile.CooldownSlot not working correctly. JavidPack: Language workshop tags will persist with some leniency. Michael Scott: Fix modded toilets not granting fishing bonus Destructor_Ben: Config List UI fixes JavidPack: Fix sorting in Mod Config List menu JavidPack: Show class name in GetLoadableTypesException when inheriting JavidPack: Fix some errors being attributed to System.RuntimeType JavidPack: Clarify AddMusicBox Errors

[h2]ExampleMod & API Documentation[/h2]
JavidPack: WorldGen Documentation JavidPack: Tile and other Documentation JavidPack: Fix FewFromRulesRule ctor typo (chanceDenominator) Clay Sweetser: Minor punctuation changes JavidPack: Update Projectile.noDropItem documentation for 1.4 changes JavidPack: Update various life regen and related hook documentation Destructor_Ben: Add docs to ModTile.MineResist and ModTile.MinPick

February 2024 Stable Update

It is time for the February 2024 Stable Update!

The tModLoader team and our amazing community of contributors continues to improve tModLoader. This month's release mainly contains bug fixes.

This month we've improved support for our Apple Silicon friends, improved GoG compatibility & setup on Unix, and added compatibility for a wider array of language packs.

As always, if you are having issues of any sort, definitely don't hesitate to check out our FAQ on GitHub or reach out to us at our Discord.

New Changes' Highlights


The following is a list of the most noteworthy changes made for this release. As a reminder, modders should consult the Update Migration Guide to see how to adapt to the new changes after running tModPorter.

New Features

[h2]API Changes[/h2]
Chicken-Bones: Check outer types for PreJITFilter attributes and improve error messages (#4033) ThomasThePencil: GlobalNPC.SetDefaultsFromNetId (#3955)

Bug Fixes

[h2]Quality of Life and Other Fixes[/h2]
JavidPack: Fix exception causing UI issue when publishing new mod Chicken-Bones: Automatically switch to x86 architecture when Rosetta is present (#4017) JavidPack: Added fallbacks for assumed GOG default paths, Fix #3526 (#4018) -Cyril-: Fix language packs don't work issue (#2617) Mirsario: Prevent Recalculate spam with ModMenu.UserInterface. Mirsario: Fixed #4007 (Delete Mod modal is bugged) -Cyril-: Qualify the dotnet path of created mod to solve error on editors such as Rider (#3944)

[h2]API Fixes and Changes[/h2]
Chicken-Bones: Make type 0 entities inactive in SetDefaults and TurnToAir (#4032)

[h2]ExampleMod & API Documentation[/h2]
Mirsario: Fixed NuGet lib folder casing (#3965 patch [1/2]) Mirsario: Reimplemented custom Terraria.csproj logic using C# MSBuild Tasks, fixed ".Remove(-1)". (#3965) Mirsario: Added a test for ResetStaticMembers.

January 2024 Stable Update

Happy New Year! 2024 is now upon us and a lot to look forward to.

On January 2nd our monthly update release of tModLoader will go live.
This month's release contains targeted improvements for modding such as a new Dash ID definitions in code and injection points for saving and loading data.
We are extremely grateful to the contributors and modders who continue to expand the capabilities of tModLoader.

As always, if you are having issues of any sort, definitely don't hesitate to check out our FAQ on GitHub or reach out to us at our Discord.

New Changes' Highlights


The following is a list of the most noteworthy changes made for this release. As a reminder, modders should consult the Update Migration Guide to see how to adapt to the new changes after running tModPorter.

New Features

[h2]API Changes[/h2]
kurti256: Create DashID class for Player.dashType values (#3907) Mr.Zhang: #3887 Allow Player.Save/LoadPlayer from stream (#3899) Mirsario: Fix Unix Case-Sensitive Assets Launch Issue

Bug Fixes


[h2]Gameplay Fixes[/h2]
Michael Scott: Fix `DrawPlayer` Scale Parameter (#3961) JavidPack: Fix ModPlayer.ModifyZoom not applying to Rifle Scope and it's upgrades


[h2]Quality of Life and Other Fixes[/h2]
Ibrahim: Remove Invalid NTFS folder names when creating a Modpack (#3996) Mirsario: Fixed #3517 (UIVirtualKeyboard doesn't disappear when it should).


[h2]API Fixes and Changes[/h2]
tomat: Reimplement `DrawSunAndMoon` Patch for Custom ModMenu Sun and Moon Textures (#4000) JavidPack: Fix issue with bad TileObjectData code causing "leaks" into other TileObjectData instances. (#3922) JavidPack: Fix modded NPC not defaulting to aiStyle -1.


[h2]ExampleMod & API Documentation[/h2]
SuperCeleryMan: Update ExamplePetItem.cs (#3990) JavidPack: Fix #3523 Dungeon Location tracking in Multiplayer Example JavidPack: Fix ModPlayer.OnHitNPC docs mistake JavidPack: Clarify the armor penetration, attack speed, knockback, crit chance appropriate values. JavidPack: Clarify ModNPC.SpawnModBiomes docs

Localization
RazzSG: Update ru-RU tModLoader.json (#3948)

December 2023 Stable Update

It is time for the December 2023 Stable Update!

The tModLoader team and our amazing community of contributors has been hard at work improving tModLoader. This month's release mainly contains bug fixes and new capabilities for modders. In particular the Mod Browser is more reliable, in-game pop-up notifications are now possible, and mod publishing has been extended to contributors.

A recently added news button on the main menu will link you to the latest tModLoader update news, such as this announcement. If you ever see the button flashing, be sure to click on it to read about the latest news from tModLoader.

As always, if you are having issues of any sort, definitely don't hesitate to check out our FAQ on GitHub or reach out to us at our Discord.

Important News for Mod Makers


As a reminder, as of today any modder added as a "Contributor" to a mod on the Steam workshop will be able to publish updates for the mod directly. We encourage mod owners to ensure that all contributors act responsibly with this new capability. We look forward to this feature enabling mods to more reliably update to fix bugs that arise.

New Changes' Highlights


The following is a list of the most noteworthy changes made for this release.

Bug Fixes

[h2]Gameplay Fixes[/h2]
Chicken-Bones - Fix Swords that shoot having wrong rotation for 1 tick. (ChangeDir now updates itemRotation correctly) Michael Scott - Fix hardmode bars incorrectly dropping in Dungeon Crate JavidPack - Terraria logo swap easter egg now only affects original Terraria menu. JavidPack - Fix item swap incorrectly checking digit keys instead of assigned hotkey. JavidPack - Fix "0% critical strike chance" tooltip on thrown water items.

[h2]Quality of Life and Other Fixes[/h2]
JavidPack - Show latest news on main menu Solxan - Improve Mod Browser reliability by fixing a capitalization issue Solxan - More Mod Browser reliability changes JavidPack - Fix Steam Deck physical keyboard input issues (Mid-Month hotfix update) JavidPack - Fix crash when visiting mod config menu (Mid-Month hotfix update) Ibrahim Hussein - Show most recent build time for a mod in develop mods menu. JavidPack - Add instructions to confusing diagnostic menus JavidPack - Error logs now have less duplicate entries JavidPack - Switching back from mistakenly enabling Proton, which is not recommended, will no longer require manually deleting the dotnet folder

[h2]API Fixes and Changes[/h2]
Solxan - Allow Contributors to publish updates to Steam Workshop mods tomat - Add Support for Custom In-Game Notifications LoLXD8783 - Support loading Effects with .fxc files JavidPack - tModPorter can now be launched from in-game on Mac and Linux Lion8cake - Sunflowers, Pumpkins, and Fallen Logs now honor AnchorValidTiles to determine what tiles they can exist on BlinDeex - Add Getters for UIScrollbar visible view sizes values JavidPack - Added Tilemap/Main.tile indexer for Point16 JavidPack - Add Point TagSerializer Lacewing - Update outdated .Net 6.0 SDK install instructions JavidPack - Various documentation updates: WorldGen.KillTile, Mod.HandlePacket, Pully and direction

[h2]ExampleMod[/h2]
Mirsario - ExampleStatue ported David F - Fix ExampleTravelingMerchant Not Saving Shop Items David F - Fix ExampleTravelingMerchant Shop Not Functioning On Servers JavidPack - Restore ExamplePerson npcChatCornerItem example

Localization
Doodlinka - Russian RazzSG - Russian Fish - Chinese Lacewing - Chinese Steam Store Page Wolf Igmc4 - Spanish