1. tModLoader
  2. News

tModLoader News

Hot Fix 2022.09.X.X : 4k / QHD Display Resolution Support Restored

2022.09.X.X Hot Fix 1


We've recently deployed new version 2022.09.47.2 fixing the resolution issue for QHD / 4K displays.
Thank you for your patience while we isolated and resolved the bug.

Please Note: We are investigating the issue regarding MonoMod library on 1.4-Preview that is preventing some users from running that version of tModLoader.
In the interim, please use the Stable version (the default in Steam).

TML 2022 October Stable Update

October's Stable TML release is here with new API features & modernization, polishing, and a wagon of stability improvements.

tModLoader for Terraria v1.4.4, when?


Before we begin, we hope everyone has been having fun playing the new Terraria v1.4.4 update (Labor of Love). We know everyone is looking forward to mods having access to all of the new features. We'd like to remind tModLoader users that updating tModLoader to the v1.4.4 codebase will take some time, so please be patient.

We are committed to getting tModLoader updated to v1.4.4 sometime soon, but we can not guarantee when that will be. Much of the Terraria code has changed and we will need time to adapt tModLoader to those changes and then give mod makers time to adapt their mods to those changes. If you are a mod maker and are interested in the migration to 1.4.4, please participate in our Discord development channels and on GitHub.

New Changes' Highlights


The following is a list of the most noteworthy pull requests and commits that have been pushed to 1.4-preview in September, and are now available on the default/stable branch.

