API Changes
Note; this list might be far from complete, I'm completely unaware of how accurate this is (pulled from exe strings)
Parameter Changes: 1/nil/0 changed to true/false across the API, examples: CheckButton:SetChecked(true/false) Texture:SetDesaturated(true/false) Code:
Old: Button:SetCooldown(start, duration, charges, maxCharges) Code:
Old: GameTooltip:SetHyperlink(link) Code:
Old: GetSpecializationSpells(specIndex[, isInspect[, isPet]]) Code:
Old: Tooltip:SetTalent(talentIndex[, isInspect[, groupIndex]]) Code:
Old: BNSendFriendInvite(battletag/email, noteText) Code:
Old: BNSendFriendInviteByID(ID, noteText) Code:
Old: C_Vignettes.GetVignetteInfoFromInstanceID(instanceID) Code:
Old: C_Vignettes.GetVignetteInstanceID(index) Code:
Old: CagePetByID(petID) Code:
Old: ClickVoidStorageSlot(slot, [button]) Code:
Old: DisableAddOn("character", index) Code:
Old: EnableAddOn("character", index) Code:
Old: LearnTalent(talentIndex) Code:
Old: LearnTalents(talentIndex1 [, talentIndex2, ...]) Code:
Old: PetCanBeReleased(petID) Code:
Old: PetIsCaptureable(petID) Code:
Old: PetIsHurt(petID) Code:
Old: PetIsLockedForConvert(petID) Code:
Old: PetIsRevoked(petID) Code:
Old: PetIsSlotted(petID) Code:
Old: PetIsSummonable(petID) Code:
Old: PetIsTradable(petID) Code:
Old: PickupPet(petID) Code:
Old: PickupTalent(talentindex) Code:
Old: PlaySound("sound", optional["SFX","Music","Ambience" or "Master"]) Code:
Old: RemoveTalent(talentIndex) Code:
Old: SetMapByID(mapID) Code:
Old: SetRaidDifficultyID(difficultyID) Code:
Old: SummonPetByGUID(petID) Code:
Old: UseContainerItem(index, slot[, target]) Code:
Old: UseVoidItemForTransmogrify(voidItemslot, inventorySlot) Code:
Old: QueryAuctionItems(name, minLevel, maxLevel, invTypeIndex, classIndex, subclassIndex, page, isUsable, qualityIndex, getAll) Code:
Old: StopSound(soundHandleID) |
Return Changes:
Code:
Old: player, bank, bags, voidStorage, slot, bag = EquipmentManager_UnpackLocation(location) Code:
Old: specID = GetArenaOpponentSpec(arenaUnitIndex) Code:
Old: commandName, binding1, binding2, ... = GetBinding(index, mode) Code:
Old: name, className, class, specID = GetChallengeBestTimeInfo(mapID, index, guildOnly) Code:
Old: name, groupType, isHeroic, isChallengeMode, toggleDifficultyID = GetDifficultyInfo(id) Code:
Old: id, name, description, icon, background, role, class = GetSpecializationInfoByID(specID) Code:
Old: id, name, description, icon, background, role = GetSpecializationInfo(specIndex [, isInspect [, isPet]]) Code:
Old: id, name, description, icon, background, role = GetSpecializationInfoForClassID(classID, index) Code:
Old: GetSpecializationInfoForSpecID(specID) Code:
Old: texture, itemCount, locked, isFiltered = GetGuildBankItemInfo(tabId, index) Code:
Old: name, glyphType, isKnown, icon, glyphID, link, subText = GetGlyphInfo(index) Code:
Old: guildLevel, guildXP, guildNumMembers, guildName = GetInspectGuildInfo(unit); Code:
Old: itemID = GetInventoryItemID(unit, slot); Code:
Old: isTransmogrified, canTransmogrify, cannotTransmogrifyReason, hasPending, hasUndo, visibleItemID, textureName = GetTransmogrifySlotInfo(index) Code:
Old: link, icon, charges = GetQuestLogSpecialItemInfo(questIndex) Code:
Old: distance = GetDistanceSqToQuest(index) Code:
Old: description, type, completed, quantity, requiredQuantity, characterName, flags, assetID, quantityString, criteriaID = GetAchievementCriteriaInfo(achievementID, index) Code:
Old: name, rank, icon, powerCost, isFunnel, powerType, castingTime, minRange, maxRange[/color] = GetSpellInfo(id) Code:
Old: skillName, skillType, numAvailable, isExpanded, altVerb, numSkillUps, indentLevel, showProgressBar, currentRank, maxRank, startingRank = GetTradeSkillInfo(skillIndex) Code:
Old: cooldown, isDayCooldown = GetTradeSkillCooldown(index); Code:
Old: itemID, textureName = GetVoidTransferDepositInfo(index) Code:
Old: itemID, textureName = GetVoidTransferWithdrawalInfo(index) Code:
Old: itemID, textureName, locked, recentDeposit, isFiltered = GetVoidItemInfo(index) Code:
Old: texture, itemCount, locked, quality, readable, lootable, link, isFiltered = GetContainerItemInfo(container, slot) Code:
Old: name, level, class, area, connected, status, note = GetFriendInfo(friendIndex) Code:
Old: texture, name, isTradeskillSpell, isSpellLearned = GetQuestLogRewardSpell() Code:
Old: texture, name, isTradeskillSpell, isSpellLearned = GetRewardSpell() Code:
Old: areaID = GetCurrentMapAreaID() Code:
Old: title, level, questTag, suggestedGroup, isHeader, isCollapsed, isComplete, isDaily, questID, startEvent, displayQuestID = GetQuestLogTitle(questIndex) Code:
Old: name, texture, offset, numSpells, isGuild, offSpecID = GetSpellTabInfo(index) Code:
Old: name, iconTexture, tier, column, selected, available = GetTalentInfo(talentIndex [, isInspect, talentGroup, inspectedUnit, classID]) Code:
Old: link = GetTalentLink(talentIndex[, isInspect, inspectClassID]) Code:
Old: name, description, textureIndex, x, y, mapLinkID, showInBattleMap, graveyardID, areaID, poiID, isObjectIcon = GetMapLandmarkInfo(index) Code:
Old: name, title, notes, enabled, loadable, reason, security = GetAddOnInfo(index or "name") Code:
Old: optionsTable = GetVideoOptions(value) Code:
Old: index, current, max, xp, gold, maxGold = GetGuildChallengeInfo(index) Code:
Old: name, typeID, subtypeID, minLevel, maxLevel, recLevel, minRecLevel, maxRecLevel, expansionLevel, groupID, textureFilename, difficulty, maxPlayers, description, isHoliday, repAmount, forceHide = GetLFGDungeonInfo(dungeonID) Code:
Old: text = GetBindingText(key, prefix, abbreviate) |
Please let me know if you find additional changes and I'll update the original posts.
|
GetQuestLogTitle no longer returns "isDaily" as a boolean, but "frequency" which needs to be compared against two constants representing daily or weekly values.
|
Changes in 18663:
Code:
Old: GameTooltip:SetHyperlink(link) |
GetMacroIcons
GetMacroIcons(table) will (sometimes?) populate numbers in the table instead of string for texture file path.
And we need to use texture:SetToFileData() for numbers instead of texture:SetTexture() like below: Code:
texture = GetSpellorMacroIconInfo(index); |
Might be temporary, at least seems like it.
Here is where they do this for future reference: https://github.com/tekkub/wow-ui-sou....lua#L412-L417 |
Changes in 18689:
Code:
Old: SetMapByID(mapID) |
Quote:
|
Quote:
It would also be nice if we could somehow access microdungeon maps without actually being inside of it. |
Changes from 18689 to 18716:
Code:
Old: name, groupType, isHeroic, isChallengeMode, toggleDifficultyID = GetDifficultyInfo(id) |
No changes in build 18738, but GetSpellInfo no longer returns empty strings on invalid parameters, now returns nil as intended.
|
`BankButtonIDToInvSlotID(id, isBag)` appears to have changed the values is accepts for `id`. Previously it was 5-11 (the bank bags' bag IDs), now it is 1-7 (the bank bags' logical indexes).
|
Changes in 18816:
Code:
Old: GetSpecializationSpells(specIndex[, isInspect[, isPet]]) |
Code:
name, title, notes, url, loadable, reason, security, newVersion = GetAddOnInfo(index) AddonList.lua: Code:
function AddonList_HasNewVersion() |
Quote:
This is how it looks in game (screenshots not from blizzard servers obviously): |
Am I correct that they also have the "Enabled" removed from GetAddOnInfo ()?
On the live servers are GetAddOnInfo () still following values: Code:
name, title, notes, enabled, loadable, reason, security = GetAddOnInfo(index or "name") |
Quote:
Code:
GetAddOnEnableState('character', index) |
Thanks I will try it.
|
Quote:
Code:
local enabled name - Name of the addon (name of the addon's folder and TOC file) (string) title - Title of the addon (from the Title header in the addon's TOC file) (string) I personally would use name because some people use different titles from the addon folder in their .toc files. |
I tested this myself yesterday ( with index numbers not names ) and there are 2 '1' values on addons that are loadable and enabled. The values listed in wowpedia for GetAddOnInfo function are still valid from my tests and in the order listed.
On my lowbies I don't have DBM enabled and those addons only listed the name, title and notes values. reason showed as nil for all my addons that I could see, I even tried enabling addons that had missing requirements. security showed as INSECURE for all addons whether enabled or not. there may be values after that but when checked manually they always appeared as nil. |
Quote:
|
Ugh, the change to GetAddOnInfo and related APIs (dropping support for querying by name) is so obnoxious... is there some official forum where Blizzard might actually see complaints about beta API changes? Having to loop over every single addon, query GetAddOnInfo, check the name, and then separately query GetAddOnEnableState is ridiculous. :mad:
|
Quote:
I joke about it all the time, but I wouldn't be surprised if I were to find out this is exactly what they do. |
This also has the implication that one can't call GetAddOnInfo and the like on Blizzard addons, not that I know of a reason why one would want that. I also don't find GetAddOnEnableState particularly useful. You could get this info from GetAddOnInfo's fifth return (named "reason" in previous posts in this thread). If reason is not "DISABLED" then the addon is enabled.
Apart from that the old behavior of GetAddOnInfo is easily achieved by creating an addon_name = addon_index dictionary, isn't it? I do believe this is just like how GetSpellInfo used to return empty strings instead of nil for non-existent spells - they'll change it back. |
Quote:
Addon is enabled on all characters: GetAddOnEnableState(nil, index) => 2 GetAddOnEnableState("Charname", index) => 2 Addon is only enabled on some characters, including the current one: GetAddOnEnableState(nil, index) => 1 GetAddOnEnableState("Charname", index) => 2 Addon is only enabled on some characters, but not on the current one: GetAddOnEnableState(nil, index) => 1 GetAddOnEnableState("Charname", index) => 0 Addon is not enabled on any characters: GetAddOnEnableState(nil, index) => 0 GetAddOnEnableState("Charname", index) => 0 The only real use I can think of for this information is in addon managers; the new in-game Blizzard addon manager is the same one that you can use at the character screen, including the "all/character" dropdown, though you can only choose "All" or the current character when using it in-game. Quote:
If all they wanted was to stop people from being able to disable the Blizzard_* addons, they should have just done that instead of breaking the whole API. |
Was IsAddonLoaded's usage changed as well?
|
Quote:
|
Quote:
|
It was more to emphasize that they're not getting rid of using addon names so changing to index seems eeerr, pointless.
|
Quote:
|
Quote:
|
From my experience tonight with Ackis Recipe List on the latest beta build (18833) the return values for GetAddOnInfo() are actually:
Lua Code:
Though I didn't actually check that newVersion or anything beyond existed. |
Ahh... I see why AddonLoader (among others) is now broken.
|
I want to be able to check if an addon is enabled without having to mess my code with loops on all my addons, so I made a library for this: https://github.com/Jaliborc/AddonList-1.0 (yeah, feels stupid to have such a small lib, but crappy APIs lead to crappy solutions). Just in case someone is interested.
|
Quote:
|
Quote:
|
Changes in 18837:
Code:
Old: GetAddOnInfo(index) |
Victory! \o/
|
Quote:
Blizz' still in desperate need of more of that... |
Quote:
|
All times are GMT -6. The time now is 11:17 AM. |
vBulletin © 2024, Jelsoft Enterprises Ltd
© 2004 - 2022 MMOUI