Biblioteca central de chaves/labels reutilizáveis pra evitar duplicação entre páginas.
fieldLibrary#
Define uma biblioteca central de pares (key, label, description) que outros addons referenciam em vez de digitar strings. É a "fonte de verdade" pra qualquer taxonomia compartilhada do projeto.
Por que importa#
Em projetos médios/grandes você tem dezenas de "campos" repetidos: craftTimeSeconds aparece em 50 receitas, "Espada" como categoria em 30 itens, "preço de compra" em 80 economias. Sem biblioteca central, cada lugar inventa o nome — e quando você decide renomear "Espada" pra "Lâmina" precisa caçar em 30 lugares.
A Field Library te deixa renomear num lugar só e a mudança propaga.
Onde costuma viver#
- Página em branco dedicada: "Bibliotecas" ou "Taxonomia".
- Page type
🎯 Atributoscria uma Field Library opcional ao lado doattributeDefinitions(pra reaproveitar nomes de atributo entre tabelas).
Singleton — 1 library por página, mas você pode ter múltiplas páginas com bibliotecas diferentes (ex.: "Tipos de Item", "Categorias de Skill", "Slots de Equipamento").
Schema#
| Campo | Tipo | Padrão | Descrição |
|---|---|---|---|
idSim | string | ID interno. | |
nameSim | string | Nome amigável (ex.: Categorias de Item, Slots de Equipamento). | |
entriesSim | FieldLibraryEntry[] | Lista de campos compartilháveis. |
FieldLibraryEntry#
| Campo | Tipo | Padrão | Descrição |
|---|---|---|---|
idSim | string | ID interno (estável). Refs externas usam este id. | |
keySim | string | Chave técnica (snake_case). Vai pro JSON quando aplicável. | |
labelSim | string | Nome amigável que aparece na UI. | |
description | string | Descrição livre da intenção do campo (notas, exemplos). |
Exemplo#
Biblioteca de Categorias de Item:
{
"id": "lib-item-categories",
"name": "Categorias de Item",
"entries": [
{
"id": "cat-weapon",
"key": "weapon",
"label": "Arma",
"description": "Itens equipáveis que aumentam ATK ou aplicam efeito ofensivo."
},
{
"id": "cat-armor",
"key": "armor",
"label": "Armadura",
"description": "Itens equipáveis que aumentam DEF."
},
{
"id": "cat-consumable",
"key": "consumable",
"label": "Consumível",
"description": "Itens de uso único (poções, comidas, scrolls)."
},
{
"id": "cat-quest",
"key": "quest",
"label": "Item de Missão",
"description": "Não vendível, não descartável, vinculado a quest."
}
]
}
Agora cada inventory.categoryLibraryRef aponta pra {libraryAddonId, entryId} em vez de repetir a string "Espada" / "Arma".
Quem aponta pra fieldLibrary#
inventory.categoryLibraryRef— categoria do item.progressionTable.columns[].libraryRef— nome de coluna.dataSchema.entries[].libraryRef— key e label do campo.
Quando você renomeia uma entry da library, todos os refs propagam automaticamente — você não vê o label antigo em lugar nenhum.
Validação#
- Refs quebradas: se você apagar uma entry, todos os addons que a referenciavam mostram aviso.
- Keys duplicadas: o painel previne dois entries com a mesma key dentro da library.
- Ordem persistente: as entries têm ordem manual (drag-and-drop), exportadas nessa ordem.
Wizard#
Não tem wizard próprio, mas:
- A page type
🎯 Atributosopcionalmente inclui umfieldLibraryao lado doattributeDefinitions— útil quando os atributos vão também alimentar colunas de tabelas de progressão.