Addon-Muster für WoW Forever: Forever ist ein dritter Client

Veröffentlicht am Aktualisiert am Beta-Berichte aus Build 1.60.1.69913

Teilen

Addon-Guide Seite 2 von 7

Forever teilt Mainlines UI. Auf Build 70338 ist seine Projekt-ID 18 (WOW_PROJECT_CAMELOT); vergleiche diese Konstante, prüfe die API des Features und teste erneut auf deinem aktuellen Client.

Frag unsere verschwitzte Zocker-KI zu Forever-Addon-Mustern

Secret Values, Camelot-Erkennung, Aura-Container, Einstellungsfenster und mehr

Alles, was unsere Guides abdecken. Die Antworten stammen von dieser Seite und aus unseren übrigen Guides, mit den echten Werten als Diagramm und verlinkten Guide-Abschnitten. Es ist KI, also prüfe die Quelle, bevor du zitierst.

Classic Era ist freizügig und alt. Midnight ist restriktiv und aktuell. Forever ist die ursprüngliche Welt mit der UI-Familie von Midnight. Schreib für diese Schnittmenge, sonst lädt das Addon nicht oder es lädt und meldet etwas Falsches.

Addon-API
Moderne API
API-Familie
Mainline 12.1.5
WOW_PROJECT_ID
18 (Camelot)
Spielergesundheit
Secret Number

Drei Clients, ein Fehler

Die Falle, in die Modelle und Entwickler am häufigsten tappen, ist es, Forever als Classic Era mit neuen Zonen zu behandeln oder als Midnight mit der alten Welt. Es ist keins von beidem.

BereichClassic EraMidnightForever
WeltUrsprüngliche WeltAktuelle ErweiterungUrsprüngliche Welt, neue Zonen, Obergrenze 60
UI-CodeClassic-APIMainline, 12.xMainline-Familie, Spieltyp Camelot
Interface1150912010016001 in der Beta
KampflogOffen für AddonsRegistrieren von CLEU erzeugt FehlerAls nicht verfügbar gemeldet
Rechnen mit GesundheitEinfache ZahlenSecret unter EinschränkungenSecret Number, gesehen in Build 69913
WOW_PROJECT_ID2118 (WOW_PROJECT_CAMELOT) auf Build 70338; 1 auf 69913 gemeldet

Die Interface-Nummern stammen aus der TOC-Tabelle des Warcraft Wiki, und die Änderung am Midnight-Kampflog stammt aus den API-Hinweisen des Wikis zu Patch 12.0.0. Die Beta-Zeilen in der Forever-Spalte sind Community-Tests.

Forever erkennen, ohne dich allein auf die Projekt-ID zu verlassen

Der ältere Bericht zu Build 69913 meldete WOW_PROJECT_ID = 1, den Mainline-Wert. Die aufbewahrte Probe vom 12. Oktober auf Build 70338 zeichnet stattdessen 18 auf, und Blizzards Client-Konstanten nennen ihn WOW_PROJECT_CAMELOT. Vergleiche diese benannte Konstante, wenn sie existiert, und prüfe dann die API, die dein Feature braucht. Blizzard sagte, der interne Name Camelot werde vor dem Launch umbenannt, also teste ihn erneut auf deinem Build.Quelle: Blizzards Camelot-Projektkonstanten, aufbewahrter Auszug von 70338, geprüft am 13. Okt. 2026; WFG-Probe erfasst am 12. Okt.. Der Spiegel kann einen späteren Build zeigen.

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())

Prüfe diese Probe anhand der API-Referenztabellen und der Fallen in Zwölf Fallen, die du vermeiden solltest, und führe sie in deinem Build aus, bevor du dich darauf verlässt.

Das aufbewahrte Beispiel des Warcraft Wiki kombiniert WOW_PROJECT_MAINLINE mit LE_EXPANSION_LEVEL_CURRENT == LE_EXPANSION_CLASSIC oder liest eine TOC-Spieltypvariable aus. Seine Mainline-Projekt-ID-Bedingung ist auf dem erfassten Client 70338 falsch. Mainline-UI-Architektur bedeutet keine Mainline-Projekt-ID. Das überarbeitete Beispiel wurde anhand der Quellen geprüft, nicht im Spiel getestet.

