Dicebar / Raven

Raven add-on for World of Warcraft
9 stars 3 forks source link

Bug: r640 refuses to display anything. #58

Closed Dajova closed 7 months ago

Dajova commented 7 months ago

Doesnt display anything since latest update (r640). Reverting to r639 fixes it.


[string "@Raven/Main.lua"]:188: in function <Raven/Main.lua:186>
[string "@Raven/Main.lua"]:468: in function `AddTrackers'
[string "@Raven/Main.lua"]:1924: in function `UpdateTrackers'
[string "@Raven/Main.lua"]:1288: in function `Update'
[string "@Raven/Main.lua"]:948: in function <Raven/Main.lua:944>
[string "@Raven/Main.lua"]:979: in function `?'
[string "@Masque/Libs/CallbackHandler-1.0-8/CallbackHandler-1.0.lua"]:109: in function <...que/Libs/CallbackHandler-1.0/CallbackHandler-1.0.lua:109>
[string "=[C]"]: ?
[string "@Masque/Libs/CallbackHandler-1.0-8/CallbackHandler-1.0.lua"]:19: in function <...que/Libs/CallbackHandler-1.0/CallbackHandler-1.0.lua:15>
[string "@Masque/Libs/CallbackHandler-1.0-8/CallbackHandler-1.0.lua"]:54: in function `Fire'
[string "@ElvUI_Libraries/Core/Ace3/AceEvent-3.0-4/AceEvent-3.0.lua"]:120: in function <...UI_Libraries/Core/Ace3/AceEvent-3.0/AceEvent-3.0.lua:119>

Locals:
unitToken = "player"
index = 1
filter = "HELPFUL|PLAYER"
(*temporary) = nil
(*temporary) = nil
(*temporary) = "player"
(*temporary) = 1
(*temporary) = "HELPFUL|PLAYER"
(*temporary) = "attempt to call upvalue 'GetAuraDataByIndex' (a nil value)"
MOD = <table> {
 CheckTalent = <function> defined @Raven/Conditions.lua:325
 testOrder = <table> {
 }
 HexColor = <function> defined @Raven/Profile.lua:43
 UpdateInCombatBar = <function> defined @Raven/Cancel.lua:66
 modules = <table> {
 }
 Nest_SetShine = <function> defined @Raven/Nest.lua:1303
 GetValueFormat = <function> defined @Raven/Values.lua:833
 ReleaseBarGroup = <function> defined @Raven/Bars.lua:723
 CopyTable = <function> defined @Raven/Profile.lua:61
 ResetColorDefault = <function> defined @Raven/Profile.lua:480
 Nest_SetBarGroupLock = <function> defined @Raven/Nest.lua:973
 Nest_FormatTime = <function> defined @Raven/Nest.lua:1873
 SetInCombatBar = <function> defined @Raven/Cancel.lua:203
 LocalSpellNames = <table> {
 }
 GetExpireColor = <function> defined @Raven/Profile.lua:697
 UpdateInternalCooldowns = <function> defined @Raven/Main.lua:2145
 SetExpireColor = <function> defined @Raven/Profile.lua:685
 DefaultProfile = <table> {
 }
 ResetColorDefaults = <function> defined @Raven/Profile.lua:499
 RemoveMatchingTrackers = <function> defined @Raven/Main.lua:425
 Nest_CreateBar = <function> defined @Raven/Nest.lua:1074
 CheckSpec = <function> defined @Raven/Conditions.lua:380
 SetEnabledState = <function> defined @Masque/Libs/AceAddon-3.0/AceAddon-3.0.lua:420
 FinalizeBars = <function> defined @Raven/Bars.lua:161
 mountSpells = <table> {
 }
 Nest_SetLabelColor = <function> defined @Raven/Nest.lua:1279
 LoadCustomBars = <function> defined @Raven/Bars.lua:528
 Nest_DeleteAllBars = <function> defined @Raven/Nest.lua:1243
 Nest_AdjustColor = <function> defined @Raven/Nest.lua:1344
 UpdateTrackers = <function> defined @Raven/Main.lua:1896
 ldbi = <table> {
 }
 Nest_RegisterCallbacks = <function> defined @Raven/Nest.lua:683
 UnregisterAllEvents = <function> defined @Masque/Libs/CallbackHandler-1.0/CallbackHandler-1.0.lua:164
 InitializeBarGroup = <function> defined @Raven/Bars.lua:494
 Nest_SetBarGroupBorder = <function> defined @Raven/Nest.lua:898
 Nest_GetBarGroups = <function> defined @Raven/Nest.lua:796
 RemoveTrackers = <function> defined @Raven/Main.lua:410
 OptionsPanel = <function> defined @Raven/Main.lua:1131
 Nest_SetBarGroupBackdrop = <function> defined @Raven/Nest.lua:906
 DetectInternalCooldown = <function> defined @Raven/Main.lua:2127
 Nest_SetColors = <function> defined @Raven/Nest.lua:1262
 isVanilla = false
 InitializeSpellIDs = <function> defined @Raven/Profile.lua:141
 GetName = <function> defined @Masque/Libs/AceAddon-3.0/AceAddon-3.0.lua:275
 InitializeBuffTooltip = <function> defined @Raven/Main.lua:1471
 name = "Raven"
 ColorPalette = <table> {
 }
 SetConditionDefaults = <function> defined @Raven/Conditions.lua:852
 Nest_SetAlpha = <function> defined @Raven/Nest.lua:1294
 SaveBarGroupSettings = <function> defined @Raven/Bars.lua:525
 Print = <function> defined @ElvUI_Libraries/Core/Ace3/AceConsole-3.0/AceConsole-3.0.lua:50
 RegisterCooldownDefault = <function> defined @Raven/Profile.lua:410
 Nest_SetTimeColor = <function> defined @Raven/Nest.lua:1284
 Nest_DeleteBar = <function> defined @Raven/Nest.lua```
