This is the plugin repository for the Dalamud plugin framework for Final Fantasy XIV. This repository implements DIP17 to make the submission process easier and faster.
Before submitting, make sure your plugin repository is in order:
- Ensure your plugin is on a publicly accessible Git repo (GitHub, GitLab, or any self-hosted Git instance that allows HTTP clones without authentication).
- Update your
.csproj:- (Preferred for most plugins) Set your SDK to the latest
Dalamud.NET.Sdkversion. See the sample plugin for reference. - Alternatively, use
$(DalamudLibPath)and DalamudPackager from NuGet for more advanced plugin needs.
- (Preferred for most plugins) Set your SDK to the latest
- Build your plugin in Release mode, then commit your
.csprojand the newly generated lock file.
When the plugin approval group reviews your plugin, they will check for the following:
- Does it meet our guidelines, as agreed upon by multiple members of the group?
- Does it feature any combat elements? If so, are they purely informational, and do they show only information the player would normally know?
- Does it pass an informal code review?
- Does it install cleanly?
- Does the configuration window (if present) behave correctly?
- Does the base functionality of the plugin work (if testable easily)?
- Does it have no obvious technical issues?
- Is its JSON correctly formatted? (We hope to make this unnecessary in future.)
- If it is a new plugin, is it in the testing channel and not the stable channel? We want new plugins to be in testing to make it easier for the group to test, as well as reducing the impact of any unforeseen issues.
- Does it meet the Technical criteria?
These criteria are intended to prevent issues for users. We are happy to work with you to get you across the line - just reach out in the Discord.
There are a few technical requirements that must be met before submitting your plugin. They will make your plugin nicer to use.
- Your plugin must have an
icon.pngthat is no larger than 512x512 and no smaller than 64x64, located inimages/. - For regular windows, such as settings and utility windows, you should use the Dalamud Windowing API. It enhances windows with features like integration into the native UI closing order, pinning, and opacity controls. If it looks like a window, it should use the Windowing API. We will not reject updates to existing plugins for this, but we encourage everyone to upgrade.
- Your plugin's version and assembly version must not be based on a timestamp or a continually increasing build number. Every time your plugin is built from a specific commit, regardless of the time or date, should produce the same version.
-
Fork this repository, or use the GitHub web editor (press
.in the repo, or press the pencil icon on an existing manifest). -
In your fork, create one of the following files depending on your target channel:
stable/(plugin name)/manifest.tomltesting/live/(plugin name)/manifest.toml
We prefer that new plugins go to
testing/liveso that any issues can be resolved before reaching a wider audience. For more information, see the DIP17 spec.In the manifest,
maintainersare GitHub usernames allowed to push updates to this plugin.ownersare GitHub usernames considered an authority over the plugin — they are automatically maintainers and are the point of contact for any inquiries.[plugin] repository = "https://github.com/goatcorp/SamplePlugin.git" commit = "765d9bb434ac99a27e9a3f2ba0a555b55fe6269d" owners = ["plo"] maintainers = ["gon", "goaaats"] project_path = "SamplePlugin" changelog = "Added Herobrine"
-
Place the images for your plugin in an
imagessubfolder next to your manifest:stable/(plugin name)/images/testing/live/(plugin name)/images/
Please note this structure will be streamlined in the future. If you can help, we would love to hear from you.
-
Open the PR. If you are using the GitHub web editor, this will happen automatically.
- If you used AI tooling at any point, review the AI Usage Policy and disclose your level of AI use in the PR description. Entirely AI-generated submissions will be rejected, and undisclosed AI use may result in a ban.
You will also need to be using DalamudPackager - please check the SamplePlugin for an example. If you need help, please reach out.
Edit the commit hash in your manifest to point to the new commit. Always make updates from a new branch to make the review process cleaner.
To trigger a re-build of your PR, post a comment with the content:
bleatbot, rebuild
If your build process requires secrets, or you want to include a secret in your plugin, use this page to encrypt the secret for inclusion in your manifest. It will then be made available to your plugin's MSBuild or build script via environment variables, as described in the instructions on that page.
When submitting a plugin, please review the following:
- Acceptable Use Policy
- Terms of Service - this includes the rights you grant us when uploading a plugin to this repository
- Code of Conduct - governs all participation in this repository, including issues, PRs, and reviews
- AI Usage Policy - governs the use of AI to assist with plugin creation and must be followed
- Plugin Adoption Policy - explains what happens if you abandon your plugin, and includes instructions for taking over a plugin from another developer