Die Secret-Pipeline

Midnight führte Secret Values ein, um Kampfautomatisierung zu begrenzen, und Blizzard sagte, dass Forever sie ebenfalls hat.

  1. Ruf die API auf.
    type() meldet weiterhin number, string oder boolean.
  2. Frage stellen issecretvalue
    bevor du vergleichst, verzweigst oder ausgibst.
  3. Ist der Wert secret, nimm ein Widget.
    Sonst zeig eine feste Beschriftung.
  4. Verlass dich bei geschützten Aktionen nicht auf pcall.

Du bekommst von dem Aufruf weiterhin einen Wert, mit seinem echten Typ. StatusBar:SetValue ist das Beispiel des Wikis für ein Widget, das Secrets akzeptiert. Pack eine geschützte Aktion nicht in pcall und halte sie für erledigt: Tester berichten, dass der Fehler stumm und hartnäckig sein kann.

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.

Release Notes zu Questie v12.0.1+v1.0.3 auf GitHub, mit „Added Forever client support“ an erster Stelle unter „New Features“ und Forever-Fixes darunter
Bild teilen: Release Notes zu Questie v12.0.1+v1.0.3 auf GitHub, mit „Added Forever client support“ an erster Stelle unter „New Features“ und Forever-Fixes darunter

In den Release Notes von Questie steht eine Korrektur, die Schutzmaßnahmen gegen die Manipulation von Secret Values in Forever hinzufügt.Quelle: Questie-Release-Notes auf GitHub, erfasst am 30. Sept. 2026.

Test zum Einfügen im Spiel

Chat-Befehl
/run local h = UnitHealth("player"); print(type(h), pcall(function() return h + 1 end))

In Build 69913 gab das number false aus. Ein false von pcall bedeutet, dass die Engine die Addition verweigert hat. Beispiele für Statusleisten findest du in den Code-Vorlagen und im herunterladbaren Beacon-Beispiel, prüfe sie dann in deinem Build.

Auras sind Container, keine Tabellen, die dir gehören

Blizzard hat gesagt, dass die Änderungen an AuraContainer und AuraButton aus 12.1.0 in Forever verfügbar sind und dass spätere UI-Änderungen sowohl in Standard als auch in Forever landen sollen. Die Midnight-Hinweise des Wikis kennzeichnen Aura-Daten als secret, solange Kampfeinschränkungen aktiv sind. Was sich bewährt: Lass die Aura-Frames von Blizzard entscheiden, was angezeigt wird, gestalte um, was sie dir liefern, und lies nie die Aura-Nutzdaten, um einen Spielzug zu entscheiden.

Was sich jetzt zu bauen lohnt

Wisse, was der Client erlaubt, bevor du ein Modell promptest oder alten Code portierst:

BereichUrteilWarum
Taschen, Bank, Händler, TooltipsBauenZeigt Daten, die die UI ohnehin zeigt
Questlog, Kartenmarkierungen, RoutennotizenBauenC_Map.SetUserWaypoint ist die sichere Markierung, nicht der Super-Track-Aufruf
Namensplaketten und EinheitengrafikenMit Vorsicht bauenWarcraft Forever: NAME_PLATE_UNIT_ADDED kann feuern, bevor die Einheit befüllt ist. Prüfe einen Moment später noch einmal
Secret-sicherer persönlicher StreifenBauenDas Forever-Beacon-Beispiel ist die Referenz
Schadens- oder HeilungsmeterNicht bauenBuilt-in meter; do not assume addon access to its restricted data
Classic-WeakAuras-PaketeNicht portierenWowhead: Die Entwicklung von WeakAuras endete vor Midnight
Click-Cast-HeilerframesAbwartenSecure Snippets ließen sich in Build 69913 nicht kompilieren; möglicherweise ein Bug
Aktionsleisten-Paging über SnippetsAbwartenDerselbe Kompilierfehler

