Creating an AddOn
First of all, you need to create a new directory in Interface\AddOns. The name of this directory is kind of important, as it is what other AddOns use to refer to your AddOn (in dependencies). Therefore, using version numbers in your AddOn directory name can be a bad idea; you will run the risk of having other AddOns "break" when you change the version. This will probably lead to people either not depending on your AddOn or, worse, that they'll keep using an old version.
Major version numbers as part of AddOn directory names might work, though.
Look at Getting started with writing addons to get a better idea of the structure of an addon.
.toc is short for "table of contents".
A functioning AddOn will need a file named
<YourAddOnDirectoryName>.toc in "
This file needs to have two things - an interface keyword with a correct interface number, and the name(s) of one or more files to load. However, Blizzard asks that you include at least these five client recognized tag lines:
## Interface: 40000 ## Title: My Add On ## Version: 1.0.0 ## Notes: A short description of my AddOn ## Author: Your name or memorable descriptor (e.g. LuckyLuke)
- Tip: Make sure you do not have any extra spaces at the end of the line with the filename specified. If you do, the extra space is taken as part of the filename and will cause your AddOn to silently fail to load.
- Tip: The .toc file is not reloaded when you reload the user interface; if you make changes to it, you will need to quit all the way to the desktop before they take effect.
To get the latest interface number, see Getting the current interface number. The number in the .toc file must match the current build or the add on will not be loaded/active, unless the user has explicitly told WoW to load out-of-date Addons. If the .toc file declares an interface number prior to 2.0.0 (i.e. pre-The Burning Crusade), the AddOn can not be loaded, regardless of the load out of date AddOns setting.
- 40300 is the current interface number as of March 9th, 2012
If you include a Bindings.xml file, it does not have to be included in your .toc list of files to load - WoW loads this file automatically. This file is used to set key bindings specific to the AddOn.
Other keywords in the toc file
Please check out The TOC Format for a more detailed list.
Troubleshooting an AddOn
As of Patch 2.3, if you get a message "Interface action failed because of an AddOn", this means that an AddOn interfered with the secure elements of the Blizzard UI in some way. To diagnose this, enter the following into chat "/console taintLog 1" to enable basic taint logging and restart the game before trying try to reproduce the taint error. If you reproduce it, you can quit the game and search through the file Logs\taint.log for the word "blocked" and mail the log to the author of the AddOn listed there. Once you have done this you can turn off logging by entering the following into chat "/console taintLog 0"
The command "/console taintLog 2" will produce significantly more detail in the taint.log than the basic logging level does. Generally, it is not recommended end users use this option unless asked to do so. If you do use the higher logging level, it is strongly recommended that all other addons other than the one causing the taint problem be disabled before you log in and reproduce the problem. The taint log can become large and difficult to interpret with multiple addons running. Narrow the search down to the offending addon using the basic logging level, disable all other addons and increase the logging level if further investigation is required.
As of Patch 5.2.0, you can also use the command "/console taintLog 11" on the public test realms (PTR). This option is not, and will not, be available on the production servers. Be prepared to drink from the fire hose when this option is enabled... it will log every taint event that occurs and can easily produce taint logs hundreds of megs long even before the world view is displayed. However, this logging level makes it possible for the addon author to investigate each and every taint event that occurs when trying to isolate obscure taint problems in their addons. It is highly recommended that a good regex tool be installed to search the output as the log will often be overwhelmingly large.
- UI Beginners Guide has plenty of reference links
- The TOC Format
- Bindings.xml for creating key bindings
- UI FAQ/AddOns
- UI FAQ/AddOn Author Resources
- Troubleshooting a mod
- β News