Patch 10.2.7/API changes

From Warcraft Wiki
Jump to navigation Jump to search

Summary

  • The client now supports comma-delimited Interface versions, allowing addons to declare a TOC file as being compatible with multiple versions or flavors of the game at once.
  • The C_ChatInfo.SendAddonMessage function now more aggressively throttles all addon traffic on a per-prefix level. See Addon messaging changes for more details.
  • The TextStatusBar FrameXML utility has been converted to a mixin. Global functions are retained for compatibility, but will be removed in Patch 11.0.0.
  • The loading of deprecation scripts is now controlled by a new loadDeprecationFallbacks CVar. This CVar defaults to 1 (enabled), and will reset to the default state upon a client restart.
  • The client now emits a Lua warning for a "Duplicate File Load" if an addon loads the same file multiple times in its TOC or XML files.
  • (May 16 2024) The C_AddOns.DisableAddOn function can no longer be used to disable secure Blizzard addons.

Resources

Breaking changes

  • The pet stable has been overhauled. Some previously global API functions have moved to the C_StableInfo namespace, and others have been removed.
  • The FontInstance:SetJustifyH and FontInstance:SetJustifyV functions now more strictly validate inputs and will no longer permit "MIDDLE" to be used for horizontal justification, or "CENTER" for vertical.

Addon messaging changes

The C_ChatInfo.SendAddonMessage API and its logged variant now aggressively throttle traffic on all chat types, including whispers. The details of this restriction appear to match previously implemented changes for party and raid communications.

  • Each registered prefix is given an allowance of 10 addon messages that can be sent.
  • Each message sent on a prefix reduces this allowance by 1.
  • If the allowance reaches zero, further attempts to send messages on the same prefix will fail, returning Enum.SendAddonMessageResult.AddonMessageThrottle to the caller.
  • Each prefix regains its allowance at a rate of 1 message per second, up to the original maximum of 10 messages.
  • This restriction does not apply to whispers outside of instanced content.

This restriction does not mean that the global communications throttle is removed. If too much data is being sent simultaneously on separate prefixes, then the client may still be disconnected. For this reason, it is strongly recommended to continue using ChatThrottleLib or AceComm-3.0.

Due to the way that the deprecation wrapper for these APIs has been handled, the C APIs are replaced by Lua functions that shift the enum result to the second return position. A forward-compatible way to reliably access the enum return value is to use a negative select index to grab the last return value.

local result = select(-1, C_ChatInfo.SendAddonMessage(...))

Consolidated changes

Global API

10.2.6 (54205) → 10.2.7 (55664) Jul 15 2024
Added (43) Removed (12)
C_ActionBar.GetSpell
C_AreaPoiInfo.GetDragonridingRacesForMap
C_ChatInfo.IsTimerunningPlayer
C_Club.SetCommunityID
C_ClubFinder.IsCommunityFinderEnabled
C_EncounterJournal.InitalizeSelectedTier
C_Item.GetItemGemID
C_Item.GetItemInventorySlotKey
C_Item.GetItemLearnTransmogSet
C_Item.GetItemNumAddedSockets
C_Item.GetItemNumSockets
C_LFGInfo.CanPlayerUseScenarioFinder
C_LFGList.CanCreateScenarioGroup
C_LFGList.CreateScenarioListing
C_LFGList.GetAdvancedFilter
C_LFGList.GetApplicantBestDungeonScore
C_LFGList.SaveAdvancedFilter
C_LFGList.SetSearchToScenarioID
C_PerksProgram.IsAttackAnimToggleEnabled
C_PerksProgram.IsMountSpecialAnimToggleEnabled
C_PetInfo.PetAbandon
C_PetInfo.PetRename
C_QuestLog.IsQuestFromContentPush
C_QuestLog.UpdateCampaignHeaders
C_Reincarnation.GetReincarnatingCharacter
C_Reincarnation.IsReincarnating
C_Reincarnation.StartReincarnation
C_Reincarnation.StopReincarnation
C_StableInfo.ClosePetStables
C_StableInfo.GetActivePetList
C_StableInfo.GetStabledPetList
C_StableInfo.GetStablePetFoodTypes
C_StableInfo.GetStablePetInfo
C_StableInfo.IsAtStableMaster
C_StableInfo.IsPetFavorite
C_StableInfo.PickupStablePet
C_StableInfo.SetPetFavorite
C_StableInfo.SetPetSlot
C_TooltipInfo.GetItemByItemModifiedAppearanceID
C_Transmog.GetAllSetAppearancesByID
CanShowSetRoleButton
issecurevalue
PlayerGetTimerunningSeasonID
C_ChatInfo.RegisterAddonMessagePrefix
  # ret 1: successfulRequest -> result
C_ChatInfo.SendAddonMessage
  # ret 1: success -> result
C_ChatInfo.SendAddonMessageLogged
  # ret 1: success -> result
C_ClassTalents.CanChangeTalents
  # ret 3: changeError, Nilable: false -> true