Portierungsreihenfolge

Von Midnight

Füge 16001 zur Interface-Zeile hinzu oder liefere eine _Camelot.toc mit. Entferne jede Verzweigung, die Projekt-ID 1 als „das ist Midnight“ liest und Midnight-exklusive Funktionen einschaltet. Teste jeden Secret-Value-Pfad vor der Veröffentlichung noch einmal im Forever-Client.

Von 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.

Beta-Fehler gegenüber Design

Kennzeichne diese in deinen Patchnotes, damit Spieler nicht dein Addon verantwortlich machen:

  • Kompilierfehler bei Secure Snippets: WoW Forever Builds vermutet einen Bug.
  • SavedVariables werden nicht geladen: nach einem Neustart Mitte September gemeldet
  • WOW_PROJECT_ID von 1: historischer Bericht zu Build 69913.

Teste Snippets erneut, bevor du funktionierendes Click-Casting dauerhaft durch eine schwächere Lösung ersetzt. Spieler meldeten fehlende gespeicherte Daten, und eine Forenantwort vom 25. September sagt, Build 70009 lade sie wieder; teste erneut, bevor du Umgehungslösungen ergänzt. WoW Forever Builds ließ die Projekt-ID auf Build 69913 unklar. Die aufbewahrte Probe von 70338 zeichnet 18 auf, benannt als WOW_PROJECT_CAMELOT, obwohl Forever zur Mainline-Familie gehört. Teste jeden Build erneut; vergleiche die benannte Konstante und prüfe die APIs der Features.

Das Addon Compartment ersetzt den Minimap-Button

Bitte ein Modell um einen Umschaltknopf, und es greift zu einer Minimap-Icon-Bibliothek aus einem Classic-Era-Tutorial. Mainline hat eine schlankere Lösung: das Addon Compartment, ein Dropdown an der Minimap, das pro registriertem Addon einen Eintrag auflistet.Quelle: Addon Compartment, geprüft am 28. Sept. 2026.

Der Beta-Client enthält es. In Build 1.60.1.70009 lädt das TOC von Blizzard_Minimap AddonCompartment.lua für den Mainline-Spieltyp, und eine Nachbarzeile, die camelot ausschließt, zeigt, dass camelot als Mainline zählt.Gemeldet, Client-Datei gelesen Ein Eintrag auf einem echten Forever-Bildschirm ist weiterhin unbestätigt, wie die Compartment-Hinweise von Beacon betonen.

Registrierung per TOC oder per Lua

Drei TOC-Felder registrieren einen Eintrag ohne Lua-Aufruf: AddonCompartmentFunc für den Klick, dazu die optionalen AddonCompartmentFuncOnEnter und AddonCompartmentFuncOnLeave für den Tooltip. Der Client ruft die globalen Funktionen auf, die du nennst, und lädt vorher ein Load-on-Demand-Addon, falls nötig.

Ein Addon, das Beschriftung oder Icon zur Laufzeit ändert, nutzt stattdessen AddonCompartmentFrame:RegisterAddon und übergibt eine Tabelle mit text, icon und func. Laut Wiki ähnelt diese Tabelle der alten UIDropDownMenu-Button-Einrichtung, deshalb lassen sich Retail-Beispiele übertragen.

Wann ein Minimap-Button trotzdem sinnvoll ist

Ein eigener Minimap-Button bringt seine eigene gespeicherte Position und seinen eigenen Drag-Code mit, meist über eine Bibliothek. Ein Compartment-Eintrag braucht beides nicht, weil der Client das Menü verwaltet. Fang mit dem Compartment an. Dasselbe TOC lädt MinimapButtonTemplate weiterhin für camelot, ein echtes Minimap-Icon bleibt also möglich, wenn Spieler eines wollen.

Optionsfenster folgen demselben Wechsel

Einstellungen folgen derselben Regel: Schreib Mainline-Code, keine Classic-Vorlage. Laut Wiki wurde die Settings-API in Patch 10.0.0 neu gebaut, mit weiteren Breaking Changes in 11.0.2.Quelle: Settings-API, geprüft am 28. Sept. 2026. In der Beta definiert Blizzard_Settings.lua die Elemente Settings.RegisterAddOnCategory, Settings.RegisterAddOnSetting und Settings.OpenToCategory.Gemeldet, Client-Datei gelesen

RegisterAddOnCategory fügt deine Kategorie zum Optionsfenster des Spiels hinzu. RegisterAddOnSetting bindet eine Checkbox oder einen Schieberegler an einen Schlüssel in deiner SavedVariables-Tabelle, sodass der Klick den Wert schreibt, ohne dass du einen separaten Handler synchron halten musst. Die Vorlage für das Einstellungsfenster enthält eine funktionierende Checkbox mit Callback.

Optionsfenster von WoW Forever unter „Languages and Social“ mit dem Dropdown „Preferred Online Language“, das English, LatAm Spanish und Brazilian Portuguese auflistet
Bild teilen: Optionsfenster von WoW Forever unter „Languages and Social“ mit dem Dropdown „Preferred Online Language“, das English, LatAm Spanish und Brazilian Portuguese auflistet

Das Optionsfenster von WoW Forever, wie Blizzard es im Screenshot zu „Preferred Online Language“ gezeigt hat.Quelle: Blizzard, Deep Dive Panel Recap

Optionen über das Compartment öffnen

Ein Compartment-Klick kann Settings.OpenToCategory aufrufen, statt ein selbst gebautes Frame zu zeigen. In der Beta-Datei übergibt er an C_SettingsUtil.OpenSettingsPanel, eine Client-Funktion. Weder das Wiki noch diese Datei sagen, ob der Aufruf im Kampf funktioniert, also teste ihn im Kampf oder stelle ihn in eine Warteschlange bis PLAYER_REGEN_ENABLED, wie es Beacon tut.

Routen-Addons folgen demselben Client

Quest- und Routen-Addons sind die größte Zeile „Bauen“ in der Tabelle oben, und zwei Guide-Hersteller verkaufen sie bereits für Forever. RestedXP hat am 14. September 2026 Bestellungen für Forever geöffnet. Zygor Guides sagt, Elite-Mitglieder erhalten ihre Forever-Guides zum Launch. Beide laufen in diesem Client, also gelten dieselben Compartment- und Einstellungsregeln auch für sie.

Die Prompt-Vorlagen für Forever-Addons bauen beide Muster in den System-Prompt ein, damit ein Modell vor einer Bibliothek zum Compartment und zur Settings-API greift.

Wichtige Fakten

  • Addon-API GeändertForever nutzt die moderne Addon-API, mit den Kampfeinschränkungen von MidnightClassic: Classic Era behält die ältere API, bei der das Kampflog für Addons offen ist.
  • API-Familie GeändertTeilt die UI-Architektur von Mainline und „the vast majority of APIs available in 12.1.5“ (den weitaus größten Teil der in 12.1.5 verfügbaren APIs)
  • WOW_PROJECT_ID Geändert18 (WOW_PROJECT_CAMELOT) in der WFG-Probe vom 12. Oktober auf Build 70338; älterer Build 69913 meldete 1Classic: Classic Era gibt 2 (WOW_PROJECT_CLASSIC) zurück.
  • Kampflog EntferntCombatLogGetCurrentEventInfo wurde in der Beta als für Addons nicht verfügbar gemeldetClassic: Classic-Era-Addons lesen jedes Ereignis über COMBAT_LOG_EVENT_UNFILTERED.
  • Spielergesundheit GeändertUnitHealth kam als Secret Number zurück: type() sagt number, aber das Addieren von 1 schlägt fehlClassic: Classic Era liefert eine einfache Zahl, mit der Addons rechnen können.

Quellen

  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)