HandyNotes Plugin Documentation

Documentation for the core framework used in Zarillion's HandyNotes expansion plugins.

View the Project on GitHub zarillion/handynotes-plugins

HandyNotes Plugins Framework

A comprehensive framework for creating World of Warcraft addon plugins that add interactive markers to in-game maps.

What is HandyNotes Plugins?

HandyNotes Plugins is a powerful framework that extends the popular HandyNotes addon, enabling developers to create rich, interactive map experiences for World of Warcraft players. The framework provides everything needed to add treasures, rare spawns, NPCs, profession nodes, and other points of interest to the game’s maps.

Why Use This Framework?

Core Framework Overview

The HandyNotes plugins framework provides a comprehensive set of classes and utilities for creating interactive map nodes, managing requirements and rewards, and organizing content through groups and filters.

Key Components

Installation & Setup

For End Users

  1. Install HandyNotes from CurseForge
  2. Download desired expansion plugins:
  3. Extract to your World of Warcraft/_retail_/Interface/AddOns/ folder
  4. Enable in the AddOns menu and configure via the map dropdown

For Developers

  1. Clone the repository: git clone https://github.com/zarillion/handynotes-plugins
  2. Study the Quick Reference Guide for development patterns
  3. Use existing plugins as templates for new expansions or content types
  4. Follow the contribution guidelines for submitting improvements

Available Plugins

The framework supports plugins for all major WoW expansions:

Expansion Plugin Content
The War Within 11_TheWarWithin Khaz Algar zones, Delves, Siren Isle
Dragonflight 10_Dragonflight Dragon Isles, Forbidden Reach, Zaralek Cavern
Shadowlands 09_Shadowlands Covenant zones, The Maw, Zereth Mortis
Battle for Azeroth 08_BattleForAzeroth Kul Tiras, Zandalar, Mechagon, Nazjatar
Legion 07_Legion Broken Isles, Argus
Warlords of Draenor 06_WarlordsOfDraenor Draenor zones
Mists of Pandaria 05_MistsOfPandaria Pandaria zones
Cataclysm 04_Cataclysm Revamped zones, new zones
Wrath of the Lich King 03_WrathOfTheLichKing Northrend zones
The Burning Crusade 02_TheBurningCrusade Outland zones
World of Warcraft 01_WorldOfWarcraft Classic Azeroth zones

Features

Node Types

Smart Features

Getting Started

The framework uses a class-based architecture built on Lua. Each plugin typically defines:

  1. Map data - Zone information and node collections
  2. Node definitions - Individual markers with their properties
  3. Group organization - How nodes are categorized and controlled
  4. Localization - Multi-language support for text content

Architecture

The core framework is built around several key concepts:

Quick Start

For a comprehensive overview with examples and best practices, see the Documentation README.

Basic Plugin Structure

-- Create a new map
local map = ns.Map({id = 123, settings = true})

-- Define groups for organization
map.groups.TREASURES = ns.Group('treasures', 'chest_yw')
map.groups.RARES = ns.Group('rares', 'skull_w')

-- Add treasure node
map.nodes[12345678] = ns.node.Treasure({
    label = 'Hidden Treasure',
    icon = 'chest_yw',
    group = map.groups.TREASURES,
    quest = 54321,
    rewards = {ns.reward.Item(187423)}
})

-- Add rare mob node
map.nodes[87654321] = ns.node.Rare({
    label = 'Elite Guardian',
    icon = 'skull_w',
    group = map.groups.RARES,
    requires = ns.requirement.Quest(12345),
    pois = {
        ns.poi.Path({12345678, 23456789, 34567890})
    }
})

Contributing

We welcome contributions from the community! Here’s how you can help:

Ways to Contribute

Development Guidelines

  1. Follow existing code patterns and naming conventions
  2. Test your changes across multiple characters and zones
  3. Update documentation for any API changes
  4. Include localization keys for user-visible text
  5. Ensure compatibility with the latest WoW client

Support & Community

Getting Help

License & Credits

Developer Resources


Ready to start? Check out the Quick Reference Guide for development patterns and examples, or dive into the Core Framework Documentation for detailed API information.