AddOns are generally self-contained User Interface (UI) modification components. However, some AddOns can be dependent on other AddOns to work, and some AddOns are actually collections of other AddOns. There is no size restriction on AddOns, some can grow to be quite massive.
In plain English, an AddOn is just some files you can put in your game folder that can (theoretically) improve your interaction with the World of Warcraft game (i.e. make it easier to play, or give you more information about what's going on in the game).
Often the name modification (or "mod" for short) is used interchangeably with AddOn. More specifically, a mod is a third-party AddOn that alters or enhances some aspect of World of Warcraft's interface. Mods can perform a wide variety of tasks, including adding new buttons to the screen, altering the built-in player and party frames. In extreme cases, mods completely supplant the standard WoW interface, usually offering more advanced functionality.
Blizzard's AddOn policy
- AddOns must be free of charge.
- AddOn code must be completely visible.
- AddOns must not negatively impact World of Warcraft realms or other players.
- AddOns may not include advertisements.
- AddOns may not solicit donations.
- AddOns must not contain offensive or objectionable material.
- AddOns must abide by World of Warcraft ToU and EULA.
- Blizzard Entertainment has the right to disable AddOn functionality as it sees fit.
It isn't exactly clear how Blizzard plans to enforce this policy, but developers should follow the policy or risk some sort of exclusion of their AddOns from the game. The following sentence ends the introductory paragraph of the policy: "failure to abide by them may result in measures up to and including taking formal legal action."
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: 50300 ## 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.
- 50300 is the current interface number.
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 Blizzard UI in some way. To diagnose this, enter the following into chat "/console taintLog 1" and restart the game and try to reproduce it. 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"
- Installing an addon - in-depth guide to manually installing addons
- 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