December 2025 Stable Update
Hello everyone! It is time for the December 2025 Stable Update.
But first, here is a collage of new mods released this past month. There were over 300 new mods this month! Have you tried any of these mods yet? Find any hidden gems? Be sure to regularly check the workshop for newly released mods, we're positive you'll always find something fun and interesting to try out. Click here to see the most popular new mods from this month.

We are grateful for the massive amount of community participation in developing and testing new features each month.
This month's release contains various bug fixes and smaller features. We've fixed several regressions related to the liquid rendering fixes from last month and fixed some UI inconsistencies and errors. For modders, this month's release includes support for custom pressure plates along with new hooks for tile interactions, as well as new hooks for custom armor set shadow effects and transforming the full player rendering.
Modders: As usual, we'd like to encourage modders to test out new tModLoader features on the preview branch if they are relevant to your mod. Major features in preview are announced in the preview-update-log channel on our Discord. We encourage mod makers to experiment with these and other new features on the preview branch and provide feedback this month so that they are ready for the stable release next month.
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.
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.
[h2]New Features[/h2]
JavidPack: ModPlayer.DrawPlayer hook to facilitate custom player "shadow" visuals Tyfyter: (Mod|Global)Tile.HitSwitch and (Mod|Global)Tile.SwitchTiles hooks, as well as PressurePlate tile set
[h2]API Changes[/h2]
JavidPack: Preserve backwards compatibility for MonoMod hooks when a method receives a new overload, inherit Obsolete from origin method Stephen Thiebaud: tModLoader-provided references will no longer be copied to mod output directories (/bin folder), reducing disk usage for mod developers JavidPack: (ModTile|ModWall).PlaceInWorld now called based on what is actually placed, not Item.createTile/Wall
[h2]Quality of Life and Other Fixes[/h2]
JavidPack: Fix housing UI issue with over 99 town NPCs Kevin Pugliese: Fix other players' chat bubbles while in reverse gravity JavidPack: Clarify redownload missing mod message and buttons Stephen Thiebaud: Fix lots of liquid rendering edge case bugs Ivan Ortiz: Fix another liquid rendering bug with slopes Stephen Thiebaud: Fix another liquid rendering bug near edges of map Mirsario: Restore lost TileID.Sets.Snow tile framing logic Mirsario: Follow-up to "Fixed deallocation crashes in libnfd"
[h2]API Fixes and Changes[/h2]
JavidPack: Update MonoMod to 25.3.2 (Fix race condition when updating executing ILHook, the "Referenced cell no longer exists" issue) Mirsario: Main.CurrentPlayerOverride is now thread-local, fixing potential multi-threaded issues Qther: tModCodeAssist: Support even more ID fixes JavidPack: tModCodeAssist: Preserve whitespace and comments for ID fixes
[h2]ExampleMod and API Documentation[/h2]
JavidPack: Clarify ModPlayer syncing and more documentation Mirsario: Improved ExampleCustomCurrency example
[h2]Localization[/h2]
ayuyoiM and Cyrilly: Chinese 1, 2 RazzSG: Russian
We would also like to mention that we have volunteers translating our monthly release announcements into several other languages. If you would like to help translate these announcements into a supported language, please reach out on Discord.
But first, here is a collage of new mods released this past month. There were over 300 new mods this month! Have you tried any of these mods yet? Find any hidden gems? Be sure to regularly check the workshop for newly released mods, we're positive you'll always find something fun and interesting to try out. Click here to see the most popular new mods from this month.

We are grateful for the massive amount of community participation in developing and testing new features each month.
This month's release contains various bug fixes and smaller features. We've fixed several regressions related to the liquid rendering fixes from last month and fixed some UI inconsistencies and errors. For modders, this month's release includes support for custom pressure plates along with new hooks for tile interactions, as well as new hooks for custom armor set shadow effects and transforming the full player rendering.
Modders: As usual, we'd like to encourage modders to test out new tModLoader features on the preview branch if they are relevant to your mod. Major features in preview are announced in the preview-update-log channel on our Discord. We encourage mod makers to experiment with these and other new features on the preview branch and provide feedback this month so that they are ready for the stable release next month.
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.
Changelog
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.
Major Changes
[h2]New Features[/h2]
JavidPack: ModPlayer.DrawPlayer hook to facilitate custom player "shadow" visuals Tyfyter: (Mod|Global)Tile.HitSwitch and (Mod|Global)Tile.SwitchTiles hooks, as well as PressurePlate tile set
[h2]API Changes[/h2]
JavidPack: Preserve backwards compatibility for MonoMod hooks when a method receives a new overload, inherit Obsolete from origin method Stephen Thiebaud: tModLoader-provided references will no longer be copied to mod output directories (/bin folder), reducing disk usage for mod developers JavidPack: (ModTile|ModWall).PlaceInWorld now called based on what is actually placed, not Item.createTile/Wall
Bug Fixes
[h2]Quality of Life and Other Fixes[/h2]
JavidPack: Fix housing UI issue with over 99 town NPCs Kevin Pugliese: Fix other players' chat bubbles while in reverse gravity JavidPack: Clarify redownload missing mod message and buttons Stephen Thiebaud: Fix lots of liquid rendering edge case bugs Ivan Ortiz: Fix another liquid rendering bug with slopes Stephen Thiebaud: Fix another liquid rendering bug near edges of map Mirsario: Restore lost TileID.Sets.Snow tile framing logic Mirsario: Follow-up to "Fixed deallocation crashes in libnfd"
[h2]API Fixes and Changes[/h2]
JavidPack: Update MonoMod to 25.3.2 (Fix race condition when updating executing ILHook, the "Referenced cell no longer exists" issue) Mirsario: Main.CurrentPlayerOverride is now thread-local, fixing potential multi-threaded issues Qther: tModCodeAssist: Support even more ID fixes JavidPack: tModCodeAssist: Preserve whitespace and comments for ID fixes
Other
[h2]ExampleMod and API Documentation[/h2]
JavidPack: Clarify ModPlayer syncing and more documentation Mirsario: Improved ExampleCustomCurrency example
[h2]Localization[/h2]
ayuyoiM and Cyrilly: Chinese 1, 2 RazzSG: Russian
We would also like to mention that we have volunteers translating our monthly release announcements into several other languages. If you would like to help translate these announcements into a supported language, please reach out on Discord.