Patterns d’addon WoW Forever : Forever est un troisième client

Publié le Mis à jour le Rapports de la bêta de la build 1.60.1.69913

Partager

Guide des addons page 2 sur 7

Forever partage l’interface de Mainline. Sur la build 70338, son ID de projet est 18 (WOW_PROJECT_CAMELOT) ; comparez cette constante, vérifiez l’API de la fonctionnalité et testez à nouveau sur votre client actuel.

Demandez tout sur les patterns d’addons Forever à notre IA accro

Valeurs secrètes, détection de Camelot, conteneurs d’auras, panneaux d’options et plus

Tout ce que couvrent nos guides. Les réponses proviennent de cette page et du reste de nos guides, avec les vraies valeurs en graphique et les sections de guide liées. C’est une IA : vérifiez la source avant de la citer.

Classic Era est permissif et ancien. Midnight est restrictif et actuel. Forever est le monde d’origine qui tourne sur la famille d’interface de Midnight. Écrivez pour ce recoupement, sinon l’addon ne se charge pas, ou se charge et signale n’importe quoi.

API d’addon
API moderne
Famille d’API
Mainline 12.1.5
WOW_PROJECT_ID
18 (Camelot)
Vie du joueur
Nombre secret

Trois clients, une seule erreur

Le piège dans lequel tombent le plus souvent les modèles et les développeurs est de traiter Forever comme Classic Era avec de nouvelles zones, ou comme Midnight avec l’ancien monde. Ce n’est ni l’un ni l’autre.

CritèreClassic EraMidnightForever
MondeMonde d’origineExtension actuelleMonde d’origine, nouvelles zones, niveau maximum 60
Code d’interfaceAPI ClassicMainline, 12.xFamille Mainline, type de jeu Camelot
Interface1150912010016001 sur la bêta
Journal de combatOuvert aux addonsL’enregistrement de CLEU provoque des erreursRapporté indisponible
Calculs de vieNombres ordinairesSecret sous restrictionsNombre secret observé sur la build 69913
WOW_PROJECT_ID2118 (WOW_PROJECT_CAMELOT) sur la build 70338 ; 1 rapporté sur 69913

Les numéros d’interface proviennent du tableau TOC de la Warcraft Wiki, et le changement du journal de combat de Midnight vient des notes d’API du patch 12.0.0 du wiki. Les lignes bêta de la colonne Forever sont des tests de la communauté.

Détecter Forever sans se fier au seul Project ID

Le rapport de l’ancienne build 69913 indiquait WOW_PROJECT_ID = 1, la valeur Mainline. La sonde conservée du 12 octobre sur la build 70338 relève plutôt 18, et les constantes du client de Blizzard la nomment WOW_PROJECT_CAMELOT. Comparez cette constante nommée lorsqu’elle existe, puis vérifiez l’API nécessaire à votre fonctionnalité. Blizzard a indiqué que le nom interne Camelot serait changé avant le lancement ; testez-le donc à nouveau sur votre build.Source : constantes de projet Camelot de Blizzard, extrait conservé 70338 inspecté le 13 oct. 2026 ; sonde WFG capturée le 12 oct.. Le miroir peut afficher une build plus récente.

Detect.lua
local function IsForever()
    return WOW_PROJECT_CAMELOT ~= nil
        and WOW_PROJECT_ID == WOW_PROJECT_CAMELOT
end

-- Example capability: check the API your feature actually uses.
local canReadPreset = C_GameRules
    and type(C_GameRules.GetForeverExperiencePreset) == "function"

local function HasSecrets()
    return type(issecretvalue) == "function"
end

-- For logs only: 16001 on the beta. Do not hardcode it as the test.
local iface = select(4, GetBuildInfo())

Comparez cette sonde aux tableaux de référence de l’API et aux pièges de Douze pièges à éviter, et exécutez-la sur votre build avant de vous y fier.

L’exemple conservé du Warcraft Wiki associe WOW_PROJECT_MAINLINE à LE_EXPANSION_LEVEL_CURRENT == LE_EXPANSION_CLASSIC, ou lit une variable de type de jeu du TOC. Sa condition d’ID de projet Mainline est fausse sur le client 70338 capturé. L’architecture d’interface Mainline n’implique pas un ID de projet Mainline. L’exemple révisé a été vérifié dans les sources, pas testé en jeu.

