HandyNotes
Handy Notes for your maps. This addon is intended to be a small and simple replacement for Cartographer_Notes and functions in a similar manner.
Use /handynotes to access options.
You can add notes to the maps in 3 ways:
- Alt-RightClick on the world map to add a note.
- Use "/hnnew" without the quotes to add a note at your current location.
- Use "/hnnew x,y" without the quotes to add a note at location x,y on your current zone's map.
HandyNotes supports plugins that other authors can write to display their own set of notes on the map. See this link for a list of such addons: https://www.wowace.com/search?search=handynotes
Changes for WoW 8.0 / Battle for Azeroth
- Changed to HereBeDragons-2.0, since HBD-1.0 is not compatible with WoW 8.0 / BfA
- All plugins that reference HereBeDragons directly need to adjust as well
- Due to the massive changes in the map and all related logic, HandyNotes 1.5.0 will introduce changes to the Plugin API as well. Changes listed below are preliminary, however they are available in the latest Alpha builds if running on the BfA Beta.
- Removed API: HN:GetMapFile(C, Z), HN:GetCZ(mapFile), HN:GetZoneToCZ(zone), HN:GetCZToZone(C,Z)
- Rationale: C/Z values no longer exist in WoW 8.0
- Removed API: HN:GetZoneToMapID(zone)
- Rationale: Using localized zone names is generally a bad idea, and the old MapIDs no longer exist
- Deprecated API: HN:GetMapFiletoMapID(mapFile), HN:GetMapIDtoMapFile(mapID),
- These have been deprecated and will be removed in the future, but are still provided for compatiblity with existing plugins (data is no longer available in-game, mapping provided by HereBeDragons-Migrate)
- Changed API: HN:GetContinentZoneList(uiMapIdOrmapFile)
- This API can now be called with either a mapFile (legacy mode), in which case it'll continue to return a list of legacy mapIDs for old plugins, or called with a new uiMapID, in which case it'll return a list of uiMapIDs
- New API: plugin:GetNodes2(uiMapID, minimap)
- This is equivalent to the old GetNodes call, except that it handles the new uiMapID type.
- The Iterator should return:
- coord, uiMapID, iconpath, scale, alpha
- Mapfile was replaced by uiMapID, level has been dropped
- The old plugin:GetNodes API is still available and the data is automatically converted, if a conversion is possible. It is strongly recommended to switch to GetNodes2, so you can support new zones!
- Removed API: HN:GetMapFile(C, Z), HN:GetCZ(mapFile), HN:GetZoneToCZ(zone), HN:GetCZToZone(C,Z)
Changes from v1.2.0 to v1.4.0
- HandyNotes now uses HereBeDragons-1.0 instead of the unmaintained Astrolabe
- Plugins which referenced Astrolabe directly should be updated, and ideally not require anything the HandyNotes API does not provide
- New HandyNotes API function: HN:GetContinentZoneList(mapFile), retrieve a list of zones inside a continent (Z -> mapID hash table)
In reply to Justice_Ronin:
Any eta about new update ???
Update for Wotlk 3.4.1 pls : ))
Is there a reason by default addon is set to character-specific profile?
Ive been using it for many years and have never had any reason whatsoever to use character specific profile.
It is aggrivating because if i change the scale of map icons for one character, i lose that setting on another.
That means every time i set up my UI (i reset / move PC's often) i have to re-setup profile on EVERY single character!
Can you PLEASE set "default" profile as default, or alternative add a toggle that will get rid of profile settings and just make everything global.
Please consider this.. been bugging me for years.
Hello,
Is there a way to unconfigure the Alt-click behavior of handy notes? It is overriding the Alt-click of TomTom which I use more and I would like to prioritize the Tomtom one one move HandyNotes to e.g. Shift+Alt click.
In reply to wazikatoturo:
I came here to ask this! I can't configure it anywhere and I really need that TomTom Alt-click! I don't know when this changed but it's been really annoying throughout DF when I just want to Alt-click someplace on the map and go.
what features are in and not in this add-on related to World Quest Tracker? I am confused, sry and thanks
Wrath of the Lich King
No regional level.
lt is inconvenient to press the up, down, left and right buttons.
Issues between Handynotes and AdiBags?
16x HandyNotes_Dragonflight/core/nodes.lua:226: bad argument #1 to 'ipairs' (table expected, got function)
[string "=[C]"]: in function `ipairs'
[string "@HandyNotes_Dragonflight/core/nodes.lua"]:226: in function `Prepare'
[string "@HandyNotes_Dragonflight/core/map.lua"]:161: in function `Prepare'
[string "@HandyNotes_Dragonflight/core/core.lua"]:213: in function <HandyNotes_Dragonflight/core/core.lua:202>
[string "=(tail call)"]: ?
[string "@HandyNotes/HandyNotes.lua"]:443: in function `UpdateMinimapPlugin'
[string "@HandyNotes/HandyNotes.lua"]:502: in function `?'
[string "@AdiBags/libs/CallbackHandler-1.0-7/CallbackHandler-1.0.lua"]:119: in function <...ags/libs/CallbackHandler-1.0/CallbackHandler-1.0.lua:119>
[string "=[C]"]: ?
[string "@AdiBags/libs/CallbackHandler-1.0-7/CallbackHandler-1.0.lua"]:29: in function <...ags/libs/CallbackHandler-1.0/CallbackHandler-1.0.lua:25>
[string "@AdiBags/libs/CallbackHandler-1.0-7/CallbackHandler-1.0.lua"]:64: in function `SendMessage'
[string "@HandyNotes_Dragonflight/core/core.lua"]:261: in function `RefreshImmediate'
[string "@HandyNotes_Dragonflight/core/core.lua"]:256: in function <HandyNotes_Dragonflight/core/core.lua:254>
Is there some script command we could type if we wanted to add a note outside the zone we are in? Easy enough to get the needed map id via
/run print(WorldMapFrame:GetMapID())
but I can't figure how to call a handynotes function to set a note on that map.
Why would I want to do that? Adding notes for things like Rostrum of Transformation for each zone in Dragon Isles, without having to spend a half hour actually flying to all those places, as an example.
Pretty sure used to be able to do that prior to Bliz changing how maps got called a few years ago, by just prefacing coords with a map name.
Have been having a error pop up every time I log in or reload ui ever since the prepatch for Dragonflight.
Date: 2022-12-02 20:13:45
ID: 1
Error occured in: Global
Count: 1
Message: ...dOns/HandyNotes_DataBroker/HandyNotes_DataBroker.lua line 16:
Cannot find a library instance of "LibDBIcon-1.0".
Debug:
[string "=[C]"]: error()
[string "@Interface/AddOns/!Swatter/Support/LibStub.lua"]:23: LibStub()
[string "@Interface/AddOns/HandyNotes_DataBroker/HandyNotes_DataBroker.lua"]:16: in main chunk
Locals:
(*temporary) = "Cannot find a library instance of "LibDBIcon-1.0"."
AddOns:
Swatter, v<%version%> (<%codename%>)
AddonFactory, v10.0.008
AllTheThings, vDF-3.1.1
AlreadyKnown, v1.50
Altoholic, v10.0.008
Auctionator, v10.0.16
CandyBuckets, v10.0.0.221030
DataStore, v2022.11.16
DataStoreAchievements, v2022.11.16
DataStoreAgenda, v10.0.005
DataStoreAuctions, v10.0.008
DataStoreCharacters, v2022.11.27
DataStoreContainers, v10.0.007
DataStoreCrafts, v10.0.005
DataStoreCurrencies, v10.0.005
DataStoreGarrisons, v10.0.008
DataStoreInventory, v10.0.008
DataStoreMails, v2022.11.27
DataStorePets, v10.0.005
DataStoreQuests, v10.0.008
DataStoreReputations, v10.0.005
DataStoreSpells, v2022.11.16
DataStoreStats, v10.0.005
DataStoreTalents, v10.0.005
GatherMate2, v1.48.2
GTFO, v4.69.3
HandyNotes, vv1.6.13
HandyNotesAchievements, v0.6.1
HandyNotesAdorableRaptorHatchlings, v1.12
HandyNotesArgus, vv0.38
HandyNotesBattleForAzeroth, v11
HandyNotesBattleForAzerothTreasures, vv29
HandyNotesBrokenShore, vv1.51
HandyNotesCollection, v
HandyNotesCovenantSanctum, vv17
HandyNotesDailyQuestSpots, v1.0.0
HandyNotesDarkSoilTillers, v1.19
HandyNotesDataBroker, v1.1.1
TomTom, v3.3.5-release
BlizRuntimeLib_enUS v10.0.2.100002 <none>
(ck=4c6)
Hi,
I have an issue (looks similar) between HandyNotes & NPCTime, as well as HandyNotes & Mount Tooltip.
Both LUA errors popped up when opening the map and mousing over something.
Have reported the LUA to the respective addon pages as well.
*****************************************************************************************************************
*****************************************************************************************************************
6x MountTooltip/MountTooltip.lua:79: attempt to call method 'GetUnit' (a nil value)
[string "@MountTooltip/MountTooltip.lua"]:79: in function <MountTooltip/MountTooltip.lua:78>
[string "=(tail call)"]: ?
[string "=[C]"]: in function `securecallfunction'
[string "@SharedXML/Tooltip/TooltipDataHandler.lua"]:60: in function <SharedXML/Tooltip/TooltipDataHandler.lua:55>
[string "@SharedXML/Tooltip/TooltipDataHandler.lua"]:80: in function <SharedXML/Tooltip/TooltipDataHandler.lua:76>
[string "@SharedXML/Tooltip/TooltipDataHandler.lua"]:116: in function <SharedXML/Tooltip/TooltipDataHandler.lua:106>
[string "=[C]"]: in function `SetAttribute'
[string "@SharedXML/Tooltip/TooltipDataHandler.lua"]:141: in function <SharedXML/Tooltip/TooltipDataHandler.lua:134>
[string "@SharedXML/Tooltip/TooltipDataHandler.lua"]:282: in function <SharedXML/Tooltip/TooltipDataHandler.lua:240>
[string "=[C]"]: in function `securecallfunction'
[string "@SharedXML/Tooltip/TooltipDataHandler.lua"]:237: in function <SharedXML/Tooltip/TooltipDataHandler.lua:236>
[string "=(tail call)"]: ?
[string "@HandyNotes_DragonflightTreasures/handler/handler.lua"]:931: in function <...HandyNotes_DragonflightTreasures/handler/handler.lua:766>
[string "=(tail call)"]: ?
[string "@HandyNotes_DragonflightTreasures/handler/handler.lua"]:1004: in function <...HandyNotes_DragonflightTreasures/handler/handler.lua:980>
[string "=[C]"]: ?
[string "@HandyNotes/HandyNotes.lua"]:56: in function <HandyNotes/HandyNotes.lua:51>
[string "@HandyNotes/HandyNotes.lua"]:166: in function `OnEnter'
[string "@HandyNotes/HandyNotes.lua"]:399: in function <HandyNotes/HandyNotes.lua:398>
Locals:
self = HandyNotes_DragonflightTreasuresComparisonTooltip {
0 = <userdata>
SetQuestLogRewardSpell = <function> defined @SharedXML/Tooltip/TooltipDataHandler.lua:444
SetQuestPartyProgress = <function> defined @SharedXML/Tooltip/TooltipDataHandler.lua:444
ProcessLineData = <function> defined @SharedXML/Tooltip/TooltipDataHandler.lua:303
SetPvpTalent = <function> defined @SharedXML/Tooltip/TooltipDataHandler.lua:444
SetExistingSocketGem = <function> defined @SharedXML/Tooltip/TooltipDataHandler.lua:444
SetHyperlink = <function> defined @SharedXML/Tooltip/TooltipDataHandler.lua:444
SetUnit = <function> defined @SharedXML/Tooltip/TooltipDataHandler.lua:444
SetAzeriteEssence = <function> defined @SharedXML/Tooltip/TooltipDataHandler.lua:444
SetVoidDepositItem = <function> defined @SharedXML/Tooltip/TooltipDataHandler.lua:444
SetVoidWithdrawalItem = <function> defined @SharedXML/Tooltip/TooltipDataHandler.lua:444
SetInfoBackdropStyle = <function> defined @SharedXML/Tooltip/TooltipDataHandler.lua:338
SetSocketGem = <function> defined @SharedXML/Tooltip/TooltipDataHandler.lua:444
SetLootCurrency = <function> defined @SharedXML/Tooltip/TooltipDataHandler.lua:444
SetSlottedKeystone = <function> defined @SharedXML/Tooltip/TooltipDataHandler.lua:444
SetItemInteractionItem = <function> defined @SharedXML/Tooltip/TooltipDataHandler.lua:444
SetLootItem = <function> defined @SharedXML/Tooltip/TooltipDataHandler.lua:444
SetOwnedItemByID = <function> defined @SharedXML/Tooltip/TooltipDataHandler.lua:444
SetQuestLogSpecialItem = <function> defined @SharedXML/Tooltip/TooltipDataHandler.lua:444
SetRecipeReagentItem = <function> defined @SharedXML/Tooltip/TooltipDataHandler.lua:444
SetBuybackItem = <function> defined @SharedXML/Tooltip/TooltipDataHandler.lua:444
SetWeeklyReward = <function> defined @SharedXML/Tooltip/TooltipDataHandler.lua:444
SetMerchantItem = <function> defined @SharedXML/Tooltip/TooltipDataHandler.lua:444
SetPvpBrawl = <function> defined @SharedXML/Tooltip/TooltipDataHandler.lua:444
BottomOverlay = Texture {
}
SetSpellByID = <function> defined @SharedXML/Tooltip/TooltipDataHandler.lua:444
SetSocketedRelic = <function> defined @SharedXML/Tooltip/TooltipDataHandler.lua:444
ProcessInfo = <function> defined @SharedXML/Tooltip/TooltipDataHandler.lua:236
ProcessLines = <function> defined @SharedXML/Tooltip/TooltipDataHandler.lua:293
NineSlice = Frame {
}
SetInventoryItem = <function> defined @SharedXML/Tooltip/TooltipDataHandler.lua:444
info = <table> {
}
updateTooltipTimer = 0.200000
SetLootRollItem = <function> defined @SharedXML/Tooltip/TooltipDataHandler.lua:444
InternalProcessInfo = <function> defined @SharedXML/Tooltip/TooltipDataHandler.lua:240
SetPossession = <function> defined @SharedXML/Tooltip/TooltipDataHandler.lua:444
SetUnitDebuffByAuraInstanceID = <function> defined @SharedXML/Tooltip/TooltipDataHandler.lua:444
SetBagItem = <function> defined @SharedXML/Tooltip/TooltipDataHandler.lua:444
TextRight1 = HandyNotes_DragonflightTreasuresComparisonTooltipTextRight1 {
}
SetAction = <function> defined @SharedXML/Tooltip/TooltipDataHandler.lua:444
SetLineDataAttribute = <function> defined @SharedXML/Tooltip/TooltipDataHandler.lua:232
SetAchievementByID = <function> defined @SharedXML/Tooltip/TooltipDataHandler.lua:444
SetInventoryItemByID = <function> defined @SharedXML/Tooltip/TooltipDataHandler.lua:444
SetQuestCurrency = <function> defined @SharedXML/Tooltip/TooltipDataHandler.lua:444
SetCurrencyByID = <function> defined @SharedXML/Tooltip/TooltipDataHandler.lua:444
SetQuestLogCurrency = <function> defined @SharedXML/Tooltip/TooltipDataHandler.lua:444
SetBagItemChild = <function>
*****************************************************************************************************************
*****************************************************************************************************************
29x NPCTime/NPCTime.lua:24: attempt to call method 'GetUnit' (a nil value)
[string "@NPCTime/NPCTime.lua"]:24: in function `ShowTime'
[string "@NPCTime/NPCTime.lua"]:60: in function <NPCTime/NPCTime.lua:59>
[string "=(tail call)"]: ?
[string "=[C]"]: in function `securecallfunction'
[string "@SharedXML/Tooltip/TooltipDataHandler.lua"]:60: in function <SharedXML/Tooltip/TooltipDataHandler.lua:55>
[string "@SharedXML/Tooltip/TooltipDataHandler.lua"]:80: in function <SharedXML/Tooltip/TooltipDataHandler.lua:76>
[string "@SharedXML/Tooltip/TooltipDataHandler.lua"]:116: in function <SharedXML/Tooltip/TooltipDataHandler.lua:106>
[string "=[C]"]: in function `SetAttribute'
[string "@SharedXML/Tooltip/TooltipDataHandler.lua"]:141: in function <SharedXML/Tooltip/TooltipDataHandler.lua:134>
[string "@SharedXML/Tooltip/TooltipDataHandler.lua"]:282: in function <SharedXML/Tooltip/TooltipDataHandler.lua:240>
[string "=[C]"]: in function `securecallfunction'
[string "@SharedXML/Tooltip/TooltipDataHandler.lua"]:237: in function <SharedXML/Tooltip/TooltipDataHandler.lua:236>
[string "=(tail call)"]: ?
[string "@HandyNotes_DragonflightTreasures/handler/handler.lua"]:931: in function <...HandyNotes_DragonflightTreasures/handler/handler.lua:766>
[string "=(tail call)"]: ?
[string "@HandyNotes_DragonflightTreasures/handler/handler.lua"]:1004: in function <...HandyNotes_DragonflightTreasures/handler/handler.lua:980>
[string "=[C]"]: ?
[string "@HandyNotes/HandyNotes.lua"]:56: in function <HandyNotes/HandyNotes.lua:51>
[string "@HandyNotes/HandyNotes.lua"]:166: in function `OnEnter'
[string "@HandyNotes/HandyNotes.lua"]:399: in function <HandyNotes/HandyNotes.lua:398>
Locals:
self = Frame {
0 = <userdata>
Help = <function> defined @NPCTime/NPCTime.lua:76
OnLoad = <function> defined @NPCTime/NPCTime.lua:56
ShowTime = <function> defined @NPCTime/NPCTime.lua:22
OnEvent = <function> defined @NPCTime/NPCTime.lua:15
}
self = HandyNotes_DragonflightTreasuresComparisonTooltip {
0 = <userdata>
SetQuestLogRewardSpell = <function> defined @SharedXML/Tooltip/TooltipDataHandler.lua:444
SetQuestPartyProgress = <function> defined @SharedXML/Tooltip/TooltipDataHandler.lua:444
ProcessLineData = <function> defined @SharedXML/Tooltip/TooltipDataHandler.lua:303
SetPvpTalent = <function> defined @SharedXML/Tooltip/TooltipDataHandler.lua:444
SetExistingSocketGem = <function> defined @SharedXML/Tooltip/TooltipDataHandler.lua:444
SetHyperlink = <function> defined @SharedXML/Tooltip/TooltipDataHandler.lua:444
SetUnit = <function> defined @SharedXML/Tooltip/TooltipDataHandler.lua:444
SetAzeriteEssence = <function> defined @SharedXML/Tooltip/TooltipDataHandler.lua:444
SetVoidDepositItem = <function> defined @SharedXML/Tooltip/TooltipDataHandler.lua:444
SetVoidWithdrawalItem = <function> defined @SharedXML/Tooltip/TooltipDataHandler.lua:444
SetInfoBackdropStyle = <function> defined @SharedXML/Tooltip/TooltipDataHandler.lua:338
SetSocketGem = <function> defined @SharedXML/Tooltip/TooltipDataHandler.lua:444
SetLootCurrency = <function> defined @SharedXML/Tooltip/TooltipDataHandler.lua:444
SetSlottedKeystone = <function> defined @SharedXML/Tooltip/TooltipDataHandler.lua:444
SetItemInteractionItem = <function> defined @SharedXML/Tooltip/TooltipDataHandler.lua:444
SetLootItem = <function> defined @SharedXML/Tooltip/TooltipDataHandler.lua:444
SetOwnedItemByID = <function> defined @SharedXML/Tooltip/TooltipDataHandler.lua:444
SetQuestLogSpecialItem = <function> defined @SharedXML/Tooltip/TooltipDataHandler.lua:444
SetRecipeReagentItem = <function> defined @SharedXML/Tooltip/TooltipDataHandler.lua:444
SetBuybackItem = <function> defined @SharedXML/Tooltip/TooltipDataHandler.lua:444
SetWeeklyReward = <function> defined @SharedXML/Tooltip/TooltipDataHandler.lua:444
SetMerchantItem = <function> defined @SharedXML/Tooltip/TooltipDataHandler.lua:444
SetPvpBrawl = <function> defined @SharedXML/Tooltip/TooltipDataHandler.lua:444
BottomOverlay = Texture {
}
SetSpellByID = <function> defined @SharedXML/Tooltip/TooltipDataHandler.lua:444
InternalProcessInfo = <function> defined @SharedXML/Tooltip/TooltipDataHandler.lua:240
SetSocketedRelic = <function> defined @SharedXML/Tooltip/TooltipDataHandler.lua:444
ProcessInfo = <function> defined @SharedXML/Tooltip/TooltipDataHandler.lua:236
ProcessLines = <function> defined @SharedXML/Tooltip/TooltipDataHandler.lua:293
NineSlice = Frame {
}
SetInventoryItem = <function> defined @SharedXML/Tooltip/TooltipDataHandler.lua:444
info = <table> {
}
updateTooltipTimer = 0.200000
SetLootRollItem = <function> defined @SharedXML/Tooltip/TooltipDataHandler.lua:444
SetPossession = <function> defined @SharedXML/Tooltip/TooltipDataHandler.lua:444
SetUnitDebuffByAuraInstanceID = <function> defined @SharedXML/Tooltip/TooltipDataHandler.lua:444
SetBagItem = <function> defined @SharedXML/Tooltip/TooltipDataHandler.lua:444
TextRight1 = HandyNotes_DragonflightTreasuresComparisonTooltipTextRight1 {
}
SetAction = <function> defined @SharedXML/Tooltip/TooltipDataHandler.lua:444
SetLineDataAttribute = <function> defined @SharedXML/Tooltip/TooltipDataHandler.lua:232
SetAchievementByID = <function> defined @SharedXML/Tooltip/TooltipDataHandler.lua:444
SetInventoryItemByID = <function> defined @SharedXML/Tooltip/TooltipDataHandler.lua:444
S
*****************************************************************************************************************
*****************************************************************************************************************
Replacing "if WoWRetail then" with "if true then" makes the first condition block always execute. I commented out f:Show() and added a line for f:Hide() so it never changes state and never shows the note input dialog. This works for me in-game. Thank you to brunokbcao for identifying which file/line the offending keybind is located at!
If you really don't use the "add a note" feature using alt + click and once that is conflicting with TomTom, you can safely disable it by editing the file Interface\Addons\HandyNotes\HandyNotes_HandyNotes.lua at line 472, replacing
by
That will disable the whole block, at least until the author provides a way to configure the shortcuts. You can still add a note with /hnnew x, y after this edit.
In reply to brunokbcao:
Warning: this will cause the else block (WorldMapFrame:AddCanvasClickHandler) to execute instead. I did something similar, instead replacing the line with
In reply to durandal42:
Great! Thanks for the heads up, I will edit the original post
For the love of god please listen to the previous comments and change/remove the alt+rightclick keybind, or at the very least give us the option to change it. I like HandyNotes, but not being able to make TomTom waypoints is unbearable.
I had to stop using Handynote because it is now impossible for me to use it in correlation with Tomtom, all the left or right clicks except one being apparently monopolized by the "addons" internal to Blizzard. Or maybe I missed a configuration option...
In reply to Zlandicae:
to make a note on the map, just input /hnnew that will put one where you are, if you want one in a specific location, just do this /hnnew x, y
In reply to Yugawar:
That's not the point. TomTom already has a simple command that sets coordinates with a waypoint, we don't need to use an even more complex script in HandyNotes. In TomTom, Alt-Left Click is used to quickly create a waypoint using a specific location on the map without knowing the coordinates of the location. TomTom used to use Control-Left Click, but Blizzard decided to use that command for their crappy built-in coordinate/waypoint system, thereby forcing TomTom to use another command.
In reply to Yugawar:
That's not the point. TomTom already has a simple command that sets coordinates with a waypoint, we don't need to use an even more complex script in HandyNotes. In TomTom, Alt-Left Click is used to quickly create a waypoint using a specific location on the map without knowing the coordinates of the location. TomTom used to use Control-Left Click, but Blizzard decided to use that command for their crappy built-in coordinate/waypoint system, thereby forcing TomTom to use another command.