Twintop's Resource Bar
A fully customizable resource bar for every class in World of Warcraft and World of Warcraft: Forever. Track your resources, ability costs, casts, health, and cooldowns in one place, with colors, text, and sounds that react to what is happening in combat.
TRB started life as Twintop's Insanity Bar WeakAura set for Shadow Priests during the Legion expansion.
Issues by Class
World of Warcraft (Midnight)
World of Warcraft: Forever
Supported Game Versions
| Game | Classes | Status |
|---|---|---|
| World of Warcraft (Midnight) | All 13 classes and 40 specializations | Full support |
| World of Warcraft: Forever | All 9 classes | Early development |
Both versions are built on the same core, so everything under Features is available in each. What differs is listed under Differences Between Versions.
Features
Bars
- Primary resource: Mana, Rage, Energy, Focus, Runic Power, Fury, Insanity, Astral Power, or Maelstrom, with an optional lower maximum and an overcap warning.
- Secondary resources: Combo Points, Holy Power, Runes, Soul Shards, Essence, and other node-based resources, with per-node colors and recharge progress.
- Druid forms: Mana, Rage, Energy, Astral Power, and Combo Points bars follow your shapeshift form.
- Health: absorb, healing absorb, and incoming heal overlays.
- Cast bars: player, target, focus, and pet cast bars with channel ticks, empower stages, latency, and an uninterruptible shield. Target and focus cast bars work on enemy casts.
- Pet bars: your pet's health and resource.
- Other bars: Global Cooldown, Fatigue, and Breath timers.
Threshold Lines
Mark the cost of your abilities on the resource bar, colored by whether each one is usable, with optional icons and a sound when an ability becomes usable. You can also add your own lines to any bar, at a fixed value or as an offset from the maximum.
Color Indicators
Change a bar's fill, border, background, or end cap color, or add an animated border glow, while a buff, proc, or resource state is active. Indicators follow a priority order you set, and custom indicators can follow any buff, target debuff, trinket buff, or combat potion in your Cooldown Manager layout.
Bar Text
Add as many text entries as you like to any bar, built from live variables ($resource, $haste, $castTimeRemaining, and many more), spell icons, and conditional logic. The editor has a searchable variable browser that inserts at the cursor. See the Bar Text Customization wiki for the full reference.
Audio Cues
Play a sound on procs, cooldowns, usable thresholds, and resource counts, using any LibSharedMedia sound and your choice of output channel.
Visibility
Show or hide each bar by combat, group, instance, mount, target, PvP, and resource or health level. Always-hide rules take priority over everything else, and hidden bars can fade out and keep their space in the layout.
Layout and Appearance
- Size, fill direction, and growth direction per bar.
- Anchor bars to each other, the Cooldown Manager, or any named frame, or place them in Edit Mode with separate positions for each layout.
- LibSharedMedia textures and fonts, gradients, end caps, and border glows.
Profiles and Sharing
- Per-specialization profiles, grouped into named sets you can use across characters.
- Global Options apply shared settings to every specialization at once.
- Export and import single sections or whole specializations, copy settings between specializations, or share through the Wago Companion app.
Cooldown Manager
Some tracking reads from Blizzard's Cooldown Manager. Options and bar text variables that depend on it carry a CDM badge, and need the tracked ability added to one of your Cooldown Manager viewers.
Differences Between Versions
World of Warcraft (Midnight)
Most specializations track their major cooldowns and procs, and many get dedicated bars for their own mechanics, including:
- Death Knight: Bone Shield and Coagulating Blood (Blood)
- Demon Hunter: Void Metamorphosis and Collapsing Star (Devourer)
- Druid: Ironfur (Guardian)
- Evoker: Dragonrage (Devastation) and Ebon Might (Augmentation)
- Hunter: Tip of the Spear (Survival) and Feign Death
- Mage: Arcane Salvo (Arcane), Fire Blast charges (Fire), and Shatter (Frost)
- Monk: Stagger (Brewmaster)
- Priest: Power Word: Radiance (Discipline), Holy Words and Lightweaver (Holy), and Angelic Feather
- Shaman: Elemental Blast buffs (Elemental)
- Warrior: Whirlwind charges and Enrage (Fury), and Defensives (Protection)
Shadow Priest, Balance Druid, and Elemental Shaman can also show a secondary Mana bar.
World of Warcraft: Forever
Forever support is in early development, and class-specific tracking is still being added. Forever also has a few things of its own:
- Main hand, off hand, and ranged swing timer bars.
- Abilities use your highest known spell rank.
- Bar text stat variables match the Forever character sheet, such as Spirit, spell power, defense, and resistances.
Localization
TRB is being translated into Simplified Chinese (nearly complete), German (partial), and French (started). If you would like to help translate, join the Discord server and let Twintop know.
Support
Report issues on GitHub or join the discussion on Discord.
Development
One Core serves both game versions, and each version (a flavor) brings its own class modules. Mainline's TOC is TwintopInsanityBar.toc at the repository root, so a checkout works in place as a _retail_ install. Forever's TOC is Flavors/Forever/TwintopInsanityBar.toc, and the packaged zip puts it at the addon root.
Core/ Class-agnostic engine. Nothing here may name a class, spec, or class bar (build/lint-core.ps1).
Flavors/<Flavor>/ Manifest.lua (identity and class/spec registry), Migrations.lua, News.lua, load lists,
and ClassModules/ (spell sets, bar types, spec descriptors, runtime, and options).
Libs/ Images/ Sounds/ StatusBars/ Shared libraries and media.
build/ Packaging, client linking, lint, and smoke tests.
Shared code learns about a spec only from its spec descriptor (Core/Classes/SpecDescriptor.lua) or the manifest's registry, never from a class id in Core. Client setup, smoke tests, and the release tagging scheme are in build/README.md.