Update Your Manifest
Overview
Your manifest (manifest.json) provides important metadata to Blish HUD prior to your module loading. The manifest specification is kept in our manifest.json repository and is subject to revisions in the future.
Manifest Format (v1)
An example manifest.json
with all attributes filled can be found here.
Required Attributes
Name
The display name of the package.
{
"name": "Marker Deleter"
}
Version
The version of the package. Should be Semanticly Versioned. Other packages can require your package as a dependency using version ranges (similar to npm).
{
"version": "1.2.3"
}
Namespace
This is the primary identifier - it is a unique name for the package. Do not change this value once your package has been published. It is used internally within Blish HUD for Settings and more. Modules should not be within the bh
namespace unless they have been contributed and approved to the base community packages. The manifest.json namespace and the C# namespace you use in your .cs files are unrelated. They can be the same but do not have to be.
{
"namespace": "jdoe.mypackages.markerdeleter"
}
When choosing your namespace, it is important to keep it unique from other module developers. A good namespace will be prefixed with your own unique handle, for example, acme.supermodule
and acme.awesomemodule
- both of which start with acme
. You may wish to use your online handle.
In any case, it is expected that the namespace will be prefixed with something.
Package
The name of your compiled module with ".dll" at the end.
{
"package": "Marker Deleter.dll"
}
If you experience issues getting the package value correct, you can open your bhm with an application such as 7-Zip to ensure that the DLL within it matches the package attribute you've specified.
Manifest Version
The version of manifest used. This is currently 1.
{
"manifest_version": 1
}
Contributors
The author of the module, along with any contributors. At least one contributor must be listed. The name
is required for each contributor. The username
and url
fields are both optional.
{
"contributors": [
{
"name": "Freesnöw",
"username": "LandersXanders.1235",
"url": "https://github.com/dlamkins"
},
{
"name": "jdoe",
"username": "jdoe.1234"
}
]
}
Recommended Attributes
Description
A description of the module.
{
"description": "This module allows you to select any marker and delete it."
}
Dependencies
The dependencies required for your module. Our implementation is similar to npm. We use semver.net to verify dependency versions.
A dependency on bh.blishhud
indicates the versions of Blish HUD the module supports.
{
"dependencies": {
"bh.blishhud" : "~0.7.1",
"example.module.namespace" : "~1.2.3",
}
}
It is important to specify an accurate bh.blishhud
dependency with version range to ensure that the proper versions of your module are displayed to users when using the repository.
URL
A url that can be used to link to the project or a link to more details instructions.
{
"url": "https://github.com/yourname/yourmodule/README.md"
}
This value is currently not used.
Optional Attributes
Directories
A list of directory names that are used by the module. These directories will be registered by the FileService
and a button to open the directory directly will be shown in the module settings. Do not include subfolders (e.g. "markers/data"
) in your manifest - they are not supported in the manifest and your module must manage those directly.
{
"directories": ["markers"]
}
Enabled Without GW2
Allows the module to continue to run when GW2 is not running and Blish HUD is still running in the tray. Do not set to true unless your module requires this. Modules that enable this will be treated with more scrutiny.
{
"enabled_without_gw2": false
}
API Permissions
Gives the module permission to access the specified API permissions. A permission can be marked as optional if the functionality of the module does not rely on the permission (the module must check for this). A description can also be provided to provide justification to the end user as to why the permission is needed.
If no API permissions are needed, do not include api_permissions
at all.
{
"api_permissions": {
"account" : { "optional": true, "details": "Needed if you want the special feature enabled." },
"inventories" : { "optional": false, "details": "Needed to review the item in your inventory." }
}
}