C_ClassTalents.LoadConfig
  # ret 2: changeError, Nilable: false -> true
C_LFGList.Search
  + arg 6: advancedFilter
C_PartyInfo.DoCountdown
  + ret 1: success
C_WorldLootObject.IsWorldLootObject
  # arg 1: nameplateString -> unitToken
C_WorldLootObject.OnWorldLootObjectClick
  # arg 1: nameplateString -> unitToken
StartAttack
  # arg 1: name, Default: 0
UnitPosition
  # ret 1: x -> positionX
  # ret 2: y -> positionY
  # ret 3: z -> positionZ

Widgets

Added (4) Removed (1)
FontInstance:GetJustifyH
  # ret 1: justifyH, Type: TBFStyleFlags -> JustifyHorizontal
FontInstance:GetJustifyV
  # ret 1: justifyV, Type: TBFStyleFlags -> JustifyVertical
ScriptRegion:GetPoint
  + arg 2: resolveCollapsed
ScriptRegion:GetPointByName
  + arg 2: resolveCollapsed
FontInstance:SetJustifyH
  # arg 1: justifyH, Type: TBFStyleFlags -> JustifyHorizontal
FontInstance:SetJustifyV
  # arg 1: justifyV, Type: TBFStyleFlags -> JustifyVertical

Events

Added (11) Removed (2)
PET_FORCE_NAME_DECLENSION
  + petNumber
TRADE_SKILL_FAVORITES_CHANGED
  + recipeSpellID

CVars

Added (11) Removed (1)
addonLoadDebuggingCVar: addonLoadDebugging (Debug)
Default: 0
0: Disable addon load logging (Default), 1: Enable addon load logging to AddOnLoad.log.
disableUserAddonsByDefaultCVar: disableUserAddonsByDefault (Game)
Default: 0
Setting this will result in newly installed addons to be disabled by default
dragonRidingRacesFilterCVar: dragonRidingRacesFilter (Game)
Default: 0, Scope: Character
If enabled, dragonriding races will display on the world map at zone level.
lfgListAdvancedFilterMinRatingCVar: lfgListAdvancedFilterMinRating (Game)
Default: 0, Scope: Account
Minimum mythic plus rating of the leader of the group to find
lfgListAdvancedFiltersCVar: lfgListAdvancedFilters (Game)
Default: 0, Scope: Account
Advanced LFG filters for dungeons that are booleans
lfgListAdvancedFiltersActivitiesCVar: lfgListAdvancedFiltersActivities (Game)
Scope: Account
list of activity IDs to filter for
loadDeprecationFallbacksCVar: loadDeprecationFallbacks (Game)
Default: 1
When enabled, Deprecation_* addons are loaded to provide fallbacks for deprecated script APIs.
petStableShowExoticOnlyCVar: petStableShowExoticOnly (Game)
Default: 0, Scope: Character
Filter value for hunter pet stable. Will only show exotic pets in stable if true
petStableSortCVar: petStableSort (Game)
Default: 1, Scope: Character
Sorting value for the hunter pet stable
seenTimerunningFirstLoginPopupCVar: seenTimerunningFirstLoginPopup
Default: 0
GamePadPlunderstormDefaultsCommand: GamePadPlunderstormDefaults (Game)
Set specific GamePad cvars to better default values for Plunderstorm
minimapTrackedInfov2CVar: minimapTrackedInfov2

Enums

Enum.AuctionHouseFilter
  + CurrentExpansionOnly
Enum.BattlePetSources
  + TradingPost
Enum.CurrencyDestroyReason
  + Script
Enum.CurrencyFlagsB
  + CurrencyBScaleMaxQuantityBySeasonWeeks
Enum.CurrencyGainFlags
  + Autotracking
Enum.GossipNpcOption
  + ForgeMaster
Enum.ItemGemColor
  + FutureUse
Enum.ItemSocketType
  + FutureUse
Enum.JournalInstanceFlags
  + DoNotDisplayInstance
Enum.LFGListFilter
  + Timerunning
  + CurrentExpansion
  + CurrentSeason
  + NotCurrentSeason
Enum.PlayerInteractionType
  + ForgeMaster
Enum.PowerType
  + Balance
Enum.TooltipDataLineType
  + GemSocketEnchantment
Enum.TransmogSource
  + TradingPost

Structures

BNetGameAccountInfo
  + timerunningSeasonID
BestDungeonScoreMapInfo
  + bestRunDurationMs
  + bestLevelIncrement
ClubMemberInfo
  + timerunningSeasonID
DigSiteMapInfo
  + poiBlobID
GroupFinderActivityInfo
  + isHeroicActivity
  + isNormalActivity
HTMLContentNode
  #: align, Type: TBFStyleFlags -> JustifyHorizontal
LfgSearchResultData
  + leaderBestDungeonScoreInfo
PerksVendorItemInfo
  + doesNotExpire
  + mountTypeName
QuestInfo
  + isAbandonOnDisable
WhoInfo
  + timerunningSeasonID