GatherMate2
GatherMate2 is an addon to collect and track herbs, mines, fishing pools, gas clouds, archaelogy finds and treasures, and displays them on the world map and the mini map.
This is the Retail version of GatherMate2, the version for WoW Classic can be found here
GatherMate will remember the location of every herb you pick or every ore you mine, so that you can easily find the positions of the herbs and mines again. Once you come into range of a recorded spot, GatherMate will show an icon representing the type of herb/ore/fish/etc. on your mini map, directly allowing you to decide if its worth checking out. Additionally, all spots are shown on the World Map, to ease navigation to certain types of nodes and making gathering more fun.
To give you a head start, GatherMate2 also offers a pre-filled data module, so you don't need to discover all herbs and mines yourself, but instead can just start gathering right away. Simply install GatherMate2_Data and hit a few buttons to import all the provided data, and you're good to go.
Features
- Tracking of all gathering professions and more!
- Herbs
- Mines
- Gas Clouds
- Archaeology Digs
- Fishing Pools
- Treasures
- Timber for Housing!
- Display of all collected data on the World Map and the MiniMap
- Support for Routes
- Import data via GatherMate2_Data
Video about configuring this addon.
Usage
Using GatherMate2 is straight-forward.
After the installation, GatherMate2 is automatically active and collecting data.
You can configure which data should be shown on the World Map or MiniMap in the Configuration Dialog, which can be accessed either via the /gathermate slash command or be found in the Interface options in the WoW Menu.
Localization (Translation of Nodes)
GatherMate2 relies on the node names to be translated in all languages WoW supports. You can contribute additional translations for your language here using the Localization tool:
https://www.wowace.com/projects/gathermate2/localization
Any translations submitted through that tool will be automatically included in the next release.
GatherMate2_Data
GatherMate2_Data has been updated with all fresh data from Wowhead, including support for The War Within (and Midnight in the future), and will be continously updated throughout the coming expansion.
If you are looking for a pre-filled database for GatherMate2, get GatherMate2_Data here:
https://www.curseforge.com/wow/addons/gathermate2_data
-
View User Profile
-
Send Message
Posted Feb 19, 2026Hi is it possible to change the filter sites so when you look on all the eg ore you can filter, you can chose to only see the ore for each dlc or at least give us a options to search after the ore type we will filter out, its hard to find what i will filtre because of word blindness
-
View User Profile
-
Send Message
Posted Feb 15, 2026Hi
There is a bug
2x GatherMate2_Data/GatherMateData.lua:201: bad argument #1 to 'pairs' (table expected, got nil)
[tail call]: ?
[C]: in function 'pairs'
[GatherMate2_Data/GatherMateData.lua]:201: in function 'MergeMines'
[GatherMate2_Data/GatherMateData.lua]:187: in function 'PerformMerge'
[GatherMate2/Config.lua]:1156: in function <GatherMate2/Config.lua:1147>
[C]: ?
[Ace3/AceConfig-3.0-3/AceConfigDialog-3.0-92/AceConfigDialog-3.0.lua]:45: in function <...nfig-3.0/AceConfigDialog-3.0/AceConfigDialog-3.0.lua:43>
[Ace3/AceConfig-3.0-3/AceConfigDialog-3.0-92/AceConfigDialog-3.0.lua]:839: in function <...nfig-3.0/AceConfigDialog-3.0/AceConfigDialog-3.0.lua:661>
[C]: ?
[Ace3/AceGUI-3.0-41/AceGUI-3.0.lua]:66: in function <Ace3/AceGUI-3.0/AceGUI-3.0.lua:64>
[Ace3/AceGUI-3.0-41/AceGUI-3.0.lua]:300: in function 'Fire'
[Ace3/AceGUI-3.0-41/widgets/AceGUIWidget-Button.lua]:22: in function <...dOns/Ace3/AceGUI-3.0/widgets/AceGUIWidget-Button.lua:19>
Locals:
(*temporary) = "LeftButton"
(*temporary) = false
-
View User Profile
-
Send Message
Posted Feb 15, 2026Message: Interface/AddOns/GatherMate2/GatherMate2.lua:527: table index is secret
Time: Sun Feb 15 12:18:34 2026
Count: 1
Stack:
[Interface/AddOns/GatherMate2/GatherMate2.lua]:527: in function 'GetIDForNode'
[Interface/AddOns/GatherMate2/Collector.lua]:291: in function 'GetWorldTarget'
[Interface/AddOns/GatherMate2/Collector.lua]:173: in function 'SpellStopped'
[Interface/AddOns/GatherMate2/Collector.lua]:77: in function <Interface/AddOns/GatherMate2/Collector.lua:77>
Locals:
self = <table> {
modules = <table> {
}
nodeTextures = <table> {
}
defaultModuleState = true
db_types = <table> {
}
nodeIDReplacementMap = <table> {
}
db = <table> {
}
HBD = <table> {
}
enabledState = true
reverseNodeIDs = <table> {
}
defaultModuleLibraries = <table> {
}
rareNodes = <table> {
}
name = "GatherMate2"
orderedModules = <table> {
}
gmdbs = <table> {
}
Visible = <table> {
}
baseName = "GatherMate2"
phasing = <table> {
}
nodeExpansion = <table> {
}
db_storage_map = <table> {
}
mapBlacklist = <table> {
}
nodeIDs = <table> {
}
}
type = "Treasure"
name = <no value>
(*temporary) = <table> {
Disturbed Earth = 566
Tattered Chest = 503
Large Darkwood Chest = 510
Wicker Chest = 526
Mechanized Chest = 560
Primitive Chest = 527
Jelly Deposit = 563
Glowing Tome = 557
Dented Footlocker = 517
Twice-Fortified Arcwine = 559
Gleaming Draenic Chest = 551
Leypetal Blossom = 555
Prismatic Crystal = 562
Battered Chest = 502
Mysterious Camel Figurine = 538
Large Solid Chest = 506
Netherwing Egg = 531
Mana-Infused Gem = 558
Everfrost Chip = 532
Trove of the Thunder King = 547
Ancient Mana Shard = 552
Dart's Nest = 542
Brightly Colored Egg = 533
Giant Clam = 501
Radiating Apexis Shard = 550
Large Mithril Bound Chest = 509
Solid Fel Iron Chest = 528
Practice Lockbox = 514
Scarlet Footlocker = 519
Buccaneer's Strongbox = 508
Sturdy Treasure Chest = 535
Solid Chest = 504
Glimmering Chest = 561
Runestone Treasure Chest = 536
Ravasaur Matriarch's Nest = 544
Battered Footlocker = 515
Heavy Fel Iron Chest = 522
Onyx Egg = 546
Felsteel Chest = 524
Waterlogged Footlocker = 516
Ancient Mana Crystal = 554
Large Iron Bound Chest = 505
Ground Wart = 565
Glowcap = 525
Dark Iron Treasure Chest = 539
Maplewood Treasure Chest = 540
Bound Adamantite Chest = 530
Silverbound Treasure Chest = 537
Suspiciously Glowing Chest = 549
Takk's Nest = 541
Ancient Mana Chunk = 553
Large Battered Chest = 507
Bound Fel Iron Chest = 529
Leypetal Powder = 556
Large Jelly Deposit = 564
Bloodpetal Sprout = 512
Fel Iron Chest = 521
Razormaw Matriarch's Nest = 543
Silken Treasure Chest = 534
Highmaul Reliquary = 548
Adamantite Bound Chest = 523
Burial Chest = 520
Dark Soil = 545
Mossy Footlocker = 518
}
(*temporary) = "table index is secret"
-
View User Profile
-
Send Message
Posted Feb 15, 2026In reply to Manshima: Vibecoded but maybe this will fix it?
in GatherMate2.lua, find:
function GatherMate:GetIDForNode(type, name)
return self.nodeIDs[type][name]
end
Replace with:
function GatherMate:GetIDForNode(type, name)
if not name then return nil end
if issecretvalue and issecretvalue(name) then return nil end
return self.nodeIDs[type][name]
end
Find:
function GatherMate:GetNameForNode(type, nodeID)
Replace entire function with:
function GatherMate:GetNameForNode(type, nodeID)
if not nodeID then return nil end
if issecretvalue and issecretvalue(nodeID) then return nil end
return self.reverseNodeIDs[type][nodeID]
end
Find:
function GatherMate:AddNode(zone, x, y, nodeType, name)
Replace entire function with:
function GatherMate:AddNode(zone, x, y, nodeType, name)
local nodedb = gmdbs[nodeType]
if not nodedb then return end
if issecretvalue and issecretvalue(name) then return end
local id = self:EncodeLoc(x,y)
-- db lock check
if GatherMate.db.profile.dbLocks[nodeType] then
return
end
nodedb[zone] = nodedb[zone] or {}
nodedb[zone][id] = self.nodeIDs[nodeType][name]
self:SendMessage("GatherMate2NodeAdded", zone, nodeType, id, name)
end
in Collector.lua, find:
function Collector:GetWorldTarget()
Replace entire function with:
function Collector:GetWorldTarget()
if foundTarget or not spells[curSpell] then return end
if (MinimapCluster:IsMouseOver()) then return end
local ok, what = pcall(tooltipLeftText1.GetText, tooltipLeftText1)
if not ok or not what then return end
if issecretvalue and issecretvalue(what) then return end
local nodeID = GatherMate:GetIDForNode(spells[prevSpell], what)
if what and prevSpell and what ~= prevSpell and nodeID then
self:addItem(prevSpell,what)
foundTarget = true
end
end
Find:
function Collector:UIError(event,token,msg)
Replace entire function with:
function Collector:UIError(event,token,msg)
local ok, what = pcall(tooltipLeftText1.GetText, tooltipLeftText1)
if not ok or not what then return end
if issecretvalue and issecretvalue(what) then return end
if issecretvalue and issecretvalue(msg) then return end
if strfind(msg, miningSpell) or (miningSpell2 and strfind(msg, miningSpell2) or (miningSpell3 and strfind(msg, miningSpell3))) then
self:addItem(miningSpell,what)
elseif strfind(msg, herbSkill) then
self:addItem(herbSpell,what)
elseif strfind(msg, pickSpell) or strfind(msg, openSpell) then
self:addItem(openSpell, what)
elseif strfind(msg, NL["Lumber Mill"]) then
self:addItem(loggingSpell, what)
end
end
Find:
function Collector:SpellStarted(event,unit,target,guid,spellcast)
Replace entire function with:
function Collector:SpellStarted(event,unit,target,guid,spellcast)
if unit ~= "player" then return end
if issecretvalue and issecretvalue(target) then target = nil end
foundTarget = false
ga ="No"
local spellname = GetSpellName(spellcast)
if spellname and (spells[spellname] or spells[spellcast]) then
if spells[spellname] then
curSpell = spellname
prevSpell = spellname
else
curSpell = spellcast
prevSpell = spellcast
end
local nodeID = target and GatherMate:GetIDForNode(spells[prevSpell], target)
if nodeID then
self:addItem(prevSpell,target)
foundTarget = true
else
self:GetWorldTarget()
end
else
prevSpell, curSpell = nil, nil
end
end
I just came across this error myself and I had Claude actually fix a few errors in other addons (or at least I think so...they stopped popping up in the other addons so...). Here's to hoping. When the dev updates with their official fixes it will overwrite all this anyways.
-
View User Profile
-
Send Message
Posted Feb 13, 2026I get LUA Errors in WoW Retail 12.0.1 (War Within) Delves if i pickup a curiosity Treasure.
-
View User Profile
-
Send Message
Posted Feb 5, 2026Is there a way to make it so "Show mining Nodes" and others have an extra option "Only when tracking" ?
-
View User Profile
-
Send Message
Posted Feb 4, 2026This is the same error I have been seeing. If I ignore the pop-up, it just keeps coming up over and over again. I am sad.
-
View User Profile
-
Send Message
Posted Feb 13, 2026In reply to redharlot: Seems that it was Rarity that is interfering with other mods. I turned it off and no longer get the pop up for Gathermate or other addons.
-
View User Profile
-
Send Message
Posted Jan 30, 2026Retail Wow. Ver.2-1.51.3. In dvelve I got error:
Message: Interface/AddOns/GatherMate2/GatherMate2.lua:527: table index is secret
Time: Fri Jan 30 21:02:43 2026
Count: 21
Stack:
[Interface/AddOns/GatherMate2/GatherMate2.lua]:527: in function 'GetIDForNode'
[Interface/AddOns/GatherMate2/Collector.lua]:291: in function 'GetWorldTarget'
[Interface/AddOns/GatherMate2/Collector.lua]:163: in function '?'
[Interface/AddOns/Altoholic/Libs/CallbackHandler-1.0/CallbackHandler-1.0.lua]:109: in function <...lic/Libs/CallbackHandler-1.0/CallbackHandler-1.0.lua:109>
[C]: ?
[Interface/AddOns/Altoholic/Libs/CallbackHandler-1.0/CallbackHandler-1.0.lua]:19: in function <...lic/Libs/CallbackHandler-1.0/CallbackHandler-1.0.lua:15>
[Interface/AddOns/Altoholic/Libs/CallbackHandler-1.0/CallbackHandler-1.0.lua]:54: in function 'Fire'
[Interface/AddOns/AskMrRobot/Libs/AceEvent-3.0/AceEvent-3.0.lua]:120: in function <...AddOns/AskMrRobot/Libs/AceEvent-3.0/AceEvent-3.0.lua:119>
Locals:
self = <table> {
modules = <table> {
}
nodeTextures = <table> {
}
defaultModuleState = true
db_types = <table> {
}
nodeIDReplacementMap = <table> {
}
db = <table> {
}
HBD = <table> {
}
enabledState = true
reverseNodeIDs = <table> {
}
defaultModuleLibraries = <table> {
}
rareNodes = <table> {
}
name = "GatherMate2"
orderedModules = <table> {
}
gmdbs = <table> {
}
Visible = <table> {
}
baseName = "GatherMate2"
phasing = <table> {
}
nodeExpansion = <table> {
}
db_storage_map = <table> {
}
mapBlacklist = <table> {
}
nodeIDs = <table> {
}
}
type = "Treasure"
name = <no value>
(*temporary) = <table> {
Disturbed Earth = 566
Большой сундук Темного Леса = 510
Большой сундук, окованный железом = 505
Насыщенный маной самоцвет = 558
Радужный кристалл = 562
Большой побитый сундук = 507
Механизированный сундук = 560
Большой сундук, окованный мифрилом = 509
Примитивный сундук = 527
Сундук, окованный адамантитом = 530
Кристалл древней маны = 554
Добротный сундук из оскверненного железа = 528
Побег кровоцвета = 512
Сундучок Алых = 519
Тяжелый Сундук из оскверненного железа = 522
Шелковый сундук с сокровищами = 534
Побитый сундучок = 515
Подозрительно светящийся сундук = 549
Осколок древней маны = 552
Побитый сундук = 503
Замшелый сундучок = 518
Сундук из оскверненного железа = 521
Ларец из лозы = 526
Погребальный сундук = 520
Осколок Вечного льда = 532
Сейф буканьера = 508
Большой добротный сундук = 506
Затопленный сундучок = 516
Странная фигурка верблюда = 538
Прочный сундук с сокровищами = 535
Дважды крепленое чародейское вино = 559
Сверкающий сундук = 561
Темная земля = 545
Лучащийся апекситовый осколок = 550
Окованный серебром сундук с сокровищами = 537
Проломленный сундучок = 517
Большая сота с пчелиным молочком = 564
Добротный сундук = 504
Яйцо дракона из стаи Крыльев Пустоты = 531
Учебный денежный ящик = 514
Цветок силоцвета = 555
Кленовый сундук с сокровищами = 540
Пыльца силоцвета = 556
Инкрустированный руническими камнями сундук с сокровищами = 536
Гнездо острозуба-матриарха = 543
Гнездо равазавра-матриарха = 544
Блестящий дренорский сундук = 551
Гнездо Такка = 541
Кусок древней маны = 553
Гигантский моллюск = 501
Гнездо Дарта = 542
Сота с пчелиным молочком = 563
Реликварий клана Верховного Молота = 548
Сундук из оскверненной стали = 524
Пламеневик = 525
Сундук, окованный оскверненным железом = 529
Ониксовое яйцо = 546
Раскрашенное яйцо = 533
Светящийся фолиант = 557
Сокровища Властелина Грома = 547
Сундук с сокровищами Черного Железа = 539
Земляной нарост = 565
}
(*temporary) = "table index is secret"
-
View User Profile
-
Send Message
Posted Jan 29, 2026Now that we have an option to toggle tracking for lumber could you add a section for it as well to always/never/only show while tracking?
-
View User Profile
-
Send Message
Posted Jan 27, 2026Gas Clouds in BC are not being marked as before the pre-patch. I was collecting in Zangermarsh.
-
View User Profile
-
Send Message
Posted Jan 25, 2026Update: it seems that Rarity is causing issues with other mods, after turning that off I no longer get this pop up.
Everytime I log on there is a pop up, Gathermate2 has been blocked from an action only available to the Blizzard UI and prompts me to disable or Ignore. What is it try to do that is being blocked and is the end of using this until it is changed?
-
View User Profile
-
Send Message
Posted Dec 27, 2025I can see all lumber nodes except in Legion zones. I tried different combinations with different settings, triple checked everything was turned on. All other zones work normally.
-
View User Profile
-
Send Message
Posted Jan 7, 2026In reply to Alourra: I have the exact same error. Tried everything, disabled every other addon too. I can only guess this has something to do with remix? The nodes do show up on the minimap in the broken isle, just not on the big zone / worldmap.
-
View User Profile
-
Send Message
Posted Dec 21, 2025Getting the following error as of 12/21/2025 when trying to import.
1x GatherMate2_Data/GatherMateData.lua:201: bad argument #1 to 'pairs' (table expected, got nil)
[tail call]: ?
[C]: in function 'pairs'
[GatherMate2_Data/GatherMateData.lua]:201: in function 'MergeMines'
[GatherMate2_Data/GatherMateData.lua]:187: in function 'PerformMerge'
[GatherMate2/Config.lua]:1162: in function <GatherMate2/Config.lua:1153>
[C]: ?
[GatheringTracker/Libs/AceConfig-3.0-3/AceConfigDialog-3.0-92/AceConfigDialog-3.0.lua]:45: in function <...nfig-3.0/AceConfigDialog-3.0/AceConfigDialog-3.0.lua:43>
[GatheringTracker/Libs/AceConfig-3.0-3/AceConfigDialog-3.0-92/AceConfigDialog-3.0.lua]:839: in function <...nfig-3.0/AceConfigDialog-3.0/AceConfigDialog-3.0.lua:661>
[C]: ?
[Ace3/AceGUI-3.0-41/AceGUI-3.0.lua]:66: in function <Ace3/AceGUI-3.0/AceGUI-3.0.lua:64>
[Ace3/AceGUI-3.0-41/AceGUI-3.0.lua]:300: in function 'Fire'
[Ace3/AceGUI-3.0-41/widgets/AceGUIWidget-Button.lua]:22: in function <...dOns/Ace3/AceGUI-3.0/widgets/AceGUIWidget-Button.lua:19>
Locals:
(*temporary) = "LeftButton"
(*temporary) = false
-
View User Profile
-
Send Message
Posted Dec 17, 2025Not seeing lumber nodes on my world map and have them set to 'Always show' (have not tried any other types of nodes thus far) -- they show up on my minimap with the little blue circle just fine, though (to note, i did import the data) **edit* I can see the icons on the world map in Revendreth, but wasn't seeing them in normal Legion zones
-
View User Profile
-
Send Message
Posted Dec 8, 2025GatherMate2_Data has also been updated with TWW Herb, Mining and new: Timber data for housing decor
-
View User Profile
-
Send Message
Posted Dec 9, 2025In reply to nevcairiel:
AWESOME! I'm a fan since when Gathermate2 came to be! Just 1 issue with current version. Timber icon on Minimap and World map is transparent. Maye texture is not loading or reference to invalid texture?
-
View User Profile
-
Send Message
Posted Dec 6, 2025Does anyone have an update to track Lumber?
-
View User Profile
-
Send Message
Posted Dec 6, 2025In reply to Manshima: Been watching this page for days hoping for the same thing