Patterns d’addon WoW Forever : Forever est un troisième client
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
Ce pilier fait partie du guide du développeur d’addons WoW Forever, avec l’aide-mémoire de l’API Forever, les pièges courants des addons générés par IA et l’addon de référence Forever Beacon.
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ère | Classic Era | Midnight | Forever |
|---|---|---|---|
| Monde | Monde d’origine | Extension actuelle | Monde d’origine, nouvelles zones, niveau maximum 60 |
| Code d’interface | API Classic | Mainline, 12.x | Famille Mainline, type de jeu Camelot |
| Interface | 11509 | 120100 | 16001 sur la bêta |
| Journal de combat | Ouvert aux addons | L’enregistrement de CLEU provoque des erreurs | Rapporté indisponible |
| Calculs de vie | Nombres ordinaires | Secret sous restrictions | Nombre secret observé sur la build 69913 |
WOW_PROJECT_ID | 2 | 1 | 18 (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.
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.
- Appelez l’API.
type()renvoie toujours un nombre, une chaîne ou un booléen. - Demander
issecretvalueavant de comparer, de brancher dessus ou de l’afficher. - Si elle est secrète, utilisez un widget.Sinon, affichez un libellé fixe.
- Ne faites pas confiance à
pcallpour 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.

Test à coller en jeu
/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ère | Verdict | Pourquoi |
|---|---|---|
| Sacs, banque, marchand, infobulles | À créer | Présente des données que l’interface affiche déjà |
| Journal des quêtes, repères de carte, notes d’itinéraire | À créer | C_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 prudence | Warcraft 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éer | L’exemple Forever Beacon sert de référence |
| Compteur de dégâts ou de soins | À éviter | Built-in meter; do not assume addon access to its restricted data |
| Packs WeakAuras Classic | Ne pas porter | Wowhead : le développement de WeakAuras s’est arrêté avant Midnight |
| Cadres de soins avec click casting | Attendre | Les secure snippets n’ont pas compilé sur 69913 ; peut-être un bug |
| Pagination des barres d’action via secure snippets | Attendre | Mê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_IDvalant 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.

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