Road-block commented 7 months ago

r640 errors on Wrath Classic with

4x Raven/Main.lua:188: attempt to call upvalue 'GetAuraDataByIndex' (a nil value)
[string "@Raven/Main.lua"]:188: in function <Raven/Main.lua:186>
[string "@Raven/Main.lua"]:468: in function `AddTrackers'
[string "@Raven/Main.lua"]:1924: in function `UpdateTrackers'
[string "@Raven/Main.lua"]:1288: in function `Update'
[string "@Raven/Main.lua"]:948: in function <Raven/Main.lua:944>
[string "@Raven/Main.lua"]:979: in function `?'
[string "@Ace3/CallbackHandler-1.0-8/CallbackHandler-1.0.lua"]:109: in function <...Ons/Ace3/CallbackHandler-1.0/CallbackHandler-1.0.lua:109>
[string "=[C]"]: ?
[string "@Ace3/CallbackHandler-1.0-8/CallbackHandler-1.0.lua"]:19: in function <...Ons/Ace3/CallbackHandler-1.0/CallbackHandler-1.0.lua:15>
[string "@Ace3/CallbackHandler-1.0-8/CallbackHandler-1.0.lua"]:54: in function `Fire'
[string "@Ace3/AceEvent-3.0-4/AceEvent-3.0.lua"]:120: in function <Ace3/AceEvent-3.0/AceEvent-3.0.lua:119>

Locals:
unitToken = "player"
index = 1
filter = "HELPFUL|PLAYER"
(*temporary) = nil
(*temporary) = nil
(*temporary) = "player"
(*temporary) = 1
(*temporary) = "HELPFUL|PLAYER"
(*temporary) = "attempt to call upvalue 'GetAuraDataByIndex' (a nil value)"
MOD = <table> {
 CheckTalent = <function> defined @Raven/Conditions.lua:325
 testOrder = <table> {
 }
 HexColor = <function> defined @Raven/Profile.lua:43
 UpdateInCombatBar = <function> defined @Raven/Cancel.lua:66
 modules = <table> {
 }
 Nest_SetShine = <function> defined @Raven/Nest.lua:1303
 GetValueFormat = <function> defined @Raven/Values.lua:833
 ReleaseBarGroup = <function> defined @Raven/Bars.lua:723
 CopyTable = <function> defined @Raven/Profile.lua:61
 ResetColorDefault = <function> defined @Raven/Profile.lua:480
 Nest_SetBarGroupLock = <function> defined @Raven/Nest.lua:973
 Nest_FormatTime = <function> defined @Raven/Nest.lua:1873
 SetInCombatBar = <function> defined @Raven/Cancel.lua:203
 LocalSpellNames = <table> {
 }
 GetExpireColor = <function> defined @Raven/Profile.lua:697
 UpdateInternalCooldowns = <function> defined @Raven/Main.lua:2145
 SetExpireColor = <function> defined @Raven/Profile.lua:685
 DefaultProfile = <table> {
 }
 ResetColorDefaults = <function> defined @Raven/Profile.lua:499
 RemoveMatchingTrackers = <function> defined @Raven/Main.lua:425
 Nest_CreateBar = <function> defined @Raven/Nest.lua:1074
 CheckSpec = <function> defined @Raven/Conditions.lua:380
 SetEnabledState = <function> defined @Ace3/AceAddon-3.0/AceAddon-3.0.lua:420
 FinalizeBars = <function> defined @Raven/Bars.lua:161
 mountSpells = <table> {
 }
 Nest_SetLabelColor = <function> defined @Raven/Nest.lua:1279
 LoadCustomBars = <function> defined @Raven/Bars.lua:528
 Nest_DeleteAllBars = <function> defined @Raven/Nest.lua:1243
 Nest_AdjustColor = <function> defined @Raven/Nest.lua:1344
 UpdateTrackers = <function> defined @Raven/Main.lua:1896
 ldbi = <table> {
 }
 Nest_RegisterCallbacks = <function> defined @Raven/Nest.lua:683
 UnregisterAllEvents = <function> defined @Ace3/CallbackHandler-1.0/CallbackHandler-1.0.lua:164
 InitializeBarGroup = <function> defined @Raven/Bars.lua:494
 Nest_SetBarGroupBorder = <function> defined @Raven/Nest.lua:898
 Nest_GetBarGroups = <function> defined @Raven/Nest.lua:796
 RemoveTrackers = <function> defined @Raven/Main.lua:410
 OptionsPanel = <function> defined @Raven/Main.lua:1131
 Nest_SetBarGroupBackdrop = <function> defined @Raven/Nest.lua:906
 DetectInternalCooldown = <function> defined @Raven/Main.lua:2127
 Nest_SetColors = <function> defined @Raven/Nest.lua:1262
 isVanilla = false
 InitializeSpellIDs = <function> defined @Raven/Profile.lua:141
 GetName = <function> defined @Ace3/AceAddon-3.0/AceAddon-3.0.lua:275
 InitializeBuffTooltip = <function> defined @Raven/Main.lua:1471
 name = "Raven"
 ColorPalette = <table> {
 }
 SetConditionDefaults = <function> defined @Raven/Conditions.lua:852
 Nest_SetAlpha = <function> defined @Raven/Nest.lua:1294
 SaveBarGroupSettings = <function> defined @Raven/Bars.lua:525
 Print = <function> defined @Ace3/AceConsole-3.0/AceConsole-3.0.lua:50
 RegisterCooldownDefault = <function> defined @Raven/Profile.lua:410
 Nest_SetTimeColor = <function> defined @Raven/Nest.lua:1284
 Nest_DeleteBar = <function> defined @Raven/Nest.lua:1179
 ExpansionIsOrBelow = <function> def

GetAuraDataByIndex does not exist as an API on Wrath

Road-block commented 7 months ago

10.2.5 and the Classic (Era/Wrath) clients have diverged for what namespaces are available. So there's a couple solutions to this, neither is too clean.

  1. Abandon .isModernAPI check at the relevant method and check for the presence of API directly
    -- Functions for reading Auras
    local function GetAuraData(unitToken, index, filter)
    if C_UnitAuras and C_UnitAuras.GetAuraDataByIndex then
    return AuraUtil.UnpackAuraData(C_UnitAuras.GetAuraDataByIndex(unitToken, index, filter))
    else
    return UnitAura(unitToken, index, filter)
    end
    end
  2. Create a shim at the start of Main.lua like this
local GetAuraDataByIndex, UnpackAuraData
if C_UnitAuras and C_UnitAuras.GetAuraDataByIndex then
  GetAuraDataByIndex = C_UnitAuras.GetAuraDataByIndex
else
  GetAuraDataByIndex = function(unit, index, filter)
    return {UnitAura(unit,index,filter)}
  end
end
if AuraUtil and AuraUtil.UnpackAuraData then
  UnpackAuraData = AuraUtil.UnpackAuraData
else
  UnpackAuraData = function(aura)
    return unpack(aura)
  end
end
Road-block commented 7 months ago

Amendment to solution 1 above. The changes are correct but GetAuraData can't be a local function in Main.lua and also called in Cancel.lua

So it has to be made a method

-- Functions for reading Auras
function MOD:GetAuraData(unitToken, index, filter)
  if C_UnitAuras and C_UnitAuras.GetAuraDataByIndex then
    return AuraUtil.UnpackAuraData(C_UnitAuras.GetAuraDataByIndex(unitToken, index, filter))
  else
    return UnitAura(unitToken, index, filter)
  end
end

Then all the other references to GetAuraData also need to be changed to MOD:GetAuradata .. that's one sloppy update .. r640 😝

Road-block commented 7 months ago

This Cancel.lua#L123 is also a typo.

There is no MOD:CheckAuras method.

Should be MOD:CheckAura

Road-block commented 7 months ago

Ok.. since this got fairly long. Fixes for r640 in a list.

  1. Remove Main.lua#L37 Main.lua#L38

  2. Change Main.lua#L186 to

    function MOD:GetAuraData(unitToken, index, filter)
    if C_UnitAuras and C_UnitAuras.GetAuraDataByIndex and AuraUtil.UnpackAuraData then
        return AuraUtil.UnpackAuraData(C_UnitAuras.GetAuraDataByIndex(unitToken, index, filter))
    else
        return UnitAura(unitToken, index, filter)
    end
    end
  3. Replace all occurrences of = GetAuraData( with = MOD:GetAuraData( (7 replacements)

  4. Fix the typo in Cancel.lua#L123 by changing the line to

    local auraList = MOD:CheckAura("player", b.aura_id, true) -- CheckAura, not CheckAuras

and that should return Raven to a working condition.

Dicebar commented 7 months ago

@Dajova Thanks for the report!

@Road-block Thanks for the excellent fixes! They'll be rolling out shortly.