TML 1.4 Alpha 2022 May Stable Update
May's 1.4-stable Alpha release is here, bringing in many essential improvements from April.
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.
[h3]OnSpawn hooks by Mirsario & Itorius[/h3]
Porting Notes: #alpha-update-log in Discord Summary:
[h3]DamageClass overhaul pt2 by ThomasThePencil[/h3]
Porting Notes: #alpha-update-log in Discord Summary:
[h3]Tile "smart interact" fixes/additions, sitting by direwolf420[/h3]
Porting Notes: #alpha-update-log in Discord Summary:
[h3]Buff draw hooks (take 2) by direwolf420[/h3]
Summary:
[h3]Add CanFallThroughPlatforms NPC hook + example, and misc EM localization fixes by direwolf420[/h3]
Examples: ExampleCustomAISlimeNPC.cs Summary:
[h3]Add NPC Profile System Extension + example by ThomasThePencil[/h3]
Summary:
[h3]Initialization of Workshop Tag code by Solxan[/h3]
Summary:
[h3]Major refactoring, field/property naming & conversions. by Mirsario[/h3]
Commits: #1, #2 Summary:
[h3]Make mods menu aware of outdated mods from the Alpha period by Solxan[/h3]
Summary:
[h3]Miscellaneous Fixes[/h3]
Ishigh1: Fix #1881 (boulder issue) einarmo: Fix tile placing wands draining inventory Solxan: Fix #2280 (Dressers won't interact properly without a hook)
The following fixes have been merged into stable in April, but were not mentioned anywhere on Steam yet:
ExterminatorX99: Fixed held item animations ExterminatorX99: Remove upper bound check on tails direwolf420: Fix credit roll crashing at the end when trying to draw player direwolf420: Fix right clicking unloaded items in dye slots, missing CanStack direwolf420: Fix water lighting in color mode, clarify hook defaults jopojelly: Version-based preprocessor symbols - jopojelly: Fixed mod deletion issues Mirsario: Fixed a vanilla bug with RGB settings resetting on early quits/crashes JamzOhJamz: Fixed a vanilla bug with OGG audio track loop points
[h3]How do I switch to the 1.4 Alpha versions?[/h3]
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.
[h3]Help! My character can't move![/h3]
Usually, anything like this means that you have an outdated mod, the developer(s) of which have most likely not yet gotten used to our preview systems, which allow them to prepare mod updates in advance before the stable branch is updated.
Disable all your mods, and re-add them one by one to figure out which one is causing the issues.
We're working on adding checks that would prevent enabling mods that use outdated/removed API features. This might be pushed to the stable branch later in the month, in a non-breaking way.
[h3]When will 1.4-stable become the default branch?[/h3]
We're hoping to do that in June, after some changes planned for later in May!
If nothing goes wrong, then that should be the date.
Worry not, 1.3 players - whenever this happens, the 1.3 TML versions will become available through a (new) 1.3-stable Steam Beta branch themselves.
[h3]When will 1.4 TML be 64-bit???[/h3]
It's already 64-bit!
For nerds' eyes only: Specifically, it's what's called AnyCPU, but we currently only ship x86_64 natives. In addition to TML being made 64-bit-capable, it has been made to run on a ten years newer runtime (.NET 6+), far newer versions of a better game framework (FNA instead of XNA), and we've even unified what would've been 6 Windows/Linux/Mac Client/Server builds into just one portable release that can be run on every Desktop OS.
Together, all of this yells: performance, consistency, stability, possibilities, and comfort. ːkag_flexː
[h3]Where can I find out more about the 1.4 Alpha?[/h3]
Be sure to join our Discord server to:
- Find out more info about the Alpha in #alpha-readme and [🤠TML 1.4 ALPHA] 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.
This Steam post sure is late, we're still getting used to our new release schedules. ːSBchickenː
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.
[h3]OnSpawn hooks by Mirsario & Itorius[/h3]
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.
[h3]DamageClass overhaul pt2 by ThomasThePencil[/h3]
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.
[h3]Tile "smart interact" fixes/additions, sitting by direwolf420[/h3]
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 showcased for ExampleBed, ExampleChair, and ExampleToilet, and should also be showcased whenever ExampleDresser gets ported.
• Added new ModTile.ModifySittingTargetInfo hook which is showcased for ExampleChair and ExampleToilet.
• Added new ModTile.ModifySleepingTargetInfo hook which is showcased for ExampleBed.
• Changed the NPC sitting code to account for modded chairs.
• Added NPCID.Sets.CannotSitOnFurniture.
• ExampleMod: Updated ExampleChair & ExampleBed examples based on 1.4 changes, added ExampleToilet (both almost the same functionality).
• ExampleMod: ExampleChair & ExampleBed now have a highlight texture.
[h3]Buff draw hooks (take 2) by direwolf420[/h3]
Summary:
• Added ModBuff and GlobalBuff hooks: PreDraw, PostDraw, RightClick
• Added summaries to some vanilla methods: Main.TryGetBuffTime, Main.TryRemovingBuff, Main.DrawBuffIcon
• ExampleMod: Added ExampleGlobalBuff.cs, AnimatedBuff.cs; Expanded ExampleDefenseBuff.cs, ExampleBuffPotion.cs, PartyZombie.cs
[h3]Add CanFallThroughPlatforms NPC hook + example, and misc EM localization fixes by direwolf420[/h3]
Examples: ExampleCustomAISlimeNPC.cs Summary:
• Adds a CanFallThroughPlatforms ModNPC & GlobalNPC hook.
• ExampleCustomAISlime: Added CanFallThroughPlatforms examples, fixed localization for the NPC.
[h3]Add NPC Profile System Extension + example by ThomasThePencil[/h3]
Summary:
• Replaces TownNPCName hook with SetNPCNameList and adds global equivalent
• Adds SetTownNPCProfile hook
[h3]Initialization of Workshop Tag code by Solxan[/h3]
Summary:
• Allows TML to add future Workshop Tags
• Adds a handful of preliminary tags to start with, and get feedback from
[h3]Major refactoring, field/property naming & conversions. by Mirsario[/h3]
Commits: #1, #2 Summary:
TML's personal naming conventions were slightly altered again to be closer to the common C# conventions from Microsoft, which are used in XNA and newer parts of Terraria. All non-private fields now use `PascalCase`, leaving `camelCase` only to local variables, method parameters, and private fields.
I went through many (mostly old) TML files and modernized as many as I could.
[h3]Make mods menu aware of outdated mods from the Alpha period by Solxan[/h3]
Summary:
• Players will now see 'Alpha: This Mod is Old, Enable at own risk' in the mods menu for mods built during Alpha period of August 2021 to March 2022
• Players will now see 'Stable: this mod is old, enable at your own risk' for mods that haven't been updated in over a month and could be broken
[h3]Miscellaneous Fixes[/h3]
Ishigh1: Fix #1881 (boulder issue) einarmo: Fix tile placing wands draining inventory Solxan: Fix #2280 (Dressers won't interact properly without a hook)
Earlier Mid-month Fixes
The following fixes have been merged into stable in April, but were not mentioned anywhere on Steam yet:
ExterminatorX99: Fixed held item animations ExterminatorX99: Remove upper bound check on tails direwolf420: Fix credit roll crashing at the end when trying to draw player direwolf420: Fix right clicking unloaded items in dye slots, missing CanStack direwolf420: Fix water lighting in color mode, clarify hook defaults jopojelly: Version-based preprocessor symbols - jopojelly: Fixed mod deletion issues Mirsario: Fixed a vanilla bug with RGB settings resetting on early quits/crashes JamzOhJamz: Fixed a vanilla bug with OGG audio track loop points
Frequently Asked Questions
[h3]How do I switch to the 1.4 Alpha versions?[/h3]
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.
[h3]Help! My character can't move![/h3]
Usually, anything like this means that you have an outdated mod, the developer(s) of which have most likely not yet gotten used to our preview systems, which allow them to prepare mod updates in advance before the stable branch is updated.
Disable all your mods, and re-add them one by one to figure out which one is causing the issues.
We're working on adding checks that would prevent enabling mods that use outdated/removed API features. This might be pushed to the stable branch later in the month, in a non-breaking way.
[h3]When will 1.4-stable become the default branch?[/h3]
We're hoping to do that in June, after some changes planned for later in May!
If nothing goes wrong, then that should be the date.
Worry not, 1.3 players - whenever this happens, the 1.3 TML versions will become available through a (new) 1.3-stable Steam Beta branch themselves.
[h3]When will 1.4 TML be 64-bit???[/h3]
It's already 64-bit!
For nerds' eyes only: Specifically, it's what's called AnyCPU, but we currently only ship x86_64 natives. In addition to TML being made 64-bit-capable, it has been made to run on a ten years newer runtime (.NET 6+), far newer versions of a better game framework (FNA instead of XNA), and we've even unified what would've been 6 Windows/Linux/Mac Client/Server builds into just one portable release that can be run on every Desktop OS.
Together, all of this yells: performance, consistency, stability, possibilities, and comfort. ːkag_flexː
[h3]Where can I find out more about the 1.4 Alpha?[/h3]
Be sure to join our Discord server to:
- Find out more info about the Alpha in #alpha-readme and [🤠TML 1.4 ALPHA] 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.
This Steam post sure is late, we're still getting used to our new release schedules. ːSBchickenː