It initially started with a concept I developed and shared on twitter. I've now decided that I can just... make this into an addon. It's still in heavy development, but a working prototype is now available for others to test and play around with. I can't guarantee this'll be in full working order any time soon, especially for custom bag addons that replace the bag entirely, but it's a proof of concept that works.
Commands
All commands begin with '/hearthbag' or '/hb' followed by the command.
- /hb reset
automatically place the hearthbag on a preset location, depending on whether or not you have a bag addon supported by this addon.
- /hb combat
Show the combat placement frame so it can be moved and placed to a custom location, or even assigned as a hearthbag anchor.
- /hb placer
A frame selection to directly place the hearthbag on to. Use /hb placer again to assign the location selected.
- /hb cycler
A frame selection with more freedom but also opens possibility to anchor to unstable frames.
- /hb help
Bring up the selection of aforementioned commands.
Limitations
Due to certain in-combat limitations, this addon can't always be parented to frames in combat, as during combat the parented frame will become "Protected" if not properly designed. To work around this, I made the Combat Frame, which switches the Hearthbag into an accessible and useable frame during combat. The combat frame can be hidden in combat if desired, or optionally shown out of combat as well.
The purpose of Hearthbag is to provide a clickable hearthstone on the main bag button. I don't plan on adding other spells in the selection such as Mage Portals or Astral Recall as they share different cooldowns and serve a different purpose. This is meant to encompass Hearthstones and relating Hearthstone toy items. I don't want to add anything that'd be considered "bloatware" or "feature creep" - that's not what I originally had in mind. Other plugin addons can serve that purpose instead if so desired, but I'm not going to make that for this addon.
In the case of finding frames which can't be parented to or knowing why something doesn't work, I highly recommend using BugGrabber + Bugsack. You can turn off the "fatality" sound in the options.
Due to simply how addons work, if you parent Hearthbag to a frame that no longer exists upon reloading (parented to addon that you disabled) it'll throw an error.
Items Supported
Retail
(Work in Progress, updating as time goes on)
Ruby Slippers / Astonishingly Scarlet Slippers (will prioritize the higher level version).
Timewalker's Hearthstone (Dragonflight Epic Edition Preorder)
Eternal Traveler's Hearthstone (Shadowlands Epic Edition Preorder)
Holographic Digitalization Hearthstone
Peddlefeet's Lovely Hearthstone
Brewfest Reveler's Hearthstone
Headless Horseman's Hearthstone
Greatfather Winter's Hearthstone
Dark Portal (TCG Toy)
Tome of Town Portal (Diablo Event)
Ethereal Portal (TCG Toy)
Wrath Classic
Dark Portal (TBC Deluxe Edition)
Classic
Addons Supported
Addons which have preset profiles that work with the `/hb reset` command:
If there are other bag addons to support try to leave a comment below. I don't think I can possibly get them all but I'll certainly try where I can. Keep in mind though this is what the custom placement of the addon is for.
Also a special thanks to Peterodox for helping me figure out some code when I got stuck, I'd definitely recommend taking a look at his addon Narcissus.
Known Issues:
Dragonflight comes with a few issues, particularly with Taint. There's not much that can necessarily be done except try to avoid it. The main cause right now seems to be the "inherit the right click function" feature, particularly when selecting the "Convert to separate bags" option in the dropdown menu. Chances are disabling this will probably prevent most taint issues.
There was also an older function, CloseAllBags() and OpenAllBags() that was used in previous iterations of the addon. I originally used this as a fallback to make sure the button hooked on to the bag frame upon login (particularly for other addons), but for the time being I've removed it. I'll see what I can fix during prepatch.