Le pipeline des valeurs secrètes

Midnight a introduit les valeurs secrètes pour limiter l’automatisation du combat, et Blizzard a indiqué que Forever en a aussi.

  1. Appelez l’API.
    type() renvoie toujours un nombre, une chaîne ou un booléen.
  2. Demander issecretvalue
    avant de comparer, de brancher dessus ou de l’afficher.
  3. Si elle est secrète, utilisez un widget.
    Sinon, affichez un libellé fixe.
  4. Ne faites pas confiance à pcall pour les actions protégées.

Vous obtenez toujours une valeur de l’appel, avec son vrai type. StatusBar:SetValue est l’exemple du wiki d’un widget qui accepte les secrets. N’enveloppez pas une action protégée dans pcall en la considérant réglée : les testeurs rapportent que l’échec peut être silencieux et persistant.

Under the Warcraft Wiki's Midnight rules, addon code can store secrets, pass them to functions, and concatenate or string.format them. It cannot do math on them, compare them, test them as booleans, index them or use them as table keys. The rules block those operations; an attempt throws a Lua error right away. Warcraft Forever reports that printing a secret throws on Forever, so guard before you print.

Notes de version GitHub de Questie v12.0.1+v1.0.3, avec « Added Forever client support » en premier sous New Features et les correctifs Forever en dessous
Partager l’image : notes de version GitHub de Questie v12.0.1+v1.0.3, avec « Added Forever client support » en premier sous New Features et les correctifs Forever en dessous

Les notes de version de Questie mentionnent un correctif qui ajoute des garde-fous contre la manipulation des Secret Values dans Forever.Source : notes de version de Questie sur GitHub, capturées le 30 sept. 2026.

Test à coller en jeu

Commande de chat
/run local h = UnitHealth("player"); print(type(h), pcall(function() return h + 1 end))

Sur la build 69913, cela a affiché number false. Un false de pcall signifie que le moteur a refusé l’addition. Pour des exemples de barres d’état, voir les modèles de code et l’exemple Beacon téléchargeable, puis vérifiez-les sur votre build.

Les auras sont des conteneurs, pas des tables qui vous appartiennent

Blizzard a indiqué que les changements de AuraContainer et AuraButton de 12.1.0 sont disponibles sur Forever, et que les prochains changements d’interface devraient arriver à la fois sur Standard et sur Forever. Les notes Midnight du wiki signalent les données d’aura comme secrètes tant que les restrictions de combat sont actives. Ce qui tient la route : laisser les cadres d’aura de Blizzard décider de ce qu’ils affichent, habiller ce qu’ils fournissent, et ne jamais lire la charge utile d’aura pour décider d’une action.

Ce qui vaut la peine d’être créé maintenant

Sachez ce que le client autorise avant de solliciter un modèle ou de porter du vieux code :

CritèreVerdictPourquoi
Sacs, banque, marchand, infobullesÀ créerPrésente des données que l’interface affiche déjà
Journal des quêtes, repères de carte, notes d’itinéraireÀ créerC_Map.SetUserWaypoint est le repère sûr, pas l’appel de super-suivi
Plaques de nom et illustrations d’unitésÀ créer avec prudenceWarcraft Forever : NAME_PLATE_UNIT_ADDED peut se déclencher avant que l’unité soit renseignée. Revérifiez un instant plus tard
Bande personnelle sûre face aux secretsÀ créerL’exemple Forever Beacon sert de référence
Compteur de dégâts ou de soinsÀ éviterBuilt-in meter; do not assume addon access to its restricted data
Packs WeakAuras ClassicNe pas porterWowhead : le développement de WeakAuras s’est arrêté avant Midnight
Cadres de soins avec click castingAttendreLes secure snippets n’ont pas compilé sur 69913 ; peut-être un bug
Pagination des barres d’action via secure snippetsAttendreMême échec de compilation

Ordre de portage

Depuis Midnight

Ajoutez 16001 à la ligne d’interface, ou fournissez un _Camelot.toc. Supprimez toute branche qui lit l’ID de projet 1 comme « c’est Midnight » et active des fonctions réservées à Midnight. Retestez chaque chemin de valeurs secrètes sur le client Forever avant la publication.

