Addon manifest (.txt) format

From ESOUI Wiki

Jump to: navigation, search

Contents

File format

Within each addon's directory, in addition to the actual Lua and XML files, there is one file that is required to be present for an addon to be recognized. This "manifest file" shares the same name as the addon's folder, plus a .txt extension. A basic version looks something like this:

## Title: Full Addon Title
## APIVersion: 100010

SomeLuaFile.lua
SomeInterfaceXml.xml

; this is a comment

The lines beginning with ## are metadata about the addon, lines beginning with ; are comments. The rest of the lines are simply a list of file paths relative to the addon's directory which should be loaded as part of the addon. Lua files will be loaded in the order they are specified.

Relative paths are supported within the addon's folder.

Dir/SomeLuaFile.lua

Some variable expansions are available as explained in the next section.

Variable Expansion

Variables are written as a dollar sign followed by a name in parentheses. There are currently three variables that can be used in paths.

Variable Values Description
$(language) en, de, fr, jp This substitution can be used to load a file depending on the current client language
$(languageDirectory) ? Not confirmed what it does, but my guess is it expands to the $(language) followed by a slash
$(APIVersion) 100011, 100012 With this variable a file can be loaded based on the api version of the game client. Useful to stay compatible with both versions when a major update is coming

Examples

localization/$(language).lua
misc_$(APIVersion)/window.xml
start$(APIVersion).lua

When started on the client with API version 100012 and English client language they will point to the following files:

localization/en.lua
misc_100012/window.xml
start100012.lua

In case the substituted file does not exist, it will silently fail to load.

Metadata fields

APIVersion

Defines the addon API version which the addon was written against. This started at 100003 at launch (with many old Addons still using this version) and was changed to 100004 with Craglorn/1.1 patch. Addons with an APIVersion that does not match the current client's API version will be disabled unless the "Allow out of date addons" box is checked in the addons window. You can find what is the current API version on the first line of this text file: ~\Documents\Elder Scrolls Online\live\AddOnSettings.txt

## APIVersion: 100010

Since Version 100015 you can specify two versions at once to make an addon load in the live and pts version of the game at the same time.

## APIVersion: 100015 100016

Title

A descriptive title for the addon, displayed in the addon manager. Can contain spaces and other special characters. Length limit is 64 characters.

## Title: The title of your addon

Description

A description of the addon, displayed in the tooltip for the addon in the addons window list. Can contain spaces and other special characters.

## Description: A long description of what your addon does.

Version

A version of the addon. Can contain numbers, characters, spaces and other special characters.

## Version: version number

Author

An author of the addon, displayed in the addon manager. Can contain spaces and other special characters.

## Author: Author(s) name(s)

DependsOn

A space-separated list of names for addons which must be present and are loaded before this addon is loaded. Any dependencies are missing, the game will refuse to load this addon. Addon names are case sensitive.

## DependsOn: AddonNameYouDependOn SecondAddonNameYouDependOn

OptionalDependsOn

Space-separated list of addon names which, if they are present, should be loaded before this addon. The lack of an optional dependency will not prevent this addon from being loaded, however - unlike DependsOn.

## OptionalDependsOn: AddonNameYouDependOn SecondAddonNameYouDependOn

SavedVariables

Space-separated list of names for a data objects that will be persisted to disk in between UI loads, allowing you to save data that isn't reset when the user logs out or reloads the UI. Usually accessed via ZO_SavedVars, but in essence it's just a global table. The only requirement is that it must be created (if it doesn't already exist) in your addon's EVENT_ADD_ON_LOADED handler, otherwise it won't be properly saved. And as I understand it, don't try to access it earlier, it might not be loaded yet.

## SavedVariables: ReferenceToYourSavedVars ReferenceToYourOtherSavedVars
Personal tools
Namespaces
Variants
Actions
Menu
Wiki
Toolbox