Patrones de addons de WoW Forever: Forever es un tercer cliente
Forever comparte la interfaz de Mainline. En la compilación 70338, su ID de proyecto es 18 (WOW_PROJECT_CAMELOT); compara esa constante, comprueba la API de la función y vuelve a probar en tu cliente actual.
Pregunta a nuestra IA sudorosa y degenerada sobre patrones de addons de Forever
Valores secretos, detección de Camelot, contenedores de auras, paneles de ajustes y más
Cualquier cosa que cubran nuestras guías. Las respuestas salen de esta página y del resto de nuestras guías, con los valores reales en gráficos y las secciones de la guía enlazadas. Es IA, así que comprueba la fuente antes de citarla.
Classic Era es permisivo y antiguo. Midnight es restrictivo y actual. Forever es el mundo original con la familia de interfaz de Midnight. Escribe para esa intersección o el addon no se cargará, o se cargará y informará de algo incorrecto.
- API de addons
- API moderna
- Familia de API
- Mainline 12.1.5
- WOW_PROJECT_ID
- 18 (Camelot)
- Salud del jugador
- Número secreto
Este pilar forma parte de la guía para desarrolladores de addons de WoW Forever, junto con la hoja de referencia de la API de Forever, los errores habituales de los addons hechos con IA y el addon de referencia Forever Beacon.
Tres clientes, un solo error
La trampa en la que más caen los modelos y los desarrolladores es tratar Forever como Classic Era con zonas nuevas, o como Midnight con el mundo antiguo. No es ninguna de las dos cosas.
| Aspecto | Classic Era | Midnight | Forever |
|---|---|---|---|
| Mundo | Mundo original | Expansión actual | Mundo original, zonas nuevas, nivel máximo 60 |
| Código de interfaz | API de Classic | Mainline, 12.x | Familia Mainline, tipo de juego Camelot |
| Interfaz | 11509 | 120100 | 16001 en la beta |
| Registro de combate | Abierto a addons | Registrar CLEU da error | Reportado como no disponible |
| Cálculos de salud | Números normales | Secretos bajo restricciones | Número secreto visto en la compilación 69913 |
WOW_PROJECT_ID | 2 | 1 | 18 (WOW_PROJECT_CAMELOT) en la compilación 70338; se reportó 1 en 69913 |
Los números de interfaz proceden de la tabla de TOC de la Warcraft Wiki, y el cambio del registro de combate de Midnight, de las notas de API del parche 12.0.0 de la wiki. Las filas de la beta en la columna de Forever son pruebas de la comunidad.
Detecta Forever sin fiarte solo del ID de proyecto
El informe de la compilación anterior 69913 indicó que devolvía WOW_PROJECT_ID = 1, el valor de Mainline. La sonda conservada del 12 de octubre en la compilación 70338 registra en cambio 18, y las constantes del cliente de Blizzard lo llaman WOW_PROJECT_CAMELOT. Compara esa constante con nombre cuando exista y después comprueba la API que necesita tu función. Blizzard dijo que cambiaría el nombre interno Camelot antes del lanzamiento, así que vuelve a comprobarlo en tu compilación.Fuente: constantes de proyecto Camelot de Blizzard, extracto conservado de 70338 inspeccionado el 13 oct 2026; sonda de WFG capturada el 12 oct. El espejo puede mostrar una compilación posterior.
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())Comprueba esta sonda con las tablas de referencia de la API y las trampas de Doce trampas que evitar, y ejecútala en tu compilación antes de fiarte de ella.
El ejemplo conservado de la Warcraft Wiki combina WOW_PROJECT_MAINLINE con LE_EXPANSION_LEVEL_CURRENT == LE_EXPANSION_CLASSIC o lee una variable de tipo de juego del TOC. Su condición del ID de proyecto Mainline es falsa en el cliente 70338 capturado. La arquitectura de interfaz Mainline no implica un ID de proyecto Mainline. El ejemplo revisado se ha cotejado con las fuentes, pero no se ha probado en el juego.
La cadena de valores secretos
Midnight introdujo los valores secretos para limitar la automatización del combate, y Blizzard dijo que Forever también los tiene.
- Llama a la API.
type()sigue informando de number, string o boolean. - Preguntar
issecretvalueantes de compararlo, ramificar según él o imprimirlo. - Si es secreto, usa un widget.En otro caso, muestra una etiqueta fija.
- No confíes en
pcallcon acciones protegidas.
La llamada sigue devolviendo un valor, con su tipo real. StatusBar:SetValue es el ejemplo de la wiki de un widget que acepta secretos. No envuelvas una acción protegida en pcall y des el asunto por resuelto: los probadores reportan que el fallo puede ser silencioso y persistente.
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.