Depuis Classic Era

Treat it as a new addon that may keep your SavedVariables schema. Replace global item and spell calls with C_Item and C_Spell and their load events. The retained community notes report combat-log access unavailable. Test listener registration and reader results on your target build before you rely on the feature or delete it. Replace PlaySoundFile on interface .ogg paths with PlaySound and a SOUNDKIT ID. Replace faction checks that use UnitIsEnemy. Then read the file again for any math on health. For starter code, see the copy-paste code templates.

Défauts de la bêta et conception

Indiquez-les dans vos notes de patch pour que les joueurs n’accusent pas votre addon :

  • Échec de compilation des secure snippets : WoW Forever Builds soupçonne un bug.
  • SavedVariables qui ne se chargent pas : rapporté après un redémarrage à la mi-septembre
  • WOW_PROJECT_ID valant 1 : rapport historique de la build 69913.

Testez à nouveau les snippets avant de remplacer définitivement un click-cast fonctionnel par une version moins efficace. Des joueurs ont signalé la disparition des données sauvegardées, et une réponse sur le forum du 25 septembre indique que la build 70009 les charge à nouveau ; testez à nouveau avant d’ajouter des contournements. WoW Forever Builds n’avait pas clarifié l’ID de projet sur la build 69913. La sonde conservée de 70338 relève 18, nommé WOW_PROJECT_CAMELOT, bien que Forever reste dans la famille Mainline. Testez à nouveau chaque build ; comparez la constante nommée et vérifiez les API des fonctionnalités.

L’Addon Compartment remplace le bouton de la minicarte

Demandez un bouton à bascule à un modèle et il ira chercher une bibliothèque d’icône de minicarte issue d’un tutoriel Classic Era. Mainline a une option plus légère : l’addon compartment, un menu déroulant attaché à la minicarte qui répertorie une entrée par addon enregistré.Source : Addon compartment, vérifié le 28 sept. 2026.

Le client bêta l’inclut. Dans la build 1.60.1.70009, le TOC de Blizzard_Minimap charge AddonCompartment.lua pour le type de jeu mainline, et une ligne voisine qui exclut camelot indique que camelot compte comme mainline.Rapporté, fichier du client lu Une entrée sur un écran Forever en direct reste non confirmée, comme le soulignent les notes de compartment de Beacon.

Enregistrement via le TOC ou via Lua

Trois champs TOC enregistrent une entrée sans appel Lua : AddonCompartmentFunc pour le clic, plus AddonCompartmentFuncOnEnter et AddonCompartmentFuncOnLeave, facultatifs, pour l’infobulle. Le client appelle les fonctions globales que vous nommez, et charge d’abord un addon à chargement à la demande si nécessaire.

Un addon qui change son libellé ou son icône à l’exécution utilise plutôt AddonCompartmentFrame:RegisterAddon, en passant une table avec text, icon et func. Le wiki précise que cette table ressemble à l’ancienne configuration de bouton UIDropDownMenu, donc les exemples Retail s’appliquent.

Quand un bouton de minicarte garde son sens

Un bouton de minicarte personnalisé apporte sa propre position sauvegardée et son code de glissement, généralement via une bibliothèque. Une entrée de compartment n’a besoin ni de l’un ni de l’autre, car le client gère le menu. Commencez par le compartment. Le même TOC charge toujours MinimapButtonTemplate pour camelot : une vraie icône de minicarte reste donc possible si les joueurs en demandent une.

Les panneaux d’options suivent le même changement

Les paramètres suivent la même règle : écrivez du code Mainline, pas un modèle Classic. Selon le wiki, l’API Settings a été refondue dans le patch 10.0.0, avec d’autres changements cassants dans 11.0.2.Source : Settings API, vérifié le 28 sept. 2026. Le Blizzard_Settings.lua de la bêta définit Settings.RegisterAddOnCategory, Settings.RegisterAddOnSetting et Settings.OpenToCategory.Rapporté, fichier du client lu

RegisterAddOnCategory ajoute votre catégorie à la fenêtre d’options du jeu. RegisterAddOnSetting lie une case à cocher ou un curseur à une clé de votre table de variables sauvegardées, si bien que le clic écrit la valeur sans gestionnaire séparé à synchroniser. Le modèle de panneau de paramètres contient une case à cocher fonctionnelle avec un rappel.

