Description
Ultimate Castbars
Ultimate Castbar aims to be the last castbar World of Warcraft addon you’ll ever need. It is a highly configurabl castbar addon for World of Warcraft (Retail), focused on deep layout control, rich text/tagging, and advanced interruptibility/kick-aware visuals.


Sources of inspiration and credits
Thanks to Xepheris for DisintegrateTicks on which was based dynamic disintegrate ticks, donate here if you liked that feature.
Thanks to obk_wow for Universal Frame Anchor on which was based the frame picker, send some love his way if you liked that feature.
Features
Highlights
- Per-unit castbars for
player,target, andfocuswith independent enable/disable and full settings trees. - Supports normal casts, channels, and empowered casts.
- Powerful multi-tag text system with custom formula parsing and performance-aware updates.
- Extensive style controls (textures, borders, gradients, class/ombre/custom color modes).
- Advanced uninterruptible + kick-aware visuals (overlays, “until kick” fills, tick markers, dynamic alpha).
- Class-specific channel tick tooling + player spell blacklist/whitelist.
- Deep Evoker support: empower stage visuals + dynamic Disintegrate tick logic (Devastation).
- Robust preview simulator that reuses the real cast pipeline.
- Safe-ish Blizzard castbar coexistence (hide/show, size/position/scale, restore baseline).
- AceDB profiles with import/export, schema filtering/normalization, and copy-between-units tools.
Installation
Automatic install
Use either Curse or Wago and their corresponding OS apps
- Search for “Ultimate Castbars” and click “Install” (Curse) or “Add to collection” (Wago).
- Follow the prompts to select your WoW installation and desired options.
- The app will handle downloading, installing, and updating the addon for you with only a few clicks.
Manual install
Download the repository as a ZIP (or a release archive if you publish releases).
Extract the UltimateCastbars sub-folder into your WoW AddOns folder (the sub-folder should have a file called UltimateCastbars.toc inside it):
- Windows:
World of Warcraft\_retail_\Interface\AddOns\ - macOS:
World of Warcraft/_retail_/Interface/AddOns/
- Windows:
Launch the game and enable the addon in the character select “AddOns” menu.
Quick Start
- Log in and open options with:
/ucb - Enable the bar(s) you want (Player/Target/Focus).
- Use the Preview buttons to spawn test casts (normal/channel/empowered).
- Adjust anchoring and offsets until the bar sits where you want it.
- Customize text tags, textures, borders, and interruptibility visuals.
Configuration Overview
Per-Unit Bars
Each tracked unit (player, target, focus) has its own settings tree:
- Enable/disable per unit
- Preview controls per unit
- Copy settings from another unit bar
- Tabs for general layout, text, style, uninterruptible/kick visuals, visibility, class settings, and Blizzard default castbar handling
Layout, Anchoring, and Size Sync
The General tab provides deep positioning controls:
- Anchor to any frame by name (default
UIParentor custom frame) - Separate
anchorFrom/anchorTopoint pairing - X/Y offsets
- Frame picker helper (hover-to-identify frames)
- Late-loading frame resolution (retry + delay/interval settings)
- Optional size sync to another frame:
- Sync width and/or height, with offsets
- Min width/height
- Options to include border thickness in effective sizing

Icon layout:
- Show/hide icon
- Anchor icon around the bar (sides/corners/top/bottom)
- Offsets
- Sync icon size to bar height or set explicit width/height

Text Tags and Tokens
Ultimate Castbars includes a custom text engine:
- Multiple text entries per bar (
textList) - Per-tag enable/disable + display name
- Per-tag type: Cast, Interrupted, Cancelled
- Per-tag show rules:
- By cast type (normal/channel/empowered)
- By effect state (show on interrupted/cancelled)
- Per-tag font/size/outline/shadow/color, with optional shared overrides
- Performance model:
- Static (no updates after setup)
- Semi-Dynamic (updates on cast/state change)
- Dynamic (updates every frame, e.g., timers)

Supported token list
Tokens may support an optional :X suffix for limits (where applicable).
| Token | Meaning |
|---|---|
[sName] / [sName:X] |
Spell name |
[kName] / [kName:X] |
Interrupting unit name (interrupted text) |
[dTime] / [dTime:X] |
Total duration |
[dPerTime] |
Total duration percent (100) |
[rTime] / [rTime:X] |
Remaining time |
[rPerTime] / [rPerTime:X] |
Remaining percent |
[rTimeInv] / [rTimeInv:X] |
Elapsed time |
[rPerTimeInv] / [rPerTimeInv:X] |
Elapsed percent |
[nIntr] / [nIntr:X] |
Uninterruptible-only text (also controls visibility) |
[nIntrInv] / [nIntrInv:X] |
Interruptible-only text (also controls visibility) |

Style and Visuals
- Castbar texture, background texture
- Border textures for bar + icon
- Color modes:
- Class Colour
- Ombre (Rainbow) progression
- Custom Colour (optional gradient start/end)
- Target/Focus can use separate enemy NPC colors (where applicable)
- Background toggles + alpha
- Custom rectangular borders with:
- thickness
- per-side offsets
- synced/independent icon border options


Interruptibility and Kick Awareness
A major focus area:
Uninterruptible casts (notInterruptible):
- Hide main bar, or alter transparency
- Optional icon inclusion in transparency change
- Custom overlay fill/texture + background styling
- Separate border styling for uninterruptible states (bar + icon)
Kick / interrupt availability awareness:
- Hide bar until your interrupt becomes available
- Change transparency when interrupt is on cooldown/unavailable
- Optional dynamic alpha updates during the cast as cooldown changes
- Tick marker for “kick timing”
- “Until kick” fill region with optional overlay/background

Other Features
- Spell Queue Window (player)
- Read/write
SpellQueueWindowCVAR - Optional custom ms duration
- Visual overlay on castbar (per cast type)
- Read/write

- Channel tick markers
- Global tick visuals (color/width, optional texture)

- Invert / mirror behavior
- Per cast type: invert fill direction, mirror rendering using clipped frames
- Interrupted / cancelled overlays
- Per effect type + cast type
- Custom textures/colors + display duration



Class Settings (Ticks + Filters)
- Class navigation UI for all classes (with class-colored labels)
- Player channel spell tick table (per spell, per spec aware UI)
- Observed units (target/focus) have class defaults and spec placeholders for channel ticks
- Player spell filter:
- Blacklist or whitelist mode
- Add by spell picker or spell ID
- Applied to player castbar display logic


Evoker Empower + Disintegrate Support
- Dynamic Disintegrate tick logic (Devastation):
- Tick timing adapts to haste/talents/channel updates
- Fallback to static tick settings if disabled

- Empower visuals:
- Stage tick marks and segment backgrounds (dynamic)
- Manual tick placement (percent-based) with reset
- Per-stage tick and color control
- Optional textures

Preview Tools
Per unit:
- Preview normal cast, channel, and empowered casts
- Looping previews (auto restart)
- Choose preview spells from detected spellbook lists
- Configure duration, empower stage count, “not interruptible”
- Drag preview bar to reposition and write offsets back to settings

Blizzard Castbar Integration
- Show/hide default Blizzard castbars while using custom bars
- Optionally show a static bar when enabling for comparison/testing
- Control default bar size/position/scale (or leave Blizzard-managed)
- Captures and restores Blizzard baseline positions with “late restore” to reduce drift
- Re-applies hide/show if Blizzard attempts to show frames again

Slash Commands
/ucb,/ultimatecastbars,/uc— Open main UI/pcb— Player castbar settings/tcb— Target castbar settings/fcb— Focus castbar settings/ucbprof— Profiles tab/ucbdebug— Start debug mode/ucbdebugstop— Stop debug mode/rl— Reload UI
Profiles, Import/Export, and Copy Tools
- AceDB profile management (choose/copy/reset/delete)
- Optional LibDualSpec integration (if present)
- Import/Export:
- Export selected/current profile as a string
- Import into current or existing profile
- Import as a new profile
- Uses AceSerializer + optional LibDeflate for compression/printable encoding


- Copy settings between units:
- Copy selected categories (general/text/style/visibility/uninterruptible/other/class)
- Replaces array-like settings cleanly (e.g., text lists)
Debug Mode
Debug mode is intended for addon conflict isolation:
- Captures currently enabled addons (excluding Ultimate Castbars)
- Disables them for the current character and reloads UI
- Stores the list and can restore/reload later
Use carefully—this is disruptive by design.
Dependencies
This addon uses (directly or via embedded libs):
- Ace3
- AceGUI-3.0-SharedMediaWidgets
- CallbackHandler-1.0
- LibDataBroker-1.1
- LibDualSpec-1.0
- LibSharedMedia-3.0
- LibDeflate
Support
- Use Discord for issues or bugs and feature requests: https://discord.gg/wX5hWW3N3Q
Contributing
PRs welcome.
Suggested workflow:
- Fork the repo
- Create a feature branch
- Keep changes focused and documented
- Submit a PR with a clear summary and testing notes (client version, class/spec, steps)



