Join our Discord server to discuss features and translations: https://discord.gg/EXCcmYW
This repository hosts all of our HandyNotes plugins. Since they all share the same core code and features, it made sense to keep them in a single repository instead of individual ones. This means the repository cannot be cloned directly into your addons directory; the files won't be in the places WoW expects.
We recommend using WSL 2 to work on the project. It makes it much easier to install the Python and Lua language dependencies needed to install, lint and test the project. See this wiki page for more information
The install.py
script can be used to install your clone of this repository into your Interface/AddOns
directory. It will create symbolic links to directories and files in the source tree for each plugin. After installation, a /reload
is all that is needed after editing a file to see the changes reflected in game.
~/handynotes-plugins$ python install.py --help
usage: install.py [-h] [-c] [-u] Path\To\Interface\AddOns
Install all HandyNotes plugins defined in this project for development.
NOTE: Must be run as administrator on Windows to allow symlink creation.
positional arguments:
Path\To\Interface\AddOns
optional arguments:
-h, --help show this help message and exit
-c, --clean clean targets before install
-u, --uninstall uninstall and exit
The -c/--clean
argument will delete the corresponding HandyNotes plugin directories before installing the symlinks (useful if our file/folder structure changes). The -u/--uninstall
argument will remove the plugin directories and then exit.
Documentation for the core modules can be found on the HandyNotes Plugins Documentation site. These pages can help you understand how nodes are added to the maps and what capabilities each type of node and reward has.
Once installed, development-only options can be enabled in each individual plugin by running an in-game script command. For example, to enable the development features and options for HandyNotes: Dragonflight:
/script HandyNotes_DragonflightDB.profiles.Default.development = true
/reload
You should then see additional development options at the bottom of the Dragonflight plugin settings panel. The following development options are available:
Option | Description |
---|---|
Debug Map IDs | Print map IDs to the chat window when the World Map changes. |
Debug Quest IDs | Print quest IDs to the chat window as their completed state changes. Scans all quest IDs up to 100000 for changes every 1s. |
Force Nodes | Force displays all nodes, ignoring the quest and completion status of each node. |
When updating or creating nodes you often want to quickly force their display to make sure they are in the right place and render their tooltips correctly. Going into the settings UI and toggling the "Force Nodes" option on and off can get tedious, so a shortcut is available.
With the World Map open, hold LCTRL+LALT
to force display all nodes on the current map. This will also hide your character pin and any group member pins in case you are standing directly on the node you want to inspect.
The idTip addon is extremely useful when working on these plugins. It displays the corresponding IDs in the tooltip for items, spells, NPCs, achievement criteria, currencies and more.
In addition, the following macro is useful for getting your current map ID and coordinates in the format the plugin expects: XXXXYYYY
.
/script local m = C_Map.GetBestMapForUnit("player"); local p = C_Map.GetPlayerMapPosition(m, "player"); print(m..': '..format("%04d",floor(p.x*10000))..tostring(format("%04d",p.y*10000)))
Sometimes you /reload
before remembering to grab a quest ID out of the chat window. This can be frustrating and problematic if you do not have an easy way to reproduce what triggered the quest completion.
When "Debug Quest IDs" is enabled, all quest ID state changes are recorded between sessions. This can be accessed after a reload with:
/run HandyNotes_DragonflightQuestHistory()
20:59:37 :: 61588 :: true => false
20:59:37 :: 60774 :: true => false
20:57:15 :: 58327 :: false => true
19:29:16 :: 61618 :: false => true
19:23:52 :: 60826 :: false => true
18:59:45 :: 62189 :: false => true
18:59:12 :: 59889 :: false => true
18:56:52 :: 60480 :: false => true
18:52:11 :: 13807 :: false => true
16:48:38 :: 62189 :: false => true
By default the 10 most recent quest changes are displayed. The number of quests printed can be changed by passing the count
parameter, up to the maximum of 100 stored quest changes.
/run HandyNotes_DragonflightQuestHistory(5)
20:59:37 :: 61588 :: true => false
20:59:37 :: 60774 :: true => false
20:57:15 :: 58327 :: false => true
19:29:16 :: 61618 :: false => true
19:23:52 :: 60826 :: false => true