Prueba que puedes pegar en el juego
/run local h = UnitHealth("player"); print(type(h), pcall(function() return h + 1 end))En la compilación 69913 esto imprimió number false. Un false de pcall significa que el motor rechazó la suma. Para ejemplos de barras de estado, consulta las plantillas de código y el ejemplo descargable de Beacon, y compruébalos en tu compilación.
Las auras son contenedores, no tablas que te pertenezcan
Blizzard dijo que los cambios de AuraContainer y AuraButton de 12.1.0 están disponibles en Forever, y que los cambios posteriores de interfaz deberían llegar tanto a Standard como a Forever. Las notas de Midnight de la wiki marcan los datos de auras como secretos mientras las restricciones de combate están activas. Lo que funciona es dejar que los marcos de auras de Blizzard decidan qué mostrar, aplicar tu aspecto a lo que te dan y no leer nunca los datos de las auras para decidir una jugada.
Qué merece la pena desarrollar ahora
Conoce qué permite el cliente antes de pedirle algo a un modelo o adaptar código antiguo:
| Aspecto | Veredicto | Motivo |
|---|---|---|
| Bolsas, banco, vendedor, descripciones emergentes | Desarrollar | Presenta datos que la interfaz ya muestra |
| Registro de misiones, marcas del mapa, notas de ruta | Desarrollar | C_Map.SetUserWaypoint es la marca segura, no la llamada de super-seguimiento |
| Placas de nombre y arte de unidades | Desarrollar con cuidado | Warcraft Forever: NAME_PLATE_UNIT_ADDED puede dispararse antes de que la unidad esté rellenada. Vuelve a comprobar un momento después |
| Franja personal a prueba de secretos | Desarrollar | El ejemplo Forever Beacon es la referencia |
| Medidor de daño o sanación | No hacerlo | Built-in meter; do not assume addon access to its restricted data |
| Paquetes de WeakAuras de Classic | No adaptar | Wowhead: WeakAuras dejó de desarrollarse antes de Midnight |
| Marcos de sanador con clic para lanzar | Esperar | Los fragmentos seguros no se compilaron en 69913; puede ser un fallo |
| Paginación de barras de acción mediante fragmentos | Esperar | El mismo fallo de compilación |
Orden de adaptación
Desde Midnight
Añade 16001 a la línea de interfaz, o incluye un _Camelot.toc. Elimina cualquier rama que lea el ID de proyecto 1 como «esto es Midnight» y active funciones exclusivas de Midnight. Vuelve a probar todas las rutas con valores secretos en el cliente de Forever antes de publicar.
Desde 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.
Fallos de la beta frente a diseño
Indícalos en las notas de tu parche para que los jugadores no culpen a tu addon:
- Fallo de compilación de fragmentos seguros: WoW Forever Builds sospecha que es un fallo.
- SavedVariables no se cargan: reportado tras un reinicio a mediados de septiembre
WOW_PROJECT_IDde 1: informe histórico de la compilación 69913.
Vuelve a probar los fragmentos antes de sustituir para siempre un sistema funcional de lanzamiento con clic por otro menos capaz. Los jugadores reportaron datos guardados ausentes, y una respuesta del foro del 25 de septiembre dice que la compilación 70009 vuelve a cargarlos; compruébalo antes de añadir soluciones alternativas. WoW Forever Builds dejó sin aclarar el ID de proyecto en la compilación 69913. La sonda conservada de 70338 registra 18, llamado WOW_PROJECT_CAMELOT, aunque Forever sigue en la familia Mainline. Vuelve a probar cada compilación; compara la constante con nombre y comprueba las API de las funciones.
El compartimento de addons sustituye al botón del minimapa
Si le pides a un modelo un botón de activación, recurrirá a una biblioteca de iconos de minimapa de un tutorial de Classic Era. Mainline tiene una opción más ligera: el compartimento de addons, un menú desplegable del minimapa que muestra una entrada por cada addon registrado.Fuente: compartimento de addons, consultado el 28 sept 2026.
El cliente de la beta lo incluye. En la compilación 1.60.1.70009, el TOC de Blizzard_Minimap carga AddonCompartment.lua para el tipo de juego mainline, y una línea contigua que excluye camelot muestra que camelot cuenta como mainline.Reportado, archivo del cliente leído Una entrada en una pantalla real de Forever sigue sin confirmar, como señalan las notas de compartimento de Beacon.
Registrar con el TOC o con Lua
Tres campos del TOC registran una entrada sin ninguna llamada de Lua: AddonCompartmentFunc para el clic, más los opcionales AddonCompartmentFuncOnEnter y AddonCompartmentFuncOnLeave para la descripción emergente. El cliente llama a las funciones globales que indiques y, si hace falta, carga antes un addon de carga bajo demanda.
Un addon que cambia su etiqueta o icono en tiempo de ejecución usa AddonCompartmentFrame:RegisterAddon en su lugar, pasando una tabla con text, icon y func. La wiki dice que esa tabla se parece a la configuración de botón UIDropDownMenu antigua, así que los ejemplos de Retail sirven.
Cuándo sigue teniendo sentido un botón de minimapa
Un botón de minimapa propio trae su propia posición guardada y su código de arrastre, normalmente mediante una biblioteca. Una entrada del compartimento no necesita ninguna de las dos cosas, porque el cliente es dueño del menú. Empieza por el compartimento. El mismo TOC sigue cargando MinimapButtonTemplate para camelot, así que un icono de minimapa real sigue siendo posible si los jugadores lo piden.
Los paneles de opciones siguen el mismo cambio
Los ajustes siguen la misma regla: escribe código de Mainline, no una plantilla de Classic. La wiki dice que la API de Settings se rehízo en el parche 10.0.0, con más cambios incompatibles en 11.0.2.Fuente: API de Settings, consultada el 28 sept 2026. El Blizzard_Settings.lua de la beta define Settings.RegisterAddOnCategory, Settings.RegisterAddOnSetting y Settings.OpenToCategory.Reportado, archivo del cliente leído
RegisterAddOnCategory añade tu categoría a la ventana de opciones del juego. RegisterAddOnSetting vincula una casilla o un control deslizante a una clave de tu tabla de variables guardadas, de modo que el clic escribe el valor sin un manejador aparte que mantener sincronizado. La plantilla de panel de ajustes tiene una casilla funcional con una función de retorno.

