As some public properties of `IGameConfig` are being set on the first `Framework` tick, there was a short window that those properties were null, which goes against the interface declaration. This commit fixes that, by making those properties block for the full initialization of the class. A possible side effect is that a plugin that is set to block the game from loading until it loads will now hang the game if it tries to access the game configuration from its constructor, instead of throwing a `NullReferenceException`. As it would mean that the plugin was buggy at the first place and it would have sometimes failed to load anyway, it might as well be a non-breaking change. |
||
|---|---|---|
| .github | ||
| .nuke | ||
| api | ||
| build | ||
| Dalamud | ||
| Dalamud.Boot | ||
| Dalamud.Common | ||
| Dalamud.CorePlugin | ||
| Dalamud.Injector | ||
| Dalamud.Injector.Boot | ||
| Dalamud.Test | ||
| DalamudCrashHandler | ||
| docs | ||
| lib | ||
| targets | ||
| .editorconfig | ||
| .gitattributes | ||
| .gitignore | ||
| .gitmodules | ||
| build.cmd | ||
| build.ps1 | ||
| build.sh | ||
| CreateHashList.ps1 | ||
| Dalamud.sln | ||
| Dalamud.sln.DotSettings | ||
| docfx.json | ||
| filterConfig.yml | ||
| global.json | ||
| index.md | ||
| LICENSE | ||
| README.md | ||
| sign.ps1 | ||
| stylecop.json | ||
Dalamud

Dalamud is a plugin development framework for FINAL FANTASY XIV that provides access to game data and native interoperability with the game itself to add functionality and quality-of-life.
It is meant to be used in conjunction with FFXIVQuickLauncher, which manages and launches Dalamud for you. It is generally not recommended for users to try to run Dalamud manually as there are multiple dependencies and assumed folder paths.
Hold Up!
If you are just trying to use Dalamud, you don't need to do anything on this page - please download XIVLauncher from its official page and follow the setup instructions.
Plugin development
Dalamud features a growing API for in-game plugin development with game data and chat access and overlays. Please see our Developer FAQ and the API documentation for more details.
If you need any support regarding the API or usage of Dalamud, please join our discord server.
Thanks to Mino, whose work has made this possible!
Components & Pipeline
These components are used in order to load Dalamud into a target process. Dalamud can be loaded via DLL injection, or by rewriting a process' entrypoint.
| Name | Purpose |
|---|---|
| Dalamud.Injector.Boot (C++) | Loads the .NET Core runtime into a process via hostfxr and kicks off Dalamud.Injector |
| Dalamud.Injector (C#) | Performs DLL injection on the target process |
| Dalamud.Boot (C++) | Loads the .NET Core runtime into the active process and kicks off Dalamud, or rewrites a target process' entrypoint to do so |
| Dalamud (C#) | Core API, game bindings, plugin framework |
| Dalamud.CorePlugin (C#) | Testbed plugin that can access Dalamud internals, to prototype new Dalamud features |
Branches
We are currently working from the following branches.
| Name | API Level | Purpose | .NET Version | Track |
|---|---|---|---|---|
| master | 8 | Current release branch | .NET 7.0.0 (November 2022) | Release & Staging |
| v9 | 9 | Next major version, slated for release alongside Patch 6.5 | .NET 7.0.0 (November 2022) | v9 |