Fenêtre « Options » de WoW Forever sur « Languages and Social », avec la liste déroulante « Preferred Online Language » proposant English, LatAm Spanish et Brazilian Portuguese
Partager l’image : fenêtre « Options » de WoW Forever sur « Languages and Social », avec la liste déroulante « Preferred Online Language » proposant English, LatAm Spanish et Brazilian Portuguese

La fenêtre d’options de WoW Forever, telle que Blizzard l’a montrée dans sa capture d’écran de la langue en ligne préférée.Source : Blizzard, Deep Dive Panel Recap

Ouvrir les options depuis le compartment

Un clic sur le compartment peut appeler Settings.OpenToCategory au lieu d’afficher un cadre que vous avez créé. Dans le fichier de la bêta, il passe la main à C_SettingsUtil.OpenSettingsPanel, une fonction du client. Ni le wiki ni ce fichier n’indiquent si l’appel fonctionne en combat : testez-le en combat, ou mettez-le en file d’attente jusqu’à PLAYER_REGEN_ENABLED, comme le fait Beacon.

Les addons d’itinéraire suivent le même client

Les addons de quêtes et d’itinéraires forment la plus grande ligne « Build » du tableau ci-dessus, et deux créateurs de guides les vendent déjà pour Forever. RestedXP a ouvert les commandes Forever le 14 septembre 2026. Zygor Guides indique que les membres Elite obtiendront ses guides Forever au lancement. Les deux fonctionnent dans ce client, donc les mêmes règles de compartment et de paramètres s’appliquent.

Les modèles de prompts pour les addons Forever intègrent ces deux patterns dans le prompt système, afin qu’un modèle privilégie le compartment et l’API Settings plutôt qu’une bibliothèque.

Faits clés

  • API des addons ModifiéeForever utilise l’API moderne des addons, avec les restrictions de combat de MidnightClassic : Classic Era conserve l’ancienne API, avec le journal de combat ouvert aux addons.
  • Famille d’API ModifiéePartage l’architecture d’interface Mainline et "the vast majority of APIs available in 12.1.5" (« la grande majorité des API disponibles dans cette version »)
  • WOW_PROJECT_ID Modifié18 (WOW_PROJECT_CAMELOT) dans la sonde WFG du 12 octobre sur la build 70338 ; l’ancienne build 69913 renvoyait 1 selon les rapportsClassic : Classic Era renvoie 2 (WOW_PROJECT_CLASSIC).
  • Journal de combat SuppriméCombatLogGetCurrentEventInfo serait indisponible pour les addons sur la bêtaClassic : les addons de Classic Era lisent chaque événement via COMBAT_LOG_EVENT_UNFILTERED.
  • Vie du joueur ModifiéUnitHealth est revenu comme un nombre secret : type() indique number, mais ajouter 1 échoueClassic : Classic Era renvoie un nombre simple sur lequel les addons peuvent faire des calculs.

Sources

  1. World of Warcraft Developer Q&A (September 17 stream), add-on answer at 01:20:52Blizzard Entertainment (YouTube)
  2. WoW: Forever Will Have Addon Changes from MidnightWowhead
  3. What the WoW Forever beta breaks for addons: secret health values, dead secure snippets, new APIsWoW Forever Builds
  4. AddonsWarcraft Forever
  5. TOC formatWarcraft Wiki
  6. WOW_PROJECT_IDWarcraft Wiki
  7. Secret ValuesWarcraft Wiki
  8. Patch 12.0.0/API changesWarcraft Wiki
  9. WOWF Beta: Addon SavedVariables appear to write correctly to disk but are not restored at startupWorld of Warcraft Forums (player bug report)
  10. Addon compartmentWarcraft Wiki
  11. Settings APIWarcraft Wiki
  12. World of Warcraft Forever guides are up for order nowRestedXP
  13. Zygor's World of Warcraft: Forever guides launching this NovemberZygor Guides
  14. Blizzard client source: ProjectConstants.lua (retained build 70338; mirror may change)Blizzard Entertainment (source mirrored by Gethe)