[h3]Improve dedicated server management utils. (#2817) by pollen__[/h3]
• Adds Docker support and a server management script to help with setting up dedicated Linux servers
• The DedicatedServerUtils folder in your tModLoader install will contain files you can copy to a server, and the scripts will download tML and let you manage versions and mod updates
• Read DedicatedServerUtils readme

[h3]Custom Game Tips by MutantWafflez[/h3]
• Custom game tips are now autoloaded from translation files when the key starts with "Mods.YourModName.GameTips".
• Vanilla and modded game tips can be hidden by calling GameTipData.Hide() in the new ModSystem.ModifyGameTipVisibility(IReadOnlyList) hook
• See ExampleGameTipSystem and the en-US.hjson file in ExampleMod for more details

Porting Notes: #preview-update-log in Discord

[h3]Raise minimum graphics profile to HiDef by Chicken-Bones[/h3]
HiDef vs Reach are the two graphics profiles offered by FNA. HiDef allows for better graphics features (bigger textures, better visuals) and is supported by basically every graphics card since 2010.
HiDef was the default in tML 1.3, but this was lost in the port.
• There is no fall-back implemented. If your graphics card is really really old. Sorry. If you have a newer graphics card and are experiencing crashes due to this change, please let us know and we will investigate.

[h3]Example Jousting Lance by Rijam[/h3]
• Adds ExampleJoustingLance and ExampleJoustingLanceProjectile
• Adds ProjectileID.Sets.NoMeleeSpeedVelocityScaling to disable melee speed projectile shoot velocity scaling (used by jousting lances and the monk staff T2 and T3 projectiles)
• Adds Item.InterruptChannelOnHurt and Item.StopAnimationOnHurt

Porting Notes: #preview-update-log in Discord

[h3]GlobalNPC.Send/ReceiveExtraAI() by Antirhinnum[/h3]
• A direct clone of the same hooks for GlobalProjectile
• Allows you to sync extra data with NPCs from globals without hijacking the SyncNPC packet.
• Please be careful and judicious with network overhead, every byte counts, make sure to use GlobalNPC.AppliesToEntity to filter out NPCs that don't need your extra data

Porting Notes: #preview-update-log in Discord

[h3]Eight missing patron sets from 1.3 by Mirsario[/h3]
• Eight missing patron sets from 1.3 were restored to 1.4 tModLoader


Bug Fixes


[h3]Restore attack speed scaling on spears (#2866) by ThomasThePencil[/h3]
• Fixes a bug where vanilla spears were getting DamageType = MeleeNoSpeed and thus not scaling with attack speed
• Adds ItemID.Sets.Spears

Porting Notes: #preview-update-log in Discord

[h3]Fix #2020, Terraria no longer minimises on focus loss when in full-screen on Windows. by Chicken-Bones[/h3]
• Fullscreen is now borderless. Does not minimize when you alt-tab to another window.
• Changing focus will still mute music and ambient sounds, but will not stop other sound effects (like getting hurt). Same as in vanilla Terraria
• Exclusive full-screen does not exist in tML, there's no need for it.

[h3]Fixed poor implementation of Load() in ModTileEntity. (#2954) by Mirsario[/h3]
• Removes the need to call base.Load(mod) when implementing ModTileEntity.Load, consistent with other ModType classes

Porting Notes: #preview-update-log in Discord


ScalarVector: Made ModTileEntity.Name property virtual (#2951) Kokopai: Pause the game in Mod Config menu (#2871) zzp198: Display error and don't overwrite vanilla data when modded player save fails FoxXD_: Fix ReindeerAntlers Item Drop Chance (#2857) Jacob Adams: Fix TEFood Platter NetCode (#2879) direwolf420: Fix Journey Mode Duplications menu "Misc" tab not showing modded items (#2922) Ved_s: Add SteamInitFailed localization (#2908) Exterminator: Allow usage of non public constructors (#2937) Exterminator: Fix typo in tModFile reopen exception (#2899) Exterminator: [1.4] Web request logging (#2912) Exterminator: [1.4] Fully unload Jofairden armor assets (#2944) Exterminator: Fixes modded generation passes not being removed (#2939) Solxanich: Fix #2701 - Client Crashing when entering Mod Packs Menu Solxanich: Add Additional Logging to WorkshopHelper.UpdateItem to track progress JavidPack and Solxanich: Include dotnet installer for some users to solve some launch issues JavidPack: Fix #2184 - The Moon isn't a smiley face in select scenarios JavidPack: Fix #2911 Mod List right click to clear search works again JavidPack: Unload ModNet held Mod references JavidPack: Fix #2695 - Search bar doesn't work for some localizations due to text size JavidPack: Fix #2915 , Add tooltip to Open Mods folder button JavidPack: Include changed v1.4.3 assets to fix some texture issues caused by v1.4.4 release (Skeletron Prime, etc) JavidPack: Fix #2955 , Mod Libraries is now ModAssemblies and both ignored for mod sources JavidPack: Fix #2873 - 'Tile Does Not Contain a definition for type' in ExampleOre JavidPack: Escape key now works on all menus for easier navigation. Chicken-Bones: Update to FNA 22.09.01 Chicken-Bones: Dump environment variables into logs folder Chicken-Bones: Fix #2925, crash due to ERROR_PIPE_NOT_CONNECTED on windows Chicken-Bones: Fix steel-series sdk log spam Chicken-Bones: Fix #2926 - FNA Crashed with bad SDL_VideoDriver evironment variable Chicken-Bones: Fix world loading bug with ExampleMod TravelingMerchantSystem Chicken-Bones: Fix some world data not being cleared on unload leading to crashes when mods are disabled Chicken-Bones: Remove useless WaitForClosePortClose code. Fix ded-serv sleep disable function on windows. Chicken-Bones: Move server save on exit to main thread to reduce data-race probability. - Few other maintainability improvements Chicken-Bones: Add SIGINT and SIGTERM handling, with save on exit. Chicken-Bones: Update steam init failed message with common fix Chicken-Bones: Fix Typo in documentation for ModBiome BackgroundColor (#2867)

Bug Fixes Pushed to Stable in September
Mirsario: Fixed divisions by zero on mod uploads? Mirsario: Fixed #2924 - tModLoader falsely indicating updates available for mods Solxanich: Hot Fix draft changes for GoG Download Issue #2887 (#2890)

Removed Hooks/Features


Note: Obsolete hooks have been left in for compatibility where possible, but they will be removed in following months, so please move away from these.
As always, tModPorter is available to help providing hints and refactors.

Chicken-Bones: Mark ModItem.OnCraft as Obsolete

Localization Updates
• Spanish: Thanks to Wolf-Igmc
• Russian: Thanks to Ved_s
• Chinese: Thanks to zzp198
Known Issues

[h3]My game doesn't launch, and I'm on Windows![/h3]
  • If you're on Windows 7 or 8.X, or an older Windows OS, installing .NET pre-requisites listed in Microsoft's website might very much help. Especially the KB3063858 update.
  • If the above doesn't apply or didn't help, try deleting the dotnet folder in the install directory, and try running TML again. There seems to be a bug with extracting needed libraries on some Windows devices, where it may take two attempts. We are actively investigating improvements to remedy this.


Frequently Asked Questions


[h3]How do I switch to the 1.4-preview or 1.3-legacy branches of TML?[/h3]
To switch to anoter branch in steam, just do the following: 1. Right click on tModLoader in Steam and select 'Properties...', then 'BETAS';
2. Select the branch you want in the drop-down menu on top;
3. Close the window. You don't need to enter any passwords.
Please note: 1.4-preview versions of TML are intended to only be used by mod developers and testers who know what they're doing. Some popular mods' authors do not intend for their mods to always work with it.

[h3]When 1.4.4 tModLoader???[/h3]
See the first section of this announcement.

[h3]When will tModLoader be 64-bit???[/h3]
It's already 64-bit!
TML runs in AnyCPU mode with x86_64 natives on .NET 6.0+, using the FNA framework under a singular universal cross-platform release.

[h3]I have a 32-bit OS, will it be supported?[/h3]
Work is finishing up on improving our handling of native libraries, so we can add 32-bit Windows support. If everything goes well in testing, this will be pushed to the stable branch as soon as it is ready, with an announcement in our Discord.

Our Lovely Supporters

Special thanks to the following people who have supported us on Patreon in the last month:
Andrew Spinks, Marco, John Gabriel Wilson, Andrew Nelson, Orian34, Daniel Skoglund Hansen, Peter Doucette, Neuron, SheepishShepherd, Chris Cheeseman, Chris Book, absoluteZero, Steptimus Heap, Hao Wu, Soft Scratch, Toni Stache, Patcheresu, Hunter Amelink, Jeremy Weeks


See you in November!

TML 2022 September Stable Update

September's Stable TML release is here with new API features & modernization, polishing, and a wagon of stability improvements.

New Changes' Highlights


The following is a list of the most noteworthy pull requests and commits that have been pushed to 1.4-preview in August, and are now available on the default/stable branch.

[h3]Tag Compound Arrays by ExterminatorX99[/h3]
• You can now easily store and retrieve arrays (including multi-dimensional ones)
• Eg, tag.Get("positions")
• Lists and single-dim arrays are serialized identically so if you were previously using GetList
• (...).ToArray() you can now just Get(...) and similar

[h3]More ModPylon Improvements by MutantWafflez[/h3]
• Fixes a bug where teleports were failing after 10-20 minutes of gameplay due to no NPCs nearby, despite NPCs being nearby.
• Fixes texture bleeding, lack of dust and wrong crystal height in ModPylon.DefaultDrawPylonCrystal
• Adds ModPylon.ModifyTeleportationPosition to prevent teleporting into the air/ground with tiny or giant pylons
• The Crystal Spritesheet has been split into two: the crystal sprite itself and its Smart Cursor highlight, to allow re-using the highlight texture for multiple different pylons.

Porting Notes: #preview-update-log in Discord

[h3]Add ModItem.MeleePrefix, ModItem.WeaponPrefix... by Tyfyter[/h3]
• Adds overridable methods to ModItem to opt-in/out of a vanilla prefix category.
• Use when the default logic for the categories is insufficient

Porting Notes: #preview-update-log in Discord

[h3]Fix RangedPrefix not counting throwing by direwolf420[/h3]
• Makes throwing weapons (those where Item.CountsAsClass(DamageClass.Throwing)) get ranged prefixes by default.
• You can now opt-out of this by overriding RangedPrefix to return false on each throwing weapon you don't want ranged prefixes on.

[h3]Swath of Workshop Fixes & Cleanup by Solxanich[/h3]
• Fixes updates not showing for GoG
• Slightly improves Mod Browser reliability
• Implements an experimental workaround to enable playing & mod browser on Family Share tModLoader on 1.4
• A speed improvement for the Mod Browser is being looked into. No ETA at this time
Localization Updates
Spanish - Thanks to Wolf-Igmc4.
Bug Fixes


[h3][BUG FIX] Restore attack speed scaling on spears by ThomasThePencil[/h3]
• Fixes a bug where vanilla spears were getting DamageType = MeleeNoSpeed and thus not scaling with attack speed
• Adds ItemID.Sets.Spears

Porting Notes: #preview-update-log in Discord
Mirsario: Eight Missing Patron Sets Chicken-Bones: Fix Typo in ModBiome BackgroundColor TheLuxure: Fix ItemDropDatabase.tml.cs LandarXT: CLarify where Client.Log can be found JavidPack: Updates for Example Boss Bag Chicken-Bones: Fix Destroyer Dropping Skeletron Prime Mask Chicken-Bones: Fix Deerclops bag in ItemID.Sets Doombubbles: Fix Feral glove counts as class Chicken-Bones: Fix TCP buffer overwrites on Mac/Linux LittleJay1985 and John Whitehead and Mirsario: Mitigate Razer Chroma Chrashes ExterminatorX99: Fix double enumeration in UIList.AddRange Chicken-Bones: Allow tModLoader to run under WSL Antirhinnum: Fix modded UG backgrounds drawing under ocean Steviegt6: Download all missing mod dependencies on start-up. Direwolf420: Clear static particle lists on unload

Removed Hooks/Features


Note: Obsolete hooks have been left in for compatibility where possible, but they will be removed in following months, so please move away from these.
As always, tModPorter is available to help providing hints and refactors.

None this Month!

Known Issues


[h3]My game doesn't launch, and I'm on Windows![/h3]
  • If you're on Windows 7 or 8.X, or an older Windows OS, installing .NET pre-requisites listed in Microsoft's website might very much help. Especially the KB3063858 update.
  • If the above doesn't apply or didn't help, try deleting the dotnet folder in the install directory, and try running TML again. There seems to be a bug with extracting needed libraries on some Windows devices, where it may take two attempts. We are actively investigating improvements to remedy this.


Frequently Asked Questions


[h3]How do I switch to the 1.4-preview or 1.3-legacy branches of TML?[/h3]
To switch to anoter branch in steam, just do the following: 1. Right click on tModLoader in Steam and select 'Properties...', then 'BETAS';
2. Select the branch you want in the drop-down menu on top;
3. Close the window. You don't need to enter any passwords.
Please note: 1.4-preview versions of TML are intended to only be used by mod developers and testers who know what they're doing. Some popular mods' authors do not intend for their mods to always work with it.

[h3]When 1.4.4 tModLoader???[/h3]
To Be Determined
Once ReLogic has released 1.4.4 to everyone, we will be looking to port to the newest version in a way that aligns with our goal to minimize breaking mods. This may mean a period of delay between Terraria and tModLoader. We recommend taking the chance to play the update in all its glory!
Stay tuned to our Discord for the latest news.

[h3]When will tModLoader be 64-bit???[/h3]
It's already 64-bit!
TML runs in AnyCPU mode with x86_64 natives on .NET 6.0+, using the FNA framework under a singular universal cross-platform release.

[h3]I have a 32-bit OS, will it be supported?[/h3]
Work is finishing up on improving our handling of native libraries, so we can add 32-bit Windows support. If everything goes well in testing, this will be pushed to the stable branch as soon as it is ready, with an announcement in our Discord.

Our Lovely Supporters

Special thanks to the following people who have supported us on Patreon in the last month:
Andrew Spinks, Marco, John Gabriel Wilson, Andrew Nelson, Orian34, Daniel Skoglund Hansen, Peter Doucette, Neuron, SheepishShepherd, Chris Cheeseman, Chris Book, absoluteZero, Steptimus Heap, Hao Wu, Soft Scratch, Toni Stache, Patcheresu, Hunter Amelink, Jeremy Weeks



See you in October!

TML 2022 August Stable Update

August's Stable TML release is here with new API features & modernization, polishing, and a wagon of stability improvements.

API Backwards Compatibility


The TML Team has decided to make API changes back-compatible for at least one month following their merge where possible.
Old APIs will be marked with [Obsolete(msg, true)] producing a compile error to discourage their usage. However an effort will be made to make sure that mods which were compiled for the previous version of TML continue to load and run correctly for at least the next month.

Note that this is where possible. Sometimes there may be unavoidable incompatibilities in the new APIs, and some mod functionality may be lost during updates.

New Changes' Highlights


The following is a list of the most noteworthy pull requests and commits that have been pushed to 1.4-preview in July, and are now available on the default/stable branch.

[h3]New Workshop Menu Icons by Rijam[/h3]


Neat!

[h3]Grab Bag Loot Modernization by TheLuxure[/h3]
• All 'right click to open' items (bags, crates, can of worms, etc.) now have a loot table like NPC drops.
• Use Mod/GlobalItem.ModifyItemLoot just like you'd use ModifyNPCLoot for NPCs.
• Currently, the loot table will be rolled on every right-click of an item (doing nothing if there is no table.)
• Vanilla bags/crates have been translated. There may be bugs in translation.
• A bunch of new ItemDropRule classes have been added for 'bag style' rolling.

Porting Notes: #preview-update-log in Discord

[h3]Modernize PlayerLoader, support custom ModPlayer hooks by Mirsario[/h3]
• Allows mods to create custom interface hooks for ModPlayer instances, in line with support on GlobalItem, GlobalNPC, and GlobalProjectile.
PlayerLoader backends modernized and streamlined. You may get whooping 0.01% more performance!
Player.ModPlayers getter property added. Don't go crazy.

Examples: #preview-update-log in Discord

[h3]Modded Pylons: ModPylon & GlobalPylon by MutantWafflez[/h3]
• Introduces ModPylon for adding your own pylons, and GlobalPylon for altering vanilla and modded pylons.
ModPylon extends from ModTile and works in hand with a subclass of TEModdedPylon.
• Definitely check out the ExamplePylon if you're implementing a pylon of your own.
• Provides a range of hooks relating to teleporting conditions, placement restrictions and map drawing.

Porting Notes: #preview-update-log in Discord

[h3]Mod Pack Revamp Part 1 of 2 by Solxanich[/h3]
• Completes the first major step in the Mod Pack Overhaul development that begun two months ago.
• Adds a new feature: Freezing a copy of all mods inside of a mod pack.
• Adds a new feature: Export all mods from the Mod Pack to a folder for usage on a server OR setting up an older tml instance.

Porting Notes: #preview-update-log in Discord

[h3]Add ModPlayer.ModifyFishingAttempt hook by direwolf420[/h3]
• Introduces the new ModPlayer.ModifyFishingAttempt hook.
• Allows mod developers to change information about the ongoing fishing attempts before caught items/NPCs are decided, but after all vanilla information has been gathered.

Sample Usages:
• "Enhanced Crate Potion" that quadruples crate chance.
• "Fishing License" accessory that increases the chance to get higher quality fish.
• Catching lava/honey fish in water.

[h3]Update FAudio and use WINSDK IAudio backend isntead of FFMPEG by Chicken-Bones[/h3]
A number of audio issues on Windows have been fixed, for example:
• Audio stuttering -- something we've previously fixed, but had to rollback the fix until now.
• Audio devices sometimes not being detected by the game, requiring dances with a tambourine.

[h3]Merge Recipe Groups with the same Name by jopojelly[/h3]
• If two mods call RecipeGroup.RegisterGroup with the same name, they will be merged.

[h3]Fix players/NPCs falling through map in MP by Chicken-Bones[/h3]
Main.sectionManager.SectionLoaded can be used to determine if a tile section (200x150 tiles) has been sent from the server to the client or if the tiles are all air because the data hasn't yet been synced.
• There is also sectionManager.TileLoaded and TilesLoaded which does the tile -> section conversion for you.

Porting Notes: #preview-update-log in Discord

[h3]Add consumed items list to Recipe.OnCraft and RecipeCreationContext by andro951[/h3]
RecipeCreationContext (passed to Mod/GlobalItem.OnCreate) now has a ConsumedItems field.
Recipe.OnCraftCallback now has List consumedItems as the last parameter.
• Items taken from multiple stacks will appear multiple times in the list, with the partial amounts that were consumed.

Porting Notes: #preview-update-log in Discord

[h3]Run SetupContent on all content from all mods before PostSetupContent by Chicken-Bones[/h3]
• Changes Mod.PostSetupContent to run after SetuPContent has been called on all mod content, not just the one mod.
• Makes PostSetupContent more useful for cross mod content. As an example, it should be safe to create item instances and lookup tables. A lot of mods end up using AddRecipes for stuff that should/could really go in PostSetupContent.

[h3]Add cooldownCounter for PreHurt, Hurt and PostHurt (Player) by Crapsky233[/h3]
ModPlayer PreHurt/Hurt/PostHurt now have an additional cooldownCounter parameter at the end indicating which immunity counter this strike is meant to trigger.
• Can be used to implement accessories that add extra immunity time properly (see ExampleImmunityAccessory)
• Remember to use ImmunityCooldownID.Bosses for damage done to players by your boss enemies! (see Example Minion Boss and the MinionBossEye projectile)

Porting Notes: #preview-update-log in Discord

[h3]Add PlayerLoader.HoverSlot hook by Crapsky233[/h3]
• Allows mods to change the behavior of the shift-click slot event (e.g. to fast-transfer an item to a custom UI.)

[h3]Added a public 'in SoundStyle?' overload for SoundEngine.PlaySound by Mirsario[/h3]
• You can now just write SoundEngine.PlaySound(in item.UseSound, ...) instead of having to wrap calls like that in a null check block.
• That is all.

[h3]Publicize WorldGen local variables & private variables by MutantWafflez[/h3]
• Makes the local variables in WorldGen.GenerateWorld public static instead, e.g. WorldGen.dungeonLocation.
• Makes many private static worldgen variables public, so you don't need to use reflection anymore.

Porting Notes: #preview-update-log in Discord


Localization Updates


lyc-Lacewing: Localization support for ModConfig

Brazilian Portuguese - Thanks to Pixelnando.
German - Thanks to CriddleZap.
Russian - Thanks to Ved-s.
Spanish - Thanks to Wolf-Igmc4.

Bug Fixes


[h3]Fix mod syncing on fast connections, poor errors on dropped packets by Chicken-Bones[/h3]
Sending mods from servers on join works again now. No more evil Bad Header errors.

[h3]Fix TileWallWireStateData/Tile.BlockType setter inverted IsHalfBlock by Chicken-Bones[/h3]
Tile.BlockType = ... had a bug where it set IsHalfBlock to true for slopes and solid and false for BlockType.HalfBlock
• Guess no-one used it until now?

Porting Notes: #preview-update-log in Discord


starspritechippy: Update steamcmd setup to use full paths turtletowerz: Fix modpacks not saving for duplicate configs Antirhinnum: Reset Projectile.ContinuouslyUpdateDamage jackbondpreston: Fix some UPNP issues ExterminatorX99: Prevent registering a recipe twice absoluteAquarian: Fixed color chat tags being ignored by ChatManager methods... absoluteAquarian: NPC Dialogue Fixes direwolf420: Various ExampleMod fixes direwolf420: Exclude missing NoSync mods from ModNetDiagnosticsUI, fixing exception Solxan: Add support for Linux x86 formally by adding libsteamapi.so Solxan: Fix a missing true in Directory.Delete for 9999 folders Solxan: Final Fix for #2660 jopojelly: Quick Fix for #2407 until someone works on controller support jopojelly: Fix an issue with modded chests having tiles corrupted jopojelly: Protect against bad mod name response from workshop jopojelly: Log OS version, catch more ControlledFolderAccess errors jopojelly: Fix orphan or incorrectly assigned recipe groups. Chicken-Bones: Better fix for docker in non-interactive mode Chicken-Bones: Fix TileWallWireStateData/Tile.BlockType setter inverted IsHalfBlock Chicken-Bones: Add error screen when server connection is lost during mod reload Chicken-Bones: Fix mod syncing on fast connections, poor errors on dropped packets... Chicken-Bones: Add more graceful handling & logging for corrupt worlds on servers (Fixes #2693) Chicken-Bones: Fix players/NPCs falling through map in MP Chicken-Bones: Make ModSystem.SetupContent call SetStaticDefaults by default Chicken-Bones: Use IAudio backend again, this time with speakermask fix Chicken-Bones: Fix crash on some clients due to broken output stream Chicken-Bones: Fix ExampleFoodItem using ConsumeItem rather than OnConsumeItem

Removed Hooks/Features


Note: Obsolete hooks have been left in for compatibility where possible, but they will be removed in following months, so please move away from these.
As always, tModPorter is available to help providing hints and refactors.

[h3]Mod.AddRecipes/AddRecipeGroups/PostAddRecipes[/h3]
• Use ModSystem.AddRecipes/AddRecipeGroups/PostAddRecipes instead.

[h3]Remove GlobalRecipe[/h3]
• See the PR discussion for alternatives. The standard approach is to add callbacks to or modify recipes directly (e.g. like in PostAddRecipes.)
• No backwards compatibility for this feature.

[h3]Mod/GlobalItem.OpenVanillaBag/PreOpenVanillaBag [/h3]
• Replaced with a drop rule system similar to NPC drops. See ModifyItemLoot hooks.


Known Issues


[h3]My game doesn't launch, and I'm on Windows![/h3]
  • If you're on Windows 7 or 8.X, or an older Windows OS, installing .NET pre-requisites listed in Microsoft's website might very much help. Especially the KB3063858 update.
  • If the above doesn't apply or didn't help, try deleting the dotnet folder in the install directory, and try running TML again. There seems to be a bug with extracting needed libraries on some Windows devices, where it may take two attempts. We are actively investigating improvements to remedy this.


Frequently Asked Questions


[h3]How do I switch to the 1.4-preview or 1.3-legacy branches of TML?[/h3]
To switch to anoter branch in steam, just do the following: 1. Right click on tModLoader in Steam and select 'Properties...', then 'BETAS';
2. Select the branch you want in the drop-down menu on top;
3. Close the window. You don't need to enter any passwords.
Please note: 1.4-preview versions of TML are intended to only be used by mod developers and testers who know what they're doing. Some popular mods' authors do not intend for their mods to always work with it.

[h3]When will tModLoader be 64-bit???[/h3]
It's already 64-bit!
TML runs in AnyCPU mode with x86_64 natives on .NET 6.0+, using the FNA framework under a singular universal cross-platform release.

[h3]I have a 32-bit OS, will it be supported?[/h3]
Plenty of work has now been done towards improving our handling of native libraries, to then add 32-bit Windows support after that. If everything goes well in testing, this will be pushed to the stable branch mid-month, with an announcement in our Discord.

Our Lovely Supporters


Special thanks to the following people who have supported us on Patreon in the last month:
Andrew Spinks, Marco, John Gabriel Wilson, Andrew Nelson, orian34, dinidini, Peter Doucette, Neuron, SheepishShepherd, Chris Cheeseman, Chris Book, absoluteZero, Steptimus Heap, Hao Wu, Toni Stache, Patcheresu, Hunter Amelink, Jeremy Weeks




See you in Autumn, tomorrow!

TML 2022 July Stable Update

July's Stable TML release is here with more polishing, new API features, and many improvements made to the tModPorter utility.

Earlier Mid-month Changes


The following changes & fixes have been merged into stable in June, but were not mentioned anywhere on Steam yet:

[h3]Restore vanilla melee speed balance by ThomasThePencil[/h3]
• Melee speed interactions have been restored for vanilla weapons.
(Yes, projectile fire rate is now unaffected again.)
• Modders can turn this off for vanilla hybrid (shoot and melee) weapons by setting Item.attackSpeedOnlyAffectsWeaponAnimation = false.
• Adds tooltips about melee speed effects.
• Adds a tooltip for modders to indicate they have modified the stats of an item (from vanilla, or another mod.)

Porting Notes: #preview-update-log in Discord

[h3]Make Workshop Image Separate by Solxanich[/h3]
• Introduces icon_workshop.png as the default Workshop Icon as opposed to using icon.png.
• You can still select to use icon.png during publishing.
workshop_icon.png is recommended to be 512x512.

[h3]Make Workshop Description Separate by Solxanich[/h3]
• Introduces description_workshop.txt as the default Workshop description as opposed to using description.txt.
• It will still use description.txt IF a description_workshop.txt isn't provided.
• Workshop description's should be known as having separate syntax to what was used historically. Click here to see Steam Formatting Help.
• Updated Workshop Image to fall back on icon.png if icon_workshop.png isn't provided.


New Changes' Highlights

The following is a list of the most noteworthy pull requests and commits that have been pushed to 1.4-preview in June, and are now available on the default/stable branch.

[h3]Save & load for NPCs by Ishigh[/h3]
• Adds the ability to save custom data on NPCs (even non-town NPCs.)
• An NPC which needs to save won't despawn naturally.
• override Mod/GlobalNPC.NeedSaving() to make non-townNPCs save.

[h3]WhipSettings & ExampleWhip by JohnSnail[/h3]
• You can now easily make modded whips.
GlobalProjectile can also now modify the settings for modded and vanilla whips.

Porting Notes, Examples: #preview-update-log in Discord

[h3]More ModTrees code by Ved-s[/h3]
• Added (ModTree|ModPalmTree).Shake hooks, which allow control over on-tree-shake item and leave drops, as well as a place for custom logic.
• Added (ModTree|ModPalmTree).CountsAsTreeType overridable getter property, which allows control over what vanilla on-shake drops the tree should (or shouldn't) have. Defaults to TreeTypes.Forest for ModTrees and TreeTypes.Palm for ModPalmTrees.
• Mod trees will now create leaves in more vanilla scenarios, like during windy days, or when shaken.

Porting Notes: #preview-update-log in Discord

[h3]Move Mod's CreateRecipe and CloneRecipe to Recipe by ExterminatorX99[/h3]
• Now means you don't need a Mod instance to create recipes, and that you can't assign them to other mods accidentally.
• You can even call ModItem.CreateRecipe on a ModItem from another mod and the recipe will be attributed to your mod.
• tModPorter will do the CreateRecipe refactor for you.
• Methods have been marked as [Obsolete] so that not every mod needs to recompile immediately.

Porting Notes: #preview-update-log in Discord

[h3]Add CanBeSloped for non solid tiles by Ved_s[/h3]
• Adds TileID.Sets.CanBeSloped set which will override the simple Main.tileSolid check in Player.ItemCheckUseMiningToolsTryPoundingTile.
• Usage: TileID.Sets.CanBeSloped[Type] = true;

[h3]Easier continuous projectile damage updates by Chicken-Bones[/h3]
• Adds Projectile.ContinuouslyUpdateDamage to mimic the continual damage updates that minions and sentries get, but for all damage classes.
• Automatically sets Projectile.originalDamage during SetDefaults via EntitySource_ItemUse.

Porting Notes: #preview-update-log in Discord

[h3]Bestiary Fixes by Jopojelly[/h3]
• Restores ExampleSurfaceBiome map background display.
• Fixes PartyZombie to show ExampleSurfaceBiome background.
• Fixes ModBiome.SetStaticDefaults being unable to properly assign DisplayName.
• Changes Special Visuals to be called every frame and receive isActive bool instead.

Porting Notes: #preview-update-log in Discord

[h3]Add ModItem support to ItemTags by jopojelly[/h3]
• You can now use modded items in chat tags, like [i:ExampleMod/ExampleItem]. Useful for translation keys and in-game chatting.

[h3]NPC Dialogue Fixes by absoluteAquarian[/h3]
• Fixes NPC Chat Tags to work correctly for mods.

Porting Notes: #preview-update-log in Discord

[h3]Prevent SDL2 loading on servers by Mirsario[/h3]
FNAPlatform functions for accessing graphics, audio and input, will no longer be initialized on servers.
• Fixes TML not being able to be ran on headless systems (systems without graphics cards, drivers, or desktop environments.)
• Fixes illegal usage of FNA APIs related to the aforementioned functions on servers not being properly reported.

Porting Notes: #preview-update-log in Discord

[h3]Make Mods able to Opt-out of being detectable on Preview by Solxan[/h3]
• At the request of modders, they now have the capability to push builds to Preview on Steam Workshop without making them user-playable until the stable release of that TML version.
• This was introduced specifically so that modders can stage their mod ahead of the monthly updates on Workshop, without creating a divide in the user base.
• This does not affect the capability to develop mods, and only affects the availability of your mod to be loaded from Steam Workshop while on preview.

(The feature is obviously only usable on Preview right now.)

[h3]Also - Lots of localization updates[/h3]
• For Brazilian Portuguese, by Pixelnando.
• For Chinese, by Sgkoishi and Crapsky233.
• For Polish, by NothyariS0.
• For Russian, by Ved-s.
• For Spanish, by Wolf-Igmc4.

[h3]Also - tModPorter Improvements[/h3]
We've done many improvements to tModPorter to flesh out its features and address gaps.
Check out our GitHub for more info.

A lot of popular 1.3 Terraria era mod authors have now used tModPorter to speed up their mods' porting process by many many times. We're very excited to soon see some of the biggest remaining ones arrive for modern TModLoader.

[h3]And these Bug Fixes:[/h3]

LordOfOtakus: Fix Mac Steam Overlay not loading Crapsky233: Fix for a Gamepad Overlapping UI issue absoluteAquarian: Some Sound Bug Fixes Ved_s: Further generalization of ModTree/ModPalmTree code in the backend of tModLoader ThomasThePencil: Fix Santa the Santa town npc bug Exterminator: Fix Player.ZonePurity always false on servers Exterminator: Fix ModSystem.ModifySunLightColor Exterminator: Fix an issue with Recipe Ordering Exterminator: Fixed music loading issues Solxan: Fix Steam not unsubscribing players from Mods on deletion Solxan: Update Steamworks.NET to a better library to fix issues with Max and Linux Mod Publishing Mirsario: Fixed #2544 (Cannot open links with Firefox) Jopojelly: Make Open Folder button in Mods also open folder location for Steam installed mods Jopojelly: Stop spamming the 'Freeze has Begun' message on Preview Jopojelly: Fix error when entering just a space in chat Chicken-Bones: Decrease frequency of random lighting game freezes Chicken-Bones: Fix crash when loading a persistent mod npc with no global data Chicken-Bones: Fix a misleading exception with regards to TerrariaSteamClient feature Chicken-Bones: Disable QuickEdit in Windows Console to fix startup issues when clicking in console Chicken-Bones: Increase the speed of Instantiating Globals Chicken-Bones: Fix MusicLoader fatal crash when mod loading fails

[h3]With the following Day One Bug Fixes:[/h3]
  • Linux Steamworks change:
    WARNING: Linux Users, it was identified after release that the Steamworks lib change was not deployed correctly by Steam due to a case-sensitive name change bug in Valve's updates. The recommended user-side fix is to delete the Libraries folder and then 'verify file integrity' in Steam. An attempted fix was pushed under 2022.06.96.4, however the issue is more complex than a script can fix. Please apply the recommended fix accordingly.
  • Avoid unnecessary Error Throwing on 'FolderShortcutSupport' exceptions:
    We deployed a day one patch under 2022.06.96.2 as a large amount of users reported issues with this feature. We are investigating potential improvements for those impacted.


Known Issues
  • I'm getting the "built for 2022.5" warning with "JIT" errors on a mod that should've been updated!
    If you are sure that the mod should now be working on newest TML, yet are still having problems, first verify if the mod is showing as purple in the mods menu - if it is purple, delete it, and than redownload as required. If it is not purple, either unsubscribe and resubscribe OR use the 'Verify Files' function in Steam to force the update to be delivered to you. Sometimes the Steam auto-update fails to deliver for a prolonged period of time.
  • I'm getting bombarded with a bunch of 'FNA -> 22.6' looking errors on startup
    As an extension of the Linux auto update bug from Steam, Windows is also seeing issues with FNA. The recommended fix is to delete all files in your install folder, and re-install.
  • My game doesn't launch, and I'm on Windows!
    Delete the dotnet folder in the install folder, and try again. There seems to be a bug with extracting needed libraries on some windows devices where it takes two attempts. We are actively investigating improvements to remedy this.
  • Some of my mods aren't updated and I want to downgrade!
    As always, mods retain copies for the current month, last month, and pending copies for next month. It is thus fully possible to downgrade and play last month's tModLoader version following the manual instructions here: Link.


Frequently Asked Questions


[h3]How do I switch to the 1.4-preview or 1.3-legacy branches of TML?[/h3]
To switch to another branch in steam, just do the following: 1. Right click on tModLoader in Steam and select 'Properties...', then 'BETAS';
2. Select the branch you want in the drop-down menu on top;
3. Close the window. You don't need to enter any passwords.
Please note: 1.4-preview versions of TML are intended to only be used by mod developers and testers who know what they're doing. Some popular mods' authors do not intend for their mods to always work with it.

[h3]When will tModLoader be 64-bit???[/h3]
It's already 64-bit!
TML runs in AnyCPU mode with x86_64 natives on .NET 6.0+, using the FNA framework, under a singular universal cross-platform release. Is good.

[h3]I have a 32-bit OS, will it be supported?[/h3]
32-bit Windows system support (natives) might be pushed to stable soon™️, we've already done the work that was needed for that.
But be aware that the only somewhat valid reason to still be on a 32-bit OS in 2022 is having 2 gigabytes of RAM or less.

[h3]Why are you guys so slow with these update posts?[/h3]


Our Lovely Supporters
Special thanks to the following people who have supported us on Patreon in the last month:
orian34, dinidini, Andrew Nelson, SheepishShepherd, Neuron, Nike62, Jeremy Weeks, Hunter Amelink, Patcheresu, Toni Stache, Hao Wu, Soft Scratch, Steptimus Heap, absoluteZero, Chris Book, Hana Mizuno, Marco, John Gabriel Wilson, Chris Cheeseman.




See you all next month!