What's New in Dalamud v12 (draft)
Dalamud v12 is the current major version of Dalamud, and will release with Patch 7.2. This is a high-level overview of changes. You can see a code diff of all of these changes here.
Key Information
- Branch:
api12
(view on GitHub) - Release Date: March 25, 2025
- API Level: 12
- .NET Version: .NET 9.0
If you haven't done so yet, we strongly recommend migrating your plugin project to Dalamud.NET.Sdk, especially if you are still using a targets file to reference the Dalamud SDK. We no longer plan to support the targets file in the next API level.
It includes the latest version of DalamudPackager, pinned to the current API level, and will make it easier for us to introduce changes to how we distribute SDK files in the future.
New Features
- A new experimental
ISeStringEvaluator
service has been added. (by @Haselnussbomber)- This service allows you to evaluate encoded SeStrings from memory or various sheets as if they were being displayed by the game.
- Various parameters are automatically injected from active game state, and can be supplemented through arguments.
- The experimental flag will be removed in a future update during the 7.2 cycle.
Major Changes
- Dalamud now uses .NET 9.
- If you use Dalamud.NET.Sdk, your plugin will automatically use the new .NET version and API level upon upgrading to v12+.
- If not, you will have to change your target framework to
net9.0-windows
. - You will have to install the .NET 9 SDK to build plugins targeting this Dalamud version.
- The
IObjectTable
service and certainIClientState
properties will now throw anInvalidOperationException
on certain operations not performed in the main thread.- You may use functions in the
IFramework
service such asRunOnTick()
andRunOnFrameworkThread()
to easily schedule tasks to run on the main thread.
- You may use functions in the
- Corrupt state exceptions (e.g.
AccessViolationException
) will no longer be caught by the CLR.- This has been deprecated by Microsoft and is causing issues with the newer, faster exception handling mechanism introduced with .NET 9
- Dalamud.NET.Sdk now references
InteropGenerator.Runtime.dll
from FFXIVClientStructs automatically to allow usage of newly introduced string helpers.- If you do not use the SDK, you need to reference this DLL manually to use FFXIVClientStructs types.
Minor Changes
- Some Dalamud APIs that take textures have been normalized to take
ISharedImmediateTexture
instead of raw texture handles.- Icons for notifications are now set by assigning an
ISharedImmediateTexture
toINotification.IconTexture
, instead of by callingSetTexture()
. ITitleScreenMenu
now takes anISharedImmediateTexture
inITitleScreenMenu.AddEntry()
.
- Icons for notifications are now set by assigning an
SummonerGauge
andDarkKnightGauge
had extra fields from ClientStructs added.- Certain properties in
SummonerGauge
were renamed.
- Certain properties in
- All job gauge enum values have been converted from SNAKE_CASE to PascalCase to follow C# code standards.
- The
Easing#Value
property has been deprecated. Devs should select eitherValueClamped
orValueUnclamped
depending on their use case. PluginLoadReason
is now a[Flags]
enum. Use.HasFlag()
to check its values.
Packages
We have released new packages of the SDK and DalamudPackager for this Dalamud API version.
- Dalamud.NET.Sdk v12.0.2
- To upgrade, change the header of your plugins'
.csproj
file:<Project Sdk="Dalamud.NET.Sdk/12.0.2">
- To upgrade, change the header of your plugins'
- DalamudPackager v12.0.0
Contributors
We want to thank Marzent, Critical-Impact, Aireil, Haselnussbomber, KirisameVanilla, kizer, zbee, nathanctech, AlexValliere, voidstar0, Cytraen, Blooym, Jaksuhn, wolfcomp, ItsBexy, nebel, WorkingRobot and Infiziert90 for their contributions during this patch cycle.
FFXIVClientStructs Changes
FFXIVClientStructs will introduce their own breaking changes for Patch 7.2, which will be documented on their docs page.
We want to thank aers, Caraxi, Haselnussbomber, Pohky, WildWolf and the other FFXIVClientStructs contributors for their work.