From ESOUI Wiki
Jump to: navigation,search
In ESO, installing and using addons is completely legal and allowed.Adding them to the game is very easy, as you will see below. Be sure to check out our Elder Scrolls Online starter guide while you are here. Step 1: Download Add-ons. There are lots of sites dedicated to add-ons. Minion, AddOn Manager for The Elder Scrolls Online. To install all the addons we list below, simply navigate to “Find More”, and copy-paste the addon name. Installing the addons manually is not rocket science, you just drop the downloaded folders inside the AddOns folder which we mentioned above. Majority of ESO addon authors upload and maintain addons just on ESOUI. It is the same with me, I have here only 3 addons and I'm updating them here only if I feel like doing it. On ESOUI I have currently 32 addons and they are regularly updated.
Libraries are basically add-ons on their own, but they share re-usable code or API functions which can be used in several add-ons.
See here for an add-on's structure: https://wiki.esoui.com/Addon_manifest_(.txt)_formatIt will be basically the same for libraries.
The main difference is: Libraries SHOULD use the txt manifest tag ## IsLibrary: true to identify them in the ingame add-on manager as such library.They will appear at the bottom of the add-on manager's list then for an easier find.
|
- Yes, this still works as off April 27th, 2020 (The process won't actually ever change.) Shameless plug! Watch this video ( https://www.youtube.com/watch?v=.
- DL, install, get to a screen about finding the ESO folder (if u know how to do that, why do you need Minion?), click on Add-Ons folder and nothing happens, it just goes back to the prompt to chose the add-ons folder. There's no help or menu of any kind available, just a blank UI and this looping prompt.
File Encoding
To prevent issues, make sure the file is UTF-8 w/o BOM. UTF-8-BOM and ANSI can lead to some different issues during add-on loading etc.
Example
A basic manifest.txt file contains: three mandatory directives (Title:, AddOnVersion:, APIVersion:); three situational directives (DependsOn:, IsLibrary: true, OptionalDependsOn:), and one ESOUI/Minion directive (Version:). It looks something like this:
Lines beginning with two hashmarks
##
define the metadata of the addon, and are often referred to as 'directives'. Directives specify information and metadata about the add-on. Each directive and its values are explained in the next paragraphs; one paragraph per directive. Be very careful to leave a space after the trailing colon delimiter (e.g. ': '). If you don't, the game's parser will not find the directive's metadata values.Lines beginning with a semi-colon (
;
) or hashmark (#
) are comments. ESO restricts comment lines to 1024 characters per line. Comment lines can contain any characters including hashmarks. Comments terminate at the next newline.Sengoku basara 2 iso english. Diskgenius. The rest of the lines in a manifest are simply a list of relative folder and file paths that should be loaded as part of the add-on. Relative file paths can look like this:
Or like this:
ESO loads the files in the same order in which they are listed in the manifest. Loading a .lua file executes all the code within it except for the code snippets contained within functions. The functions are created, but none of the code within them gets executed until another code snippet outside of the function invokes it.
A total example of a library's manifest txt file could be:
Library versioning
Because libraries could be loaded in several ways to your addons the game needs a method to check which version of the loaded library is the most up-to-date one.
LibStub - Library version control
Attention
- LibStub is obsolete and should NOT be used anymore! You should start to prepare your addons and strip LibStub calls where it is not needed anymore!
Use a txt file for your libraris instead and use the ## AddOnVersion: tag to assure the ingame vanilla UI addon manager loads the libraries with their newest version only!
See ##AddOnVersion tag below.
LibStub (https://www.esoui.com/downloads/info44-LibStub.html) was a library created to assure that your libraries get loaded ONLY once with the highest possible version number.
As the base game did not provide such a possibility until the Summerset DLC, LibStub was used in about all libraries to assure this.
The negative aspecht of LibStub was that the game's addon manager loads ALL findings of a library via LibStub and then the library assures that only the highest version number provided will be kept.
But this makes the game load the code of outdated and older versions at least once, where the newer ## AddOnVersion tag in the libraries txt files assures that ONLY the highest number files will be loaded
and all other wont.
As the base game did not provide such a possibility until the Summerset DLC, LibStub was used in about all libraries to assure this.
The negative aspecht of LibStub was that the game's addon manager loads ALL findings of a library via LibStub and then the library assures that only the highest version number provided will be kept.
But this makes the game load the code of outdated and older versions at least once, where the newer ## AddOnVersion tag in the libraries txt files assures that ONLY the highest number files will be loaded
and all other wont.
## AddOnVersion: <signed integer>
After the Summerset DLC release one started changing to the new manifest txt tag
in order to assure that ONLY the highest integer version gets loaded ingame.
If you build a new library do not use LibStub anymore but use the tag
and in your addons using the library use the tag
to assure the library gets loaded properly.
Eso Minion Addon Folder Location
How to access libraries from addons/other libraries
To make your library accessible for other addons/libraries it needs a global variable.
Please do not use LibStub anymore for this (see above at 'LibStub - Library version control')!
If your library is named LibMyLibrary1.0 e.g. you could create a global variable
Please do not use LibStub anymore for this (see above at 'LibStub - Library version control')!
If your library is named LibMyLibrary1.0 e.g. you could create a global variable
which holds all library data and functions.
Inside your addon use the global variable then to check if the library exists, and to use its functions:
Inside your addon use the global variable then to check if the library exists, and to use its functions:
Important
Please note that - characters and versioning decimal digits in the library's name like LibAddonMenu-2.0 cannot be used as global lua variable!lua would try to subract 2.0 from a variable LibAddonMenu in this case.
You need to use a signed integer value inside the global name then, like LibAddonMenu2.And you shouldn't include any versioning or revision strings like r5 or similar into the variable name. Keep it simple.
Please note that - characters and versioning decimal digits in the library's name like LibAddonMenu-2.0 cannot be used as global lua variable!lua would try to subract 2.0 from a variable LibAddonMenu in this case.
You need to use a signed integer value inside the global name then, like LibAddonMenu2.And you shouldn't include any versioning or revision strings like r5 or similar into the variable name. Keep it simple.
Be sure to add the global variable name to your library description text on addon websites so authors are able to easily find and use it!
And please think about updating your library to abandon the usage of LibStub, provide it an ## AddOnVersion: and a global variable if you were using LibStub until now.
Hybrid solution - Loading library with LibStub (if it's still around) and with it's global variable
Attention: LibStub is obsolete and should NOT be used anymore! You should start to prepare your addons and strip LibStub calls where it is not needed anymore!
e.g. use the global variable LibAddonMenu2 instead of LibStub('LibAddonMenu-2.0'). Beware that the global variable LibAddonMenu2 was added with LAM version 2.0 r28 so make sure your addon's manifest txt file
=28:
e.g. use the global variable LibAddonMenu2 instead of LibStub('LibAddonMenu-2.0'). Beware that the global variable LibAddonMenu2 was added with LAM version 2.0 r28 so make sure your addon's manifest txt file
=28:
If you want to change your current libraries to use LibStub as long as it is still around, but also be able to use the global variables of libraries,
you can build a hybrid lua code to check this.
In your library's manifest txt you need to put LibStub into the OptionalDependsOn: tag, instead of the ## DependsOn:, so your addon/library will load properly even if LibStub is not there anymore.
you can build a hybrid lua code to check this.
In your library's manifest txt you need to put LibStub into the OptionalDependsOn: tag, instead of the ## DependsOn:, so your addon/library will load properly even if LibStub is not there anymore.
AddOns on their own should never be made dependent to LibStub as the addon cannot be loaded in multiple versions at the same time, only libraries should!
In your addon/library code you can try if LibStub is present but be sure to set the 'silent' flag to true so there will be no lua error message if LibStub is missing.
Check if the variable is loaded then with a nil check (or if <variable> then). If it is nil it wasn't loaded, so try the global variable afterwards:
Check if the variable is loaded then with a nil check (or if <variable> then). If it is nil it wasn't loaded, so try the global variable afterwards:
Best Eso Addons
Providing libraries (standalone / bundled with addon, but how?)
Libraries are meant to be excluded from addons as they are re-usable code for other addons.
But there might be reasons why libraries could be included in subfolders of addons, e.g. if the library is only build for that one addon.
Nevertheless the simplest way to update a library, or to find errors due to libraries, would be a standalone installation of the library, just like a normal addon.
Addon managers like Minion are able to download and install & update the libraries.
DependenciesDependencies are needed addons/libraries for an addon/library to run properly.If dependencies are 'hard' (txt manifest tag ## DependsOn:) the addon/library won't be loaded ingame if any dependeny is missing!
If dependencies are 'soft' (txt manifest tag ## OptionalDependsOn:) the addon/library will be loaded ingame if any dependeny is missing, but the content depending on the missing dependencies cannot be used then!
The dependencies (OptionalDependsOn / DependsOn) of an addon show which libraries are needed in order to let an addon work properly.
As there is no automatism to install dependencies yet one currently needs to check the addon's description at the download page, or expand the addon ingame in the addon manager and read which extra lines (dependencies) are shown -> Install those afterwards.In the next versions of Minion (>= version 4) e.g. the dependencies will be read from the addon's txt manifest file and the manager will try to download and install those automatically.
But there might be reasons why libraries could be included in subfolders of addons, e.g. if the library is only build for that one addon.
Nevertheless the simplest way to update a library, or to find errors due to libraries, would be a standalone installation of the library, just like a normal addon.
Addon managers like Minion are able to download and install & update the libraries.
DependenciesDependencies are needed addons/libraries for an addon/library to run properly.If dependencies are 'hard' (txt manifest tag ## DependsOn:) the addon/library won't be loaded ingame if any dependeny is missing!
If dependencies are 'soft' (txt manifest tag ## OptionalDependsOn:) the addon/library will be loaded ingame if any dependeny is missing, but the content depending on the missing dependencies cannot be used then!
The dependencies (OptionalDependsOn / DependsOn) of an addon show which libraries are needed in order to let an addon work properly.
As there is no automatism to install dependencies yet one currently needs to check the addon's description at the download page, or expand the addon ingame in the addon manager and read which extra lines (dependencies) are shown -> Install those afterwards.In the next versions of Minion (>= version 4) e.g. the dependencies will be read from the addon's txt manifest file and the manager will try to download and install those automatically.
Standalone installation
Your library got it's own manifest txt file?
The optimal way to achieve an easy update and error tracking functionality would be to install the libraris as standalone version, just like a normal addon is installed.
Therefor you download the library's zip archive, containing the library lua/xml files + the libray's manifest txt file, and extract it to the AddOns folder.
The optimal way to achieve an easy update and error tracking functionality would be to install the libraris as standalone version, just like a normal addon is installed.
Therefor you download the library's zip archive, containing the library lua/xml files + the libray's manifest txt file, and extract it to the AddOns folder.
The folder of the library MUST contain it's own manifest txt file then, using the ## AddOnVersion: tag (or LibStub as long as it is available)! This is needed to assure that the library get's loaded only with the highest version number and all dependencies are found properly).
Your library got no own manifest txt file?
See below at 'Shipped with your addon (maybe causing problems)'.
See below at 'Shipped with your addon (maybe causing problems)'.
Shipped with your addon (properly included)
Your library got it's own manifest txt file?
You could also put the library's folder completely into your addon's zip archive, as it's own folder but ONLY inside your addon's folder!
IMPORTANT:
Do NOT incldue it at the same folder depth as your addon's folder (root)!
It will overwrite the libraries which were installed as standalone and if you do not update your addon's zip file directly after any library was updated, installing your addon might destroy other addons!
Reason: Installing your zip file will overwrite the libraries in the /live/AddOns folder then. If your addon's zip file contains the version 2.1 of a library and it will overwrite a version 3.0 of the same library, it might break other addons which rely on version 3.0.
Even addon updaters like Minion do not check this and think they only updated your particular addon AND NO other addons/libraries. So the version of the also updated libraries will be the same internally for Minion, like before the update. If it's not updating the library afterwards because there was a newer version pending, it will stay 'updated' for Minion where it is 'outdated' ingame!
You could also put the library's folder completely into your addon's zip archive, as it's own folder but ONLY inside your addon's folder!
IMPORTANT:
Do NOT incldue it at the same folder depth as your addon's folder (root)!
It will overwrite the libraries which were installed as standalone and if you do not update your addon's zip file directly after any library was updated, installing your addon might destroy other addons!
Reason: Installing your zip file will overwrite the libraries in the /live/AddOns folder then. If your addon's zip file contains the version 2.1 of a library and it will overwrite a version 3.0 of the same library, it might break other addons which rely on version 3.0.
Even addon updaters like Minion do not check this and think they only updated your particular addon AND NO other addons/libraries. So the version of the also updated libraries will be the same internally for Minion, like before the update. If it's not updating the library afterwards because there was a newer version pending, it will stay 'updated' for Minion where it is 'outdated' ingame!
Example zip archive (correct):
Example zip archive (wrong):
The folder of the library MUST contain it's own manifest txt file then, using the ## AddOnVersion: tag (or LibStub as long as it is available)! This is needed to assure that the library get's loaded only with the highest version number and all dependencies are found properly).
Your library got no own manifest txt file?
See below at 'Shipped with your addon (maybe causing problems)'.
Shipped with your addon (loaded via your addon's txt manifest file -> maybe causing problems)
![Eso Eso](https://i.ytimg.com/vi/FZh947Ns_ak/maxresdefault.jpg)
Your library got it's own manifest txt file?
Please change it to either 'Standalone installation' (see above)
or 'Shipped with your addon (properly included)' (see also above)
Please change it to either 'Standalone installation' (see above)
or 'Shipped with your addon (properly included)' (see also above)
Your library got no own manifest txt file?
Think about adding one so it will be available properly as standalone library!
Think about adding one so it will be available properly as standalone library!
If you do not want or need this, you can include your library in all addon's manifest txt file like this:
-Add the library's folder(s) + subfolder(s) + file(s) to your addon's manifest txt file like this:
-Add the library's folder(s) + subfolder(s) + file(s) to your addon's manifest txt file like this:
-No ## DependsOn: or ## OptionalDependsOn: in your addons is needed as the library's files will be included from your addon's txt file
IF you would add and ## (Optional)DependsOn: it it would maybe break your addon as it will try to load the library via a txt manifest file from the AddOns folder ('Standalone installation')
or another AddOn'ss subfolder ('Shipped with your addon (properly included))', and thus overwrite your directly included variables of the library (which maybe got a newer version than the Standalone installed one)!
IF you would add and ## (Optional)DependsOn: it it would maybe break your addon as it will try to load the library via a txt manifest file from the AddOns folder ('Standalone installation')
or another AddOn'ss subfolder ('Shipped with your addon (properly included))', and thus overwrite your directly included variables of the library (which maybe got a newer version than the Standalone installed one)!
Including libraries this way should only be used if the library is intended to be used only for this particular addon, and not also other addons.
Retrieved from 'https://wiki.esoui.com/Libraries'