Abrir las opciones desde el compartimento
Un clic en el compartimento puede llamar a Settings.OpenToCategory en lugar de mostrar un marco que hayas creado tú. En el archivo de la beta, delega en C_SettingsUtil.OpenSettingsPanel, una función del cliente. Ni la wiki ni ese archivo dicen si la llamada funciona en combate, así que pruébala en combate, o ponla en cola hasta PLAYER_REGEN_ENABLED como hace Beacon.
Los addons de rutas siguen el mismo cliente
Los addons de misiones y rutas son la fila «Build» más grande de la tabla anterior, y dos creadores de guías ya los venden para Forever. RestedXP abrió los pedidos de Forever el 14 de septiembre de 2026. Zygor Guides dice que los miembros Elite recibirán sus guías de Forever en el lanzamiento. Ambos se ejecutan dentro de este cliente, así que les aplican las mismas reglas de compartimento y ajustes.
Las plantillas de prompts para addons de Forever incorporan ambos patrones en el prompt del sistema, de modo que el modelo recurra al compartimento y a la API de Settings antes que a una biblioteca.
Datos clave
- API de addons CambiadaForever usa la API moderna de addons, con las restricciones de combate de MidnightClassic: Classic Era mantiene la API anterior, con el registro de combate abierto a los addons.
- Familia de API CambiadaComparte la arquitectura de la interfaz de Mainline y «la gran mayoría de las API de esa versión» (“the vast majority of APIs available in 12.1.5”)
- WOW_PROJECT_ID Cambiado18 (WOW_PROJECT_CAMELOT) en la sonda de WFG del 12 de octubre en la compilación 70338; la compilación anterior 69913 reportó 1Classic: Classic Era devuelve 2 (WOW_PROJECT_CLASSIC).
- Registro de combate EliminadoSe reporta que CombatLogGetCurrentEventInfo no está disponible para los addons en la betaClassic: los addons de Classic Era leen todos los eventos mediante COMBAT_LOG_EVENT_UNFILTERED.
- Salud del jugador CambiadoUnitHealth devolvía un número secreto: type() dice number, pero sumar 1 fallaClassic: Classic Era devuelve un número normal con el que los addons pueden operar.
Fuentes
- 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)