WoW Forever Addon-Entwicklung: Addons mit KI schreiben
Forever-Addons nutzen die moderne Mainline-API, und das Warcraft Wiki nennt für die Beta Interface 16001. Weise dein KI-Modell zuerst ein, sonst schreibt es Aufrufe wie GetSpellInfo, die in Build 69913 fehlten.
Frag unsere verschwitzte Zocker-KI zur Forever-Addon-Entwicklung
Interface 16001, Secret Values, C_Spell-Änderungen, System-Prompts 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.
Bevor ein Sprachmodell Code für World of Warcraft: Forever schreibt, braucht es Vorgaben, die die auswendig gelernten Classic-Era-Gewohnheiten fernhalten: Forever verbindet das ursprüngliche Azeroth-Setting mit dem modernen Mainline-Interface.
- TOC-Interface
- 16001
- Launch
- Nov 4, 2026
- API-Familie
- Mainline 12.1.5
- Getesteter Beta-Build
- 1.60.1.69913
Das Problem
Frag ein Modell nach einem WoW-Addon, und es schreibt Code aus der Classic-Ära. Auf Beta-Build 1.60.1.69913 fanden Tester bei WoW Forever Builds heraus, dass GetSpellInfo und GetItemInfo fehlen, WOW_PROJECT_ID den Mainline-Wert zurückgibt und die Spielergesundheit als Secret Value zurückkommt, mit dem Addons weder rechnen noch vergleichen können. Warcraft Forever meldet, dass CombatLogGetCurrentEventInfo für Addons nicht verfügbar ist. Neuere Builds folgten (1.60.1.70009 am 23. September). Die aufbewahrte Probe vom 12. Oktober auf 1.60.1.70338 zeichnet die Projekt-ID 18 auf, also teste jede Beobachtung erneut und behalte ihre Build-Nummer bei.
So nutzt du diesen Guide
Gib dem Modell ausdrückliche Vorgaben, bevor es etwas generiert. Die Muster der Client-Architektur zeigen, wie sich Forever von Classic Era und Midnight unterscheidet. Der API-Migrations-Spickzettel enthält die Signaturen von C_Spell und C_Item. Die häufigen KI-Stolperfallen listen typische Modellfehler auf. Starte mit den Startdateien, kopiere aus der Addon-Prompt-Bibliothek oder sieh dir das Forever-Beacon-Testaddon an, ein unbestätigtes Referenzbeispiel.
Für eine konkrete Aufgabe springe zur UI-API für den aktuellen Regelsatz, zu Funktionen mit mehreren Befehlen, Nachrichtenbefehlen, Popup-Nachrichten oder zum Sound-ID-Cheat-Sheet. Jedes Beispiel nennt, was geprüft wurde und was noch einen Test im Spiel braucht.
Das Projekt-ID-Update vom 13. Oktober zitiert den aufbewahrten Client-Auszug von 70338 und die WFG-Probe vom 12. Oktober. Verlinkte Quellenspiegel können einen späteren Build zeigen.
Die goldenen Regeln
Wende diese zehn Regeln auf jeden KI-Entwurf an, der WoW Forever als Ziel hat. Midnight-Guides lassen die Regeln 3, 6, 7 und 8 weg, weil sie nur für die Forever-Beta gelten.
01. Interface: 16001
Ein reines Forever-Addon deklariert ## Interface: 16001, den Wert der Forever Beta in der TOC-Tabelle des Warcraft Wiki. Classic Era nutzt 11509 und Midnight 120100. Um ein Paket für mehrere Clients auszuliefern, nutze eine durch Kommas getrennte Interface-Zeile, eine _Camelot.toc-Datei (das Forever-Suffix des Wikis) oder eine _Mainline.toc, die Midnight und Forever teilen. Teste erneut, wenn sich die Nummer zum Launch ändert.
02. Lua 5,1
WoW nutzt ein modifiziertes Lua 5,1. Kein goto, kein //, keine bitweisen Operatoren und kein _ENV. Bitweise Arbeit nutzt die Bibliothek bit (bit.band, bit.bor, bit.lshift). Laut Wiki fehlen die Bibliotheken für Betriebssystem und Datei-I/O, und seine Funktionsliste lässt require, dofile und loadfile aus. Die Datei .toc ist dein Modul-Loader.
03. Mainline-Familie, nicht Classic
Blizzard sagte im WoW-UI-Discord, Forever teile die UI-Architektur von Mainline, „including the vast majority of APIs available in 12.1.5“, und die Addon-Beschränkungen von Midnight, Secrets eingeschlossen, seien aktiv (zitiert von Wowhead). Der Forever-Spieltyp hieß Camelot, und der Name soll sich vor dem Launch ändern. Im Q&A-Stream vom 17. September sagten die Entwickler: „we did opt for the modern API approach.“ Portiere ein Midnight-Addon, nicht ein Classic-Kampfaddon, von dem du hoffst, dass es funktioniert.
04. C_-Namespaces
In Build 69913 fehlten GetSpellInfo, GetItemInfo, GetSpellBookItemName, GetNumTalentTabs, GetTalentInfo und GetNumSkillLines. C_Spell.GetSpellInfo gibt eine Tabelle zurück; C_Item.GetItemInfo gibt dieselbe Werteliste zurück wie das alte Global. Beide geben nil zurück, bis der Eintrag im Cache liegt. Prüfe auf nil, fordere das Laden an (C_Spell.RequestLoadSpellData, C_Item.RequestLoadItemDataByID) und warte auf das Ergebnis-Event.
05. Alles in einen Namespace
Jede Datei beginnt mit local addonName, ns = .... Geteilter Zustand hängt an ns. Die einzigen Globals, die du deklarieren solltest, sind SavedVariables, Slash-Command-Einträge und die im TOC genannten Addon-Compartment-Callbacks. Ein Frame mit dem Namen MainFrame wird zum Global; benenne ihn nach deinem Addon oder übergib nil.
06. Events statt Kampflog
Nutze einen Frame, ein OnEvent-Skript und eine Tabelle mit Handlern. Nutze RegisterUnitEvent, wenn du nur den Spieler beobachtest. In Midnight löst das Registrieren von COMBAT_LOG_EVENT_UNFILTERED einen Fehler aus, und Warcraft Forever meldet, dass der Kampflog-Reader in Forever nicht verfügbar ist. Blizzard sagte im Stream, Forever enthalte einen Damage Meter und einen Cooldown Manager. Blizzard sagte im Stream außerdem, ein Swing-Timer komme „perhaps coming soon“.
07. Secrets werden gezeichnet, nicht aufgelöst
Tester sahen, wie UnitHealth des Spielers als Secret Number zurückkam: type() meldet number, und Addieren schlägt fehl. Warcraft Forever meldet, dass Einheitennamen Secret Strings sein können und dass UnitCanAttack und UnitExists Secret Booleans sein können. Sichere Werte mit issecretvalue ab, bevor du sie vergleichst, verzweigst oder ausgibst. Reiche die Gesundheit direkt an eine StatusBar weiter, mit SetMinMaxValues und SetValue. Ein blockierter geschützter Aufruf kann ohne Lua-Fehler scheitern, und pcall behebt das nicht.
08. Verlasse dich nicht allein auf WOW_PROJECT_ID
Build 69913 gab laut Berichten 1 zurück, den Mainline-Wert. Die aufbewahrte Live-Probe auf Build 70338 zeichnet stattdessen 18 auf, und Blizzards Client-Quellcode nennt diese Konstante WOW_PROJECT_CAMELOT. Eine Bibliothek, die 1 nur als Midnight oder jeden anderen Wert als Classic interpretiert, nimmt den falschen Zweig. Vergleiche benannte Konstanten, wenn verfügbar, und ergänze eine Capability-Probe. Das ältere Beispiel des Warcraft Wiki nutzte LE_EXPANSION_LEVEL_CURRENT oder eine TOC-Variable für den Spieltyp; seine Mainline-Projekt-ID-Bedingung passt nicht zu 70338. Rechne damit, dass sich der Test vor dem Launch ändert.Quelle: Blizzards Camelot-Projektkonstanten, aufbewahrter Quellcode von Build 70338, geprüft am 13. Okt. 2026; Live-Probe erfasst am 12. Okt..
09. Keine Abhängigkeit von Secure Snippets
In Build 69913 ließen sich Secure Snippets nicht kompilieren, weil dem Client loadstring_untainted fehlte. Click-Casting und Aktionsleisten-Paging mit Snippets scheiterten ebenfalls. WoW Forever Builds hält es wahrscheinlich für einen Bug. Liefere keine Heilerframes aus, die Secure Snippets brauchen, bis ein Build das behebt. Deine eigenen Buttons sind der sichere Klickweg. Schreibe keine Secure-Attribute auf Blizzards Einheitenframes.
10. Ganze Dateien, richtige Ladereihenfolge
Gib immer die .toc und jede .lua-Datei vollständig aus. Beta-Addons liegen in World of Warcraft\_classic_beta_\Interface\AddOns\. SavedVariables werden geladen, nachdem deine Dateien gelaufen sind, und sind bereit, wenn ADDON_LOADED für dein Addon auslöst. Ein Forenbericht vom 21. September zeigte gespeicherte Daten, die auf die Platte geschrieben wurden, aber beim nächsten Login fehlten; eine Antwort vom 25. September sagt, Build 70009 lädt sie wieder.
Schnellstart
Das kleinste nützliche WoW-Forever-Addon besteht aus zwei Dateien. Der Ordnername muss zum Namen der TOC-Datei passen. Lege sie in World of Warcraft\_classic_beta_\Interface\AddOns\FirstLight\ und starte den Client. Der Charaktername ist abgesichert, weil Namen Secrets sein können.
## Interface: 16001
## Title: First Light
## Notes: Smallest correct WoW Forever addon.
## Author: YourName
## Version: 0.1.0
## SavedVariables: FirstLightDB
FirstLight.lualocal addonName, ns = ...
local function SafeName()
local name = UnitName("player")
if type(issecretvalue) == "function" and issecretvalue(name) then
return "adventurer"
end
return name or "adventurer"
end
local frame = CreateFrame("Frame")
function frame:ADDON_LOADED(loaded)
if loaded ~= addonName then return end
FirstLightDB = FirstLightDB or { seen = 0 }
ns.db = FirstLightDB
self:UnregisterEvent("ADDON_LOADED")
end
function frame:PLAYER_LOGIN()
ns.db.seen = ns.db.seen + 1
print("|cffd4a85a[" .. addonName .. "]|r online, " .. SafeName() .. ". Session " .. ns.db.seen .. ".")
end
frame:SetScript("OnEvent", function(self, event, ...)
if self[event] then
self[event](self, ...)
end
end)
frame:RegisterEvent("ADDON_LOADED")
frame:RegisterEvent("PLAYER_LOGIN")Was bestätigt ist und was nur beobachtet wurde
| Aussage | Quelle und Status |
|---|---|
| Forever nutzt die moderne Addon-API | Bestätigt. Blizzard-Entwickler, Q&A-Stream vom 17. September, 01:20:52 |
| Eingebauter Damage Meter und Cooldown Manager | Bestätigt. Derselbe Stream, 01:21:51 |
| Swing-Timer | „Perhaps coming soon“ im selben Stream. Keine Zusage |
| Teilt die meisten 12.1.5-APIs; Midnight-Beschränkungen und Secrets aktiv | Gemeldet. Blizzard-Aussage im WoW-UI-Discord, zitiert von Wowhead |
| Interface 16001 | Gemeldet. TOC-Tabelle des Warcraft Wiki, Zeile Forever Beta |
| UnitHealth ist eine Secret Number; Secure Snippets lassen sich nicht kompilieren | Gemeldet. WoW Forever Builds, Build 69913. Erneut testen |
WOW_PROJECT_ID ist 1 | Gemeldet. WoW Forever Builds, Build 69913. Erneut testen |
WOW_PROJECT_ID ist 18 (WOW_PROJECT_CAMELOT) | Gemeldete Client-Beobachtung. Aufbewahrte Live-Probe, Build 70338, 12. Oktober |
| SavedVariables geschrieben, aber nicht wiederhergestellt | Unbestätigt. Forenberichte vom 18. bis 21. September; eine Antwort vom 25. September sagt, Build 70009 habe es behoben |
Der Beta-Zugang läuft vom 17. September bis 21. Oktober 2026. Blizzards Launch-Termin ist der 4. November 2026 um 15:00 PST, Stufenobergrenze 60. Jeder Build bis dahin kann die API ändern. Die Beta-Referenz und die Systemübersicht behandeln die Spielregeln drumherum.
System-Prompt für KI-Modelle
Füge diesen Block in deine KI-Sitzung ein, bevor du nach Addon-Code fragst. Die KI-Prompt-Bibliothek enthält die Aufgaben-Prompts, Portierungs-Prompts und den Review-Prompt.
You write World of Warcraft: Forever addons. The client is not Classic Era and it is not a private server.
Facts you must obey. The original September 28, 2026 checks used Blizzard's statements, the Warcraft Wiki, and community tests on beta build 1.60.1.69913 (followed by 1.60.1.70009). The project-ID note was refreshed from retained build 1.60.1.70338 client source and the October 12 live probe, inspected October 13. Launch is November 4, 2026. Retest every claim on the build in front of you before you tell the user it is final.
- The Forever beta TOC interface is 16001. A Forever-only addon uses exactly: ## Interface: 16001
- Lua is 5.1. No goto, no //, no bitwise operators, no _ENV. Bitwise work uses the bit library (bit.band, bit.bor, bit.lshift).
- There is no require, dofile, loadfile, io library or os library. Load order is the .toc file. Shared state lives on the addon namespace.
- Blizzard said Forever shares Mainline's UI architecture, including the vast majority of APIs available in 12.1.5, and that Midnight's addon disarmament (including secret values) is active. Forever and modern WoW are two game types in the Mainline family. The Forever type was called Camelot and was expected to be renamed before launch. Do not target Classic Era interface numbers (11500s).
- WOW_PROJECT_ID was 18 (WOW_PROJECT_CAMELOT) in the retained live probe on build 70338. WOW_PROJECT_MAINLINE was 1 and WOW_PROJECT_CLASSIC was 2. The older community report of 1 belongs to build 69913. Never choose a Classic code path from that number alone. Compare named constants when available; probe select(4, GetBuildInfo()) and the presence of the API you need. Do not reuse the older LE_EXPANSION_LEVEL_CURRENT example inside a WOW_PROJECT_MAINLINE branch for 70338.
- These globals were absent on build 69913: GetSpellInfo, GetItemInfo, GetSpellBookItemName, GetNumTalentTabs, GetTalentInfo, GetNumSkillLines. Use C_Spell and C_Item. C_Spell.GetSpellInfo returns a table. C_Item.GetItemInfo returns multiple values, like the old global. Both return nil until the data is cached. Request the load and listen for SPELL_DATA_LOAD_RESULT or ITEM_DATA_LOAD_RESULT.
- On Midnight, registering COMBAT_LOG_EVENT_UNFILTERED throws an error, and testers report CombatLogGetCurrentEventInfo unavailable on Forever. Do not build a damage meter, healing meter, or combat-log boss mod. Blizzard ships a damage meter and a cooldown manager. A swing timer was described as perhaps coming soon, not as a promise.
- Player UnitHealth has been observed as a secret number: type() reports "number", and arithmetic or comparison throws. Unit names can be secret strings. UnitCanAttack and UnitExists can be secret booleans. Before any comparison, branch, or print, guard with issecretvalue when that function exists. Pass health and max health straight into StatusBar:SetMinMaxValues and StatusBar:SetValue.
- pcall does not make a protected call safe. Testers report that the client records "Interface action failed because of an AddOn" without a Lua error, and that the counter clears on a full client restart, not on /reload. Do not call ChatFrame_OpenChat, ChatEdit_ActivateChat, or C_SuperTrack.SetSuperTrackedUserWaypoint. Do not write secure attributes onto Blizzard unit frames. Shift-click links go through HandleModifiedItemClick. Map pins go through C_Map.SetUserWaypoint with a UiMapPoint.
- Secure snippet compilation failed on build 69913, which breaks click-casting and action-bar paging that depend on it. Treat that as a beta defect to retest, not as a design you should depend on. Use your own buttons.
- SavedVariables load after the addon's files run. Read and create them inside ADDON_LOADED for this addon, never at file scope. The beta was reported losing saved data between sessions until build 70009; if persistence fails, tell the user it may be the client.
- Every Lua file starts with: local addonName, ns = ...
- Handle events with one frame and a handler table keyed by event name. Do not grow an if/elseif chain. Do not poll with OnUpdate when an event exists.
- Check InCombatLockdown() before you show, hide, or move a protected frame. Queue the closure and run it on PLAYER_REGEN_ENABLED.
- Skin and inform. Do not automate combat decisions, and do not replace Blizzard unit frames, the damage meter, or the cooldown manager.
- When asked for an addon, emit a complete .toc and every .lua file. No fragments. State the beta install path: World of Warcraft\_classic_beta_\Interface\AddOns\<Name>\ and tell the user to restart the client if a new addon folder does not appear.
- If you are not sure an API exists on Forever, say so and show a capability probe. Do not invent C_ functions.Prüfliste
Gehe diese Prüfliste für jede Datei durch, die ein KI-Modell erzeugt, bevor du sie im Spiel testest:
0 von 10 in diesem Browser abgehakt
Der Rest des Guides
Jede Seite behandelt eine Aufgabe:
- Seite 2Forever-MusterWie sich Forever von Classic Era und Midnight unterscheidet.
- Seite 3API-SpickzettelErsatz für fehlende Globals, asynchrones Laden, Secret-sichere Einheitenabfragen.
- Seite 4StolperfallenZwölf Fehler von KI-Modellen und was du stattdessen schreibst.
- Seite 5Code-VorlagenHello World, SavedVariables, abgesicherte Statusleiste, Kampf-Queue.
- Seite 6KI-PromptsSystem-Prompt, Portierungs-Prompts, Fehlerdiagnose, Review-Prompt.
- Seite 7Forever BeaconPrüfbares Beispiel: Downloads von
.toc,.luaund.zip.
Fragen von Addon-Autoren (FAQ)
Welche Interface-Version nutzen WoW-Forever-Addons?
Das Warcraft Wiki nennt 16001 für die Forever-Beta. Bestätige es auf deinem Client mit /dump select(4, GetBuildInfo()) im Chatfenster.
Kann eine KI ein WoW-Forever-Addon schreiben?
Nur, wenn du ihr zuerst ausdrückliche Vorgaben gibst. Ohne sie schreiben Modelle tendenziell alte Globals wie GetSpellInfo, eine Retail-Interface-Nummer wie 110207 und COMBAT_LOG_EVENT_UNFILTERED. Der System-Prompt und die Prüfliste oben fangen das meiste davon ab, bevor du im Spiel testest.
Was ist Camelot im Beta-Client?
Camelot ist laut Blizzards Aussage im WoW-UI-Discord der interne Name des Forever-Spieltyps in der Mainline-Codefamilie. Blizzard sagte, er werde vor dem Launch umbenannt. Das Warcraft Wiki führt _Camelot.toc bereits als Forever-TOC-Suffix, prüfe dieses Suffix also nach dem Launch erneut.
Wichtige Fakten
- TOC-Interface Geändert16001 in der Zeile „Forever Beta“ der TOC-Tabelle im Warcraft Wiki; mit /dump select(4, GetBuildInfo()) prüfenClassic: Classic Era führt in derselben Tabelle 11509.
- 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.
- Launch Neu in Forever4. November 2026 um 15:00 PST, Stufenobergrenze 60
- 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)
- Getesteter Beta-Build Neu in Forever1.60.1.69913; spätere Builds (70009 am 23. September) können abweichen
- Eingebaute Werkzeuge Neu in ForeverDamage Meter und Cooldown Manager enthalten; Swing-Timer
"perhaps coming soon"
(„vielleicht bald“) - Erfasste Projekt-ID Geändert18 (WOW_PROJECT_CAMELOT) in der Live-Probe vom 12. Oktober auf Build 70338; ältere Berichte zu 69913 nannten 1
Quellen
- 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
- Addons in WoW Forever? Blizzard Devs Just Addressed the Big QuestionIcy Veins
- TOC formatWarcraft Wiki
- What the WoW Forever beta breaks for addons: secret health values, dead secure snippets, new APIsWoW Forever Builds
- AddonsWarcraft Forever
- WOWF Beta: Addon SavedVariables appear to write correctly to disk but are not restored at startupWorld of Warcraft Forums (player bug report)
- World of Warcraft: Forever What's Next Panel RecapBlizzard Entertainment
- Secret ValuesWarcraft Wiki
- Patch 12.0.0/API changesWarcraft Wiki
- WOW_PROJECT_IDWarcraft Wiki
- Lua functionsWarcraft Wiki
- Saving variables between game sessionsWarcraft Wiki
- Blizzard client source: ProjectConstants.lua (retained build 70338; mirror may change)Blizzard Entertainment (source mirrored by Gethe)
- Blizzard · Developer Q&A, 01:21:51
