Show/Hide Show/Hide

tModLoader

 
TML 2022 August Stable UpdateAug 2, 2022 - Community AnnouncementsAugust'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 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. New Workshop Menu Icons by Rijam https://i.imgur.com/2kolbdW.png Neat! Grab Bag Loot Modernization by TheLuxure • 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 Modernize PlayerLoader, support custom ModPlayer hooks by Mirsario • 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 Modded Pylons: ModPylon & GlobalPylon by MutantWafflez • 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 Mod Pack Revamp Part 1 of 2 by Solxanich • 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 Add ModPlayer.ModifyFishingAttempt hook by direwolf420 • Introduces the new ModPlayer.ModifyFishingAttempt hook. • Allows mod developers to change information about the ongoing fishing attempts before caught items/NPCs are decided, but a...TML 2022 July Stable UpdateJul 4, 2022 - Community AnnouncementsJuly'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: Restore vanilla melee speed balance by ThomasThePencil • 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 Make Workshop Image Separate by Solxanich • 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. Make Workshop Description Separate by Solxanich • 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. Save & load for NPCs by Ishigh • 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. WhipSettings & ExampleWhip by JohnSnail • 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 More ModTrees code by Ved-s • 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 Move Mod's CreateRecipe and CloneRecipe to Recipe by ExterminatorX99 • 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. • tModPorte...tModLoader for Terraria 1.4+ LaunchJun 2, 2022 - Community AnnouncementsToday we are changing the default tModLoader on Steam to the Terraria 1.4+ version. As you might know, we have had 1.4 tModLoader as an option on the Betas menu for quite some time as we've worked on new features to make modding and playing on 1.4 tModLoader a pleasant experience. The current 1.3 version will still be available on Steam, you'll just need to select 1.3-legacy in the steam betas menu. We expect many of you will want to use this option until you finish your current playthrough of the game. Please do not expect to be able to switch to 1.4 and continue using all the same mods you are currently using on 1.3. Many mods have unfortunately been retired, or otherwise have not yet been updated to 1.4. However, our workshop is already blooming with mods, and many relatively small & popular missing mods have already had alternatives created for them. Click here to browse tModLoader's Steam Workshop right now. 1.4 tModLoader is still in active development Although 1.4 tModLoader is now leaving the Alpha stage, we'd like to reiterate that it still remains in active development, with a continuous release cycle bringing new breaking changes on the 1st of each month. We have a system in place for actively maintained mods to continue working seamlessly as each month's update arrives, but that requires the modders to stay on top of updating their mod if required within the designated time period at the end of each month. More information on the modder maintenance workflow can be found in the following announcement: https://store.steampowered.com/news/app/1281930/view/3189118991325681723 Beta Branches To summarize, here are the available options: default - This is the 1.4 version that we expect players to use 1.3-legacy - This is the latest 1.3 version. We expect many will want to use this if they are currently playing through the game. 1.4-preview - This branch contains upcoming changes. This is where we test new features. This is also where modders need to publish their mods during the last 10 days of the month if needed. Twitter Feel free to follow tModLoader on Twitter, there will be occasional announcements and posts to showcase the amazing mods which are being worked on: twitter.com/tModLoader Our Lovely Contributors As any open-source project, the majority of 1.4 tModLoader was made possible thanks to volunteers. Our sincere gratitude and appreciation go to the following people, who have contributed to tModLoader since Terraria: Journey's End's release day: direwolf420, Chik3r, ExterminatorX99, ThomasThePencil, Itorius, Steviegt6, Rartrin, Agrair, Ishigh1, DarkLight66, DarioDaF, kittenchilly, Dual-Iron, MrSlimeDude, sgkoishi, OliHeamon, RighteousRyan1, Igmc, NotLe0n, Pixelnando, daim03, fakelag, andrewlord607, pollen00, einarmo, Setnour6, MutantWafflez, Ozzatron, Antirhinnum, CriddleZap, jackbondpreston, Pbone3, ModernMAK, Crapsky233, absoluteAquarian, rjmarzec, ubnt-intrepid, ScalarVector1, Pacnysam, Falcon-05, staticfox, JPANv2, Nyrest, Nagi...TML 2022 June Stable UpdateJun 1, 2022 - Community AnnouncementsWe've done tons of TML work in May, and June's Stable release is now here to bring that to you. Changes' Highlights The following is a list of the most noteworthy pull requests and commits that have been pushed to 1.4-preview in May, and are now available on the 1.4-stable branch. tModPorter by Chik3r and Chicken-Bones Summary: tModPorter has now been added to tModLoader as an official module on 1.4 preview. It will see more updates over the next while, but it is now at a reasonable release point. tModPorter itself is a custom software that helps mod developers transition away from 1.3 by automatically handling several of the breaking changes that we’ve introduced. However, it is not perfect - some work will still be needed, but it is hoped it will carry the brunt of the manual labor. Associated launcher files are included in the tModPorter folder in the Install Folder for tModLoader, as well as a button in-game to shortcut to that. Note that this is tModLoader’s first update with it - so if you encounter bugs, please let us know. Additionally, please note that many more automatic ports will be added to tModPorter in the next few days. You can help Chicken-Bones prioritize by posting things you'd most like to see automatically ported in the tModPorter Discord thread. The Grand Sound Playback Reimplementation by Mirsario Porting Notes: #preview-update-log in Discord Summary: • After 9 years in development, hopefully it will be worth the wait. • ModSound and SoundLoader have both been removed. As well as the Mod.SoundAutoloadingEnabled property. • LegacySoundStyle and CustomSoundStyle were removed. SoundStyle is now a struct (record), which contains everything a sound playing enthusiast would need: AssetRepository-based paths; Volume, pitch and looping control; Numbered suffix variants with even weighted random supported; Sound instance limits and their behavior; And etc., etc. • All sound playback is now done through one method - SlotId SoundEngine.PlaySound(SoundStyle style, Vector2? position = null). All legacy (int type, int style) overloads have been removed from the API. • I went through the pains of entirety converting all SoundID entries to the new SoundStyles, which means that you can now not only replicate vanilla sound playbacks, but also modify their copies with ease. I suggest getting familiar with the x with { A = B } syntax, it’s great here. • A few improvements may follow later, but they’re unlikely to be breaking changes. 'Item Use Rework' - Proper Implementation by Chicken-Bones, DarioDaf, ThomasThePencil, einarmo, rjmarzec, and Mirsario Porting Notes: #preview-update-log in Discord Summary: Basically, this cleans up a long standing set of TML bugs resulting from an attempted fix for a vanilla issue (#1437) with unpredictable item usage frames relative to their animations that was preventing modders from implementing their ideas. Add Mod/GlobalType NewInstance, IsCloneable, Clone and CloneNewInstances and Add CloneByReference attr...TML 1.4 Alpha 2022 May Stable UpdateMay 4, 2022 - Community AnnouncementsMay's 1.4-stable Alpha release is here, bringing in many essential improvements from April. Changes' Highlights The following is a list of the most noteworthy pull requests and commits that have been pushed to 1.4-preview in April, and are now available on the 1.4-stable branch. OnSpawn hooks by Mirsario & Itorius Porting Notes: #alpha-update-log in Discord Summary: (Mod developers will likely want to read the details in the Pull Request, linked above.) OnSpawn Hooks: Added the OnSpawn hooks for items, NPCs and projectiles (called when X.NewX gets called). Aside from being usable for basic initialization of these entity types, the hooks provide access to IEntitySource arguments that have been inaccessible for quite too much time. Modernization: ModGore and ModDust have been tweaked to streamline the API; NPCs and Projectiles now only use (improved) cloning for instantiation, CloneNewInstances properties have been removed. Gore Sources: IEntitySources are now used for instantiation of gores too. Previously there had been an attempt to make them be used for dusts, but collaborators found this to be way too tiresome to deal with. Entity Source Contexts, Helpers, and Reorganizations ItemSourceID and ProjectileSourceID static classes were removed in favor of new string? Context { get; } properties, which are available on every IEntitySource implementation. The vanilla helper methods for Players, NPCs, Projectiles, Items have been redone to remove entity-type ties as much as possible. Most of the renames go like .Get*Source_* -> .GetSource_*. Changes to entity source classes and helpers can be seen in the full pull request, linked above. DamageClass overhaul pt2 by ThomasThePencil Porting Notes: #alpha-update-log in Discord Summary: • Stat Modifier now has Flat and Base fields • Added attack speed and armor pen as 'stats' in the damage class system • Hybrid items which benefit from combinations of stats from other classes are now incorporated into damage class (like whips) • Crit chance and armor pen are copied onto projectiles on spawn, to fix crit-swapping • Items can now have armor pen. Item armor pen is added to projectile armor-pen on projectile spawn. • Attack speed is now an 'item use speed' modifier in the same vein as the other use speed hooks. It affects itemTime, animationTime and reuseDelay equally. This is a deviation from vanilla meleeSpeed which only affected animationTime, causing weird inconsistencies with weapons which had secondary effects under melee speed buffs. See the PR for more details on the vanilla differences. Some (modded) melee weapons could've been slightly buffed. Tile "smart interact" fixes/additions, sitting by direwolf420 Porting Notes: #alpha-update-log in Discord Summary: • ModTile.HasSmartInteract is now properly called again. • Added new parameters to HasSmartInteract which are used for conditional checks like vanilla, showcased in ExampleToilet. • Added new ModTile.ModifySmartInteractCoords hook which is showcase...Announcing new 1.4 tModLoader preview systemApr 2, 2022 - Community Announcements{STEAM_CLAN_IMAGE}/37627134/4da6a49cbb6b8a833049bc60dd3d9bb73d1095b9.png We're happy to announce that the tModLoader 1.4 Alpha experience will now be split between 2 branches - 1.4-preview and 1.4-stable. Most players on stable will be able to play without the fear of tModLoader updates breaking the game and their mods without notice. Each change will get a test period of up to one month, with the usually actively updated preview branch getting frozen for the last 7 days of every month, giving every mod developer time to update their mods and react to new changes, before the preview changes (and mod releases targeting the preview branch) move onto the 1.4-stable branch on the 1st day of each month. We now encourage all 1.3 mod developers to come and start porting their mods to 1.4! With some concerted effort, feedback and support, we hope to have the next 'stable' release of TML 1.4 (that's coming out in May) be one truly worthy of being called 'stable', just about in time for Terraria 1.4's 2 year anniversary. However, it is necessary to mention that this does not mean the end of the Alpha period, as many changes and improvements are still planned, but we believe that the API is now as if not more usable than 1.3's, and that regardless of the planned changes, the user and developer experiences will now be comfortable enough to facilitate full migration to 1.4. To switch to one of the new branches, just do the following: 1. Right click on tModLoader in Steam and select 'Properties...', then 'BETAS'; 2. Select either '1.4-stable' or '1.4-preview' in the drop-down menu on top; 3. Close the window. As before, no passwords are required. Be sure to join our Discord server to: - Find out more info about the Alpha in #alpha-readme and channels. - Be notified about current and future noteworthy changes in 'preview' before they arrive on 'stable', via #alpha-update-log and #collaborators channels. - Get help with TML issues and TML mod development in #alpha-support and #alpha-modding-help respectively.v0.11.7.8 UpdateNov 11, 2020 - Community AnnouncementstModLoader v0.11.7.8 Changelogs With the recent 1.4.1.2 release, tModLoader could no longer load the music, causing a wide variety of bugs. This release fixes that. As always, this is not an update with the Journeys End content, that is still being worked on.v0.11.7.5 UpdateJun 8, 2020 - Community AnnouncementstModLoader v0.11.7.5 Changelogs Other: Updated hashes for v1.4.0.5 Terraria Add warning messages for attempting to load 1.4 worlds and players Various typos and localization updates UICommon textures are now public Fixes: Fix modded banner tooltips Fix MysteryTile tooltip in multiplayer v0.11.7.4May 30, 2020 - Community Announcementsv0.11.7.4 Fixes: - Fix an npc spawn issue.v0.11.7.3 UpdateMay 29, 2020 - Community AnnouncementstModLoader v0.11.7.3 Changelogs Using Steam? Simply update TML through Steam. Not updating? Relaunch Steam. Please note it sometimes can take a while for the update to reach every Steam client. PSA: We're aware that family sharing is not working. Please be patient while we work on a fix. PSA 2: Cloud saves disappear if you have too many files on steam cloud, you should try moving files off your cloud if this is happening to you. This update supports Terraria v1.4.0.4 manual installation and GOG. Major: GOG Install should work again. Make sure terraria v1.4.0.4 installed. You can install TML into the GOG dir if you want, make sure a v1.4.0.4 Terraria.exe is present. If you patched your Terraria.exe, make a copy of the original exe and name it Terraria_1.4.0.4.exe Fixes: Fix a RandomUpdate issue (Surface updates) Fix LogArchiver.DeleteOldArchives() not working with "Old" log archive subdir Fix 'File already exists' in LogArchiver.MoveOldLogs() Fix mods failing to compile for unresolved FNA during pdb generation Fix includePDB in build.txt only looking for PDB files, not MDB files Fix MdbManager.TryResolveLocation sometimes NullReferenceExceptions, causing Exception ToString()'ing to blow up (cf. HookGetStackTrace) Fix shoes not drawing Fix upgrading .csproj going back to top of list (Game now remembers scrollbar position) Other: Refactor InstallVerifier Extra tips for error messages ExampleLaserWeapon updates PaintID Example Last Prism Made ExampleExplosive count towards Demolitionist Spawn/ItemID.Sets.ItemsThatCountAsBombsForDemolitionistToSpawn Added a menu for world gen crashes UIModConfig update Added a log message for steam cloud quota. Memory estimates for mods now show by default v0.11.7.2 UpdateMay 22, 2020 - Community AnnouncementsPatch update notes Steam Cloud: - Using cloud saves should no longer make them disappear... Sorry about that. Mod Loading: - Use multiple cores to pre-JIT methods in Terraria.exe, this should improve loading performance for some people Installation: - Added checks for correct Content directory and Terraria install Other: - Added some error logging to mod creation - Dynamically show the notification in the mod creation menu - Updated some error dialogs - Pack Newtonsoft.Json in root of embedded resources so it extracts with the correct name in references folder - Refactor/simplify "Terraria" name redirection in AssemblyManager.CecilAssemblyResolver - Added fallback save directory support if antivirus false positives can't be avoided. Simply make a file called savehere.txt in the install directory. Bugs: - Fixed some errors happening during log archiving - Fixed an issue where the modder could get stuck in the mod development welcome UI - Fixed `Failed to resolve assembly for Terraria v1.3.5.3 etc.` - Fixed an issue with TML debugging - Fixed an issue with building mods before updating ModCompile - Fixed an issue with the mod generator on Linux and Mac - Fixed Duplicate attribute errors - Fixed folder opening on Linux v0.11.7.1 UpdateMay 18, 2020 - Community AnnouncementsPatch update notes Fixed not being able to click ' Enable developer mode ' Fixed debugging not working Fixed ModPlayer.OnHitAnything() hook not being called. Fixed 'Arithmetic operation resulted in an overflow' Fixed some dye issues Fixed some "Please ensure Steam is running" errors - If this issue persist, make a file named steam_appid.txt file in the tModLoader with the contents: 1281930 FAQ: When will TML release for 1.4? This will take months, so you'll have to wait. When will TML 64 bit release? You will have to wait for the unofficial 64 bit branch to update, please be patient.tModLoader is releasing on the 16th of May!Apr 29, 2020 - Community AnnouncementsDig, Fight, and Build your way through the world of player-created mods on Terraria with tModLoader - this DLC makes modding Terraria a reality! tModLoader is releasing on the 16th of May alongside Terraria's Journey's End update! You will be able to install and play tModLoader through Steam. Simply install tModLoader and click play! You are able to play both vanilla Terraria and tModLoader at the same time using this method. Initially only tModLoader 1.3.5 will be available. The 1.4 version comes at a later time. View more information here. SUPPORT Looking for some help? You can receive support on our forum thread or our discord server! These are our best places to get support. Official site Forum post Discord invite tModLoader is an open-source project. This means the code is publicly available and anyone can make contributions to the project. Our project can be found on Github. Do you want to learn more about the inner workings for tModLoader? Maybe you want to use tModLoader right now? You can get started with our guide for players. There are also pages for developers and contributors. Our wiki is filled with guides that learn you how to mod using tModLoader. FAQ Here are some important notes about the upcoming tModLoader launch! You do not have to make any backups Simply update Terraria to 1.4 and install tModLoader on Steam You can play vanilla Terraria 1.4 and TML 1.3.5 alongside each other; tModLoader through Steam is treated as a separate game. tModLoader for the 1.4 version of the game will come at a later date. Steam Workshop is not supported as of yet, but is planned. The Mod Browser will exist just as it is now, and we will not force Steam Workshop use You can still use the 64 bit variant of tModLoader With the new release, tModLoader can be installed anywhere regardless of location or whether it is a Steam install. tModLoader will work for Windows, Mac and Linux How will this affect me? Will my mods still work when Terraria 1.4 is released? When the Terraria 1.4 update happens, your current Terraria install will automatically update to 1.4, thereby making any non-Steam version of tModLoader unable to load due to these version differences. To fix this, simply install tModLoader via Steam. tModLoader will now be installed independently from Terraria, with a separate entry in your Steam library, allowing you to switch between Terraria and tModLoader just by launching the version of the game you wish to play. Your mods, players, and worlds will all still be there. Does this mean tModLoader has updated to 1.4? No, that is still to come. tModLoader on Steam means tModLoader (on 1.3.5) and Terraria (on 1.4) will coexist without any effort from the user. I currently use tModLoader 64 bit, how will that work? tModLoader on Steam is launching with the 32 bit version of the application. We are still discussing potential ways to bring 64 bit along perhaps sometime in the future. At the very least, you'll should be able to manually install 64 bi...