oUF

oUF is a unit frame framework. It attempts to simplify the process of writing unit frames for WoW by doing all the trivial and painfully boring parts for you. So you can focus more on experimenting with the look of the frames.

By itself oUF doesn't do much, a layout is required.

Do note that 1.5 is not backwards compatible with 1.4.x layouts. Some might break horribly depending on what features they use.

Reporting issues:
Generally, bugs should be reported through the author of the layout. If the layout author is a slacker -- go directly and I'll take a look.

There's two ways to report oUF isses. You can make a post on the oUF forum here on WoWInterface or you can make a ticket on the oUF issue tracker over at GitHub. The preferred method is GitHub, but post it here on WoWI if you don't have an account there. Alternatively you can send me a PM.

Donate:

Changes in 1.6.9:

Adrian L Lange (47):

core: Expose the headers

tags: No need to match the same string twice

castbar: Kill the pet casting bar if we spawn a player castbar

runebar: Bail if GetRuneCooldown returns nil values

cpoints: Use UNIT_POWER_FREQUENT instead of UNIT_COMBO_POINTS

tags: Use UNIT_POWER_FREQUENT instead of UNIT_COMBO_POINTS for cpoints

eclipsebar: Remove element

stagger: Monk stances no longer exist

stagger: The default MonkStaggerBar is parented to PlayerFrame, no need to hide it manually

tags: Remove 'pereclipse' tag

power: Update power colors and indices for Legion

power: Handle power colors from nested tables, such as the stagger colors

health: Fix tapping for Legion

power: Fix tapping for Legion

stagger: Color indices were exposed in Legion (build 21996)

runebar: RuneFrame was parented to PlayerFrame in 5.3

stagger: Add fallback indices for live clients

readycheck: Use the animation system for handling fading

readycheck: Add support for overriding the textures

readycheck: Add PreUpdate/PostUpdate/PostUpdateFadeOut hooks

druidmana: Add support for other classes in Legion

classicons: Chi is only used for Windwalker monks

classicons: Holy Power is only used for Retribution paladins

classicons: Shadow Orbs no longer exist in Legion

classicons: Soul Shards are class-wide in Legion

classicons: Add Arcane Chages for Arcane Mages

classicons: Add Combo Points for rogues and druids

classicons: Use the colors provided by the color table for the textures

classicons: Only update textures if the classicons are textures

classicons: Add support for vehicle combo points

classicons: Pass powerType through PostUpdate

classicons: Add fallback texture color for vehicles

classicons: Update when max power changes

tags: Add Arcane Charges tag

tags: Remove Shadow Orbs tag from Legion

tags: Chi is only used for Windwalker monks in Legion

tags: Soul Shards are class-wide in Legion

tags: Update spec check for the holypower tag

classicons: Remove pre-legion compatibility checks

health: Remove pre-legion compatibility checks

power: Remove pre-legion compatibility checks

runebar: Runes were simplified in Legion, now there's only one type

runebar: Add Override support and rename the PostUpdate hook

runebar: Allow PostUpdate during vehicle updates

classicons: Make sure we update for talent changes for druids

druidmana: Add overrides for the display pairs table

Merge pull request #3 from Rainrider/rain-runebar

Chris Bannister (1):

aura: Dont have oUF aura specific logic inside CreateIcon

Phanx (1):

aura: Update UnitAura return values

Rainrider (3):

runebar: account for energized runes

runebar: deactivating OnUpdate is handled in Update

runebar: let the layout define the max number of runes

Trond A Ekseth (30):

Merge pull request #237 from p3lim-wow/ExposeHeaders

Merge branch 'Zariel-auras-dont-leak-information'

aura: Make the previous commit backwards compatible.

aura: Add missing internal state update after second createAuraIcon call.

totems: Update example to include cooldown template.

Merge pull request #254 from ls-/stagger-patch

Merge pull request #255 from ls-/classicons-patch

Merge pull request #251 from p3lim-wow/FixRunebar

Merge pull request #250 from p3lim-wow/FixCastbar

Merge pull request #264 from p3lim-wow/legion-tapping

Merge pull request #267 from p3lim-wow/legion-power

Merge pull request #271 from p3lim-wow/legion-stagger

Merge pull request #266 from p3lim-wow/legion-classicons

Merge pull request #276 from p3lim-wow/patch-readycheck

Merge pull request #262 from ls-/legion-pcp

Merge pull request #263 from ls-/legion-prestige

Merge pull request #265 from p3lim-wow/legion-tags

Merge pull request #268 from p3lim-wow/legion-druidmana

Merge pull request #269 from p3lim-wow/legion-runebar

Merge pull request #270 from p3lim-wow/legion-eclipse

Merge pull request #272 from p3lim-wow/legion-cpoints

Merge pull request #279 from p3lim-wow/patch-classicons1

Merge pull request #281 from p3lim-wow/patch-classicons-maxpower

Merge pull request #285 from ls-/patch-power

Merge pull request #288 from p3lim-wow/legion-cleanup

Merge pull request #289 from ls-/patch-aura

Merge pull request #290 from Phanx/auras-unitaura-returns

Merge pull request #292 from p3lim-wow/patch-classicons-druid

Bump TOC interface version to 7.0 (70000).

Bump TOC version to 1.6.9.

Val Voronov (16):

powerprediction: Add power cost prediction widget.

prestige: Add prestige widget.

powerprediction: Hide bars, when element is disabled.

prestige: Remove prestige element.

pvp: Element revamp.

powerprediction: (Un)register 'UNIT_SPELLCAST_SUCCEEDED' event.

druidmana: Fixed additional power bar update process.

power: Alternative power colours use 0-255 range.

power: Alternative power colours use 0-1 range too.

power: Better condition.

power: Even better condition.

powerprediction: Legion clean-up.

pvp: Legion clean-up.

aura: Fixed issue which was causing /fstack error.

power: Added a comment.

aura: A better way of getting parent frame's name.

Valeriy Voronov (4):

altpowerbar: Use correct UnitAlternatePowerInfo() returns.

altpowerbar: Set OnLeave script only if frame doesn't have one yet.

stagger: Perform an actual update on forced update event.

classicons: Actually update widgets on forced update.

19 files changed, 634 insertions(+), 583 deletions(-)

Changes in 1.6.8:

Adrian L Lange (5):

eclipsebar: Use the correct spellIDs for eclipse peaks

eclipsebar: Use UNIT_POWER_FREQUENT since the astral phases has sped up significantly

eclipsebar: arg1 of ECLIPSE_DIRECTION_CHANGE is a string now

classicons: Keep the overrides consistent with the rest of the elements

tags: Only show spec-specific tags when the resource is both usable and available

Trond A Ekseth (12):

eclipsebar: Re-add .directionIsLunar.

classicons: Fix declaraction of Visibility function.

Merge branch 'p3lim-wow-ClassIcons'

Merge pull request #235 from p3lim-wow/ClassTags

classicons: Run ClassPowerDisable on unsupported clases/specs.

classicons: Rewrap doc text.

classicons: Set file mode -x.

range :Set file mode -x.

stagger: Rewrap docs.

healprediction: Rewrap docs.

classicons: On enable, set the old max to the current total of icons.

Bump TOC version to 1.6.8.

7 files changed, 56 insertions(+), 50 deletions(-)

Changes in 1.6.7:

Adirelle (2):

stagger: hide element in Enable.

colors: fixed HCYtoRGB that was returning values greater than 1.

Adrian L Lange (4):

eclipsebar: Hide while in a vehicle

runebar: Hide while in a vehicle

events: Register the event with realUnit as well to allow elements to use both units while in a vehicle

Fixing the male worgen portrait problem. You can now use SetPortraitZoom instead on SetCamera. That new and yet not documented WoW API function got introduces with the new SetDisplayID() functionality in Cataclysm. (Mainly for showing Quest NPC's that you do not have yet in your cache).

42 files changed, 2654 insertions(+), 576 deletions(-)

Changes in 1.5.16:

Trond A Ekseth (3):

Bump TOC version to 1.5.16.

castbar: Workaround GetNetStats() returning 0 instead of latencies.

Bump TOC interface version to 4.3 (40300).

2 files changed, 24 insertions(+), 10 deletions(-)

Changes in 1.5.15:

Trond A Ekseth (4):

Bump TOC version to 1.5.15.

range: Enable should return true when we enabled.

core: Track enabled elements by name instead of update function.

core: Accidental prints is what happens when you code without coffee.

3 files changed, 22 insertions(+), 9 deletions(-)

Changes in 1.5.14:

Trond A Ekseth (15):

health: Remove unnecessary UnregisterEvent for UNIT_POWER.

power: Properly unregister all events on Disable.

Bump TOC version to 1.5.14.

castbar: Verify the object type before we attempt to apply a texture.

druidmana: Verify the object type before we attempt to apply a texture.

eclipsebar: Verify the object type before we attempt to apply a texture.

healprediction: Verify the object type before we attempt to apply a texture.

health: Verify the object type before we attempt to apply a texture.

power: Verify the object type before we attempt to apply a texture.

runes: Verify the object type before we attempt to apply a texture.

colors: Remove inf and NaN check from ColorGradient.

druidmana: Add check to prevent division by zero.

health: Add check to prevent division by zero.

power: Add check to prevent divison by zero.

druidmana: Remove incorrect indentation.

9 files changed, 37 insertions(+), 19 deletions(-)

Changes in 1.5.13:

Califpornia (3):

Initial commit

Cleanup

Renamed .lua file to match the .toc

Ennie (1):

Make changes according to haste's suggestions.

John Ross (4):

follow normal plugin format as well as add add a faster update for form switching

added event to better track when to show and hide bar

fixed gradient lookup, added check even if unit is in a vehicle

better vehicle support

Trond A Ekseth (16):

Bump TOC version to 1.5.13.

Merge branch 'ouf_druidmana' into merge

Rename and allow oUF_DruidMana to load.

Clean up the file.

Change OnPowerUpdate to OnDruidManaUpdate so we can tell the difference.

Remove extra newlines.

Move the tag into the tag element.

Split the mana tag into curmana and maxmana to be consistent with curpp and maxpp.

Remove unnecessary global oUF fallback.

Remove unnecessary global oUF fallback.

Remove some old defensive code.

Add the missing 'then'.

Add useful information to the post-callback.

Fix the tag events for curmana and maxmana.

Commas are required in Lua.

Change indentation to be more consistent.

6 files changed, 169 insertions(+), 48 deletions(-)

Changes in 1.5.12:

Adirelle (1):

Added a :IsElementEnabled meta ; use it in :EnableElement and :DisableElement to avoid enabling/disabling an element twice.

Adrian L Lange (1):

Add resurrect icon element

Rainrider (1):

don't outsideAlpha units which UnitInRange does not check range for

Trond A Ekseth (12):

Handle LoD layouts which use the factory correctly.

Prevent the ResurrectIcon element from executing on 4.1.

Merge branch 'factoryLoD'

Fix bad indenting.

Add MainTank icon element by Neav.

Apply a round of sed and some manual style changes.

Don't error when we encounter units which aren't in a raid.

Only hide the default alt. power bar when we create one for a player unit.

Remove the 4.1 check.

Remove dead code.

Bump TOC interface version to 4.2 (40200).

Bump TOC version to 1.5.12.

9 files changed, 152 insertions(+), 27 deletions(-)

Changes in 1.5.11:

Trond A Ekseth (9):

Set castbar.casting to nil when getting ready to start a channel. This is to work around edge cases where channels are started before the previous spell cast has been completed.

UHF overlap with UH now, so we only have to register one of them \:D/.

We don't OnUpdate poll anymore, so this check is redundant.

Don't need to piggyback no UP anymore, as pets can't be sad.

More leftover happiness fluff :-(.

Allow the power element to display alternative power as well.

We require additional events.

Expose the r,g,b values to the PostUpdate function.

Bump TOC version to 1.5.11.

5 files changed, 32 insertions(+), 19 deletions(-)

Changes in 1.5.10:

Adirelle (2):

Fixed the bug with Clique support that prevented the headers to update properly.

Added arena units to :DisableBlizzard.

Trond A Ekseth (7):

Disable the arena frames through the CVar as well.

Don't assume the call to :UnregisterEvent() is correct when there's only one event handler.

Add a totems element.

Bump TOC interface version to 4.1 (40100).

Nuke pet happiness from orbit.

Looks like we had leftovers :(.

Bump TOC version to 1.5.10.

11 files changed, 145 insertions(+), 114 deletions(-)

Changes in 1.5.9:

Chris Bannister (1):

Dont use chat latency

Trond A Ekseth (20):

Use UNIT_HEALTH_FREQUENT instead of OnUpdate polling.

We only need to register one of the main health events as they overlap.

UH and UHF doesn't properly overlap, so we have to register the both.

Use __owner instead of :GetParent().

Update happiness correctly while using frequentUpdates.

Cool, a print. This is what happens when you don't branch out from master like you should.

Use ForceUpdate so we run the {Pre,Post}Update handlers.

Call :SetMinMaxValues() before :SetValue().

Split the unit handling code from :DisableBlizzard() into :HandleUnit().

Be consistent and always use 'unit'.

Fix the default threat icon.

So much fail today.

Refactor initObject and extend oUFs guessUnit to support maintank and mainassist.

Handle the case where someone has modified the unitsuffix attribute after we have guessed the unit.

Properly set the correct .unit for non-onlyProcessChildren frames as well.

Copy/paste errors. We has them.

Check if the groupFilter is a string before attempting to match it.

Use unit instead of value. Consistency change only.

Disable happiness related stuff on 4.1.

Bump TOC version to 1.5.9.

14 files changed, 158 insertions(+), 134 deletions(-)

Changes in 1.5.8:

Trond A Ekseth (6):

Revert "Don't think we need to force an OnUpdate on the bossN unitids anymore."

Don't allow frequentUpdates on frames that have a OnUpdate set.

Add missing return values from UnitAura.

Adopt Adirelle's changes, which correct updating of player pet when leaving a vehicle.

Update the player frame slightly less.

Bump TOC version to 1.5.8.

5 files changed, 24 insertions(+), 8 deletions(-)

Changes in 1.5.7:

Trond A Ekseth (2):

Use UNIT_PET to update vehicles and change the code slightly.

Bump TOC version to 1.5.7.

2 files changed, 33 insertions(+), 30 deletions(-)

Changes in 1.5.6:

Chris Bannister (3):

Add caster

Incase groupFilter is a number, which it can be

Revert "Add caster"

Trond A Ekseth (32):

Fix indenting.

Fix broken logic.

Add frame wide {Pre,Post}Update.

Start on a alternative power bar element.

Add the element to the full-update list.

Hide the element on init.

Start the 2011 clean-up.

Move the factory fluff to its own file.

Four more years!

Move disabling of blizzard frames to its own file.

Move the event system to its own file as well.

Kick out the coloring code and remove the global access to our internal namespace.

AltPowerBar should be a good element and use the namespace, and not the global.

Don't create hidden holes in the aura table.

Remove some double spaces.

Make :ForceUpdate() call the correct function.

We might want to hide the element, and not the entire frame.

Use the correct update function, and correctly check unit arguments.

Unregister events om .powerBarAlt if it exists.

Unregister events on TargetofFocusFrame as well when we disable the FocusFrame.

Don't think we need to force an OnUpdate on the bossN unitids anymore.

One less typo.

Actually, let's just kill the function instead.

Use :Hide() instead of an empty function.

Prevent double registration of the same function.

Convert our event handler back to a pure function if we no longer have multiple registrations.

The readyCheck events don't use unitids, but send actual player names. Work around this and kill the 4.0.1 support code.

There are four boss frmaes, not three.

Remove double space.

Merge the vehicle element into the core and fix a bug with party/raid units in vehicles being chain updated.

Drop out of RaidIcon:ForceUpdate() if the frame doesn't have a unit.

Bump TOC version to 1.5.6.

p3lim (2):

Vehicles still exists while the player has full control

Bump the layer to prevent interfering with backdrops

tekkub (1):

That can get racey

21 files changed, 505 insertions(+), 384 deletions(-)

Changes in 1.5.5:

Evilpaul (1):

ensure new power elements display corretly when in-vehicle

Trond A Ekseth (6):

Allow layouts to se the OnUpdate frequency through obj.onUpdateFrequency.

Use obj.onUpdateFrequency to check so we can change the value "on the fly".

Kill the OnClick handler on the aura icons.

Properly hide the RuneFrame so it doesn't repop after exiting a vehicle on CC.

Register PMC as we can't rely on the secure group header anymore.

Bump TOC version to 1.5.5.

8 files changed, 28 insertions(+), 33 deletions(-)

Changes in 1.5.4:

Trond A Ekseth (2):

Fix the frameref fail.

Bump TOC version to 1.5.4.

2 files changed, 2 insertions(+), 2 deletions(-)

Changes in 1.5.3:

Trond A Ekseth (9):

Stricten the register event validation so you can't register events to handlers that don't exist.

Require the event to be correct when validating powerType, so PEW updates and such can get through.

Now with less 7AM coding. :(

Add a oUF-headerType attribute.

Extend the guessUnit to support the party pet header as well.

Let the raid into the ready check fun.

Allow custom values for fadeTimer and finishedTimer.

Always send nil instead of rank and add a note to kill it in 1.6.x.

Bump TOC version to 1.5.3.

5 files changed, 48 insertions(+), 31 deletions(-)

Changes in 1.5.2:

Trond A Ekseth (4):

Use self.id and not self:GetID().

Feed guessUnit to the elements function as well.

Fix the damn ready check icon and work around the bugs caused by RegisterAttributeDriver.

Bump TOC version to 1.5.2.

3 files changed, 84 insertions(+), 15 deletions(-)

Changes in 1.5.1:

Trond A Ekseth (2):

Damn you XML! (and how vim auto-completes your tags)

Bump TOC version to 1.5.1.

2 files changed, 1 insertions(+), 2 deletions(-)

Changes in 1.5:

Evilpaul (28):

first commit

use a better name

initial version of functionality

typo

typo in name

consolidate into 1 update routine

remove hide option

add PreUpdate and PostUpdate functionality

some tidying up

make sure something exists before we try to use it

contain both indicator bars under .HealPrediction

Update to use the new override method

use short name for consistancy

use the new location for maxOverflow

use the correct health reference

set statusbar minmaxvalues at enable

adjust the minmax values on all events to ensure this works for targets

update version

use new return values from UnitGroupRolesAssigned

register Path as the update function

Add :ForceUpdate() support

addition of HolyPower element

addition of SoulShards element

addition of PhaseIcon element

change of power type name

change of power type name

addition of QuestIcon element

addition of EclipseBar element

Trond A Ekseth (127):

Kill :UpdateElement().

Don't check for custom Update functions on elements.

Update Assistant to the new override method.

Update Combat to the new override method.

Update CPoints to the new override method.

Update Happiness to the new override method.

Update Health to the new override method.

Update Leader to the new override method.

Update LFDRole to the new override method.

Update MasterLooter to the new override method.

Update Portrait to the new override method.

Update Power to the new override method.

Update PvP to the new override method.

Update Resting to the new override method.

Update RaidIcon to the new override method.

Update Threat to the new override method.

Remove the runeMap code as it currently does nothing.

Possible solution to the new initialConfigFunction requirements.

Use UNIT_POWER instead of UNIT_HAPPINESS.

Use UNIT_POWER and UNIT_MAXPOWER.

Use UNIT_POWER and UNIT_MAXPOWER.

Use UNIT_POWER instaed of UNIT_HAPPINESS.

Use UNIT_POWER instaed of UNIT_HAPPINESS.

Continue to support UNIT_HAPPINESS on live.

Now with two less syntax errors.

Remove unnecessary variable check.

Merge branch 'cc'

Merge branch 'cc-header'

Change :SpawnHeader() to work on both live and beta.

Clean up the generated names some.

Complain when the power statusbar is incorrectly parented.

Complain when the health statusbar is incorrectly parentend.

Remove validation of parents and remove :GetParent() usage.

Add :ForceUpdate() to Assistant.

Add :ForceUpdate() to Auras.

Remove use of :GetParent().

Add :ForceUpdate() to Castbar.

Fix syntax error.

Add :ForceUpdate() to Combat.

Remove unit argument from :ForceUpdate().

Add :ForceUpdate() to CPoints.

Add :ForceUpdate() to Happiness.

Use the correct variable.

Add :ForceUpdate() to Health.

Add :ForceUpdate() to Power.

Add :ForceUpdate() to Leader.

Add :ForceUpdate() to LFDRole.

Add :ForceUpdate() to MasterLooter.

Add :ForceUpdate() to Portrait.

Remove unit argument from :ForceUpdate().

Remove unit argument from :ForceUpdate().

Remove unit argument from :ForceUpdate().

Add :ForceUpdate() to PvP.

Add :ForceUpdate() to Resting.

Add :ForceUpdate() to RaidIcon.

Add :ForceUpdate() to Runes.

Add :ForceUpdate() to Threat.

Rename __parent to __owner.

Register UNIT_CONNECTION on CC to improve disconnected state.

Use UNIT_CONNECTION to update connected state.

Use UNIT_CONNECTION to refresh [status] and [offline].

Merge oUF_HealPrediction into oUF.

Load the heal prediction element.

Remove the fallback variable and assert.

Run a round of sed.

Tail call post update because we can.

Make :ForceUpdate() actually work.

Less defensive coding.

Run a round of sed.

Run a round of sed.

Fix :ForceUpdate().

Tail calls!

Fix the copy/paste error.

Check for holy power before updating.

Fix :ForceUpdate().

Check that the powertype is SOUL_SHARDS before updating.

Add missing :ForceUpdate() function to Happiness.

Add missing function argument.

Correctly set ForceUpdate for Raid Icons.

Use element and not self in ForceUpdate on the holy power element.

Add powerType to the argument list of happiness.

Use element and not self in ForceUpdate on the happiness element.

Allow powerType to be nil so happiness is correctly updated at login.

Allow powerType to be nil so holy power is correctly updated on login.

Allow powerType to be nil so the soul shard element is correctly updated on login.

Remove local.

Actually clean up the generated names.

Make party frames work with the latest beta patch.

Switch license back to MIT.

It's deficit, not defict.

Access unit through self.__owner in the frequent update function.

Don't style the main object spawned by a header if the attribute 'oUF-onlyProcessChildren' is defined.

Fix the sub-frames to work correctly, and some other stuff.

Remove 3.3.x support code.

Remove double newline.

Use the correct function for event registration.

Add missing commas.

Add a ReadyCheck element which mostly uses Blizzard's functions.

Add support for Clique.

Remove double newline.

Use a less generic name on the template.

Add a third argument to the style function which indicates if the frame was spawned from a header or not.

Support AddOn Development!

You have just downloaded by the author . If you like this AddOn why not consider supporting the author? This author has set up a donation account. Donations ensure that authors can continue to develop useful tools for everyone.