Pular para o conteúdo

Fundamentos de JSON

JSON no Hytale

Cada elemento de conteúdo do jogo no Hytale — de NPCs a itens e geração de mundo — é definido em arquivos JSON. Entender os padrões comuns vai ajudar você a criar mods de forma eficiente.

Padrões Comuns

Herança de Templates

A maioria dos arquivos JSON suporta herança de um template usando Parent ou Reference:

{
"Reference": "Template_Beasts_Passive_Critter",
"Modify": {
"Appearance": "Chicken",
"MaxHealth": 10,
"DropList": "Drop_Chicken"
}
}

O Reference aponta para um arquivo de template, e o Modify sobrescreve campos específicos. Isso evita duplicar configurações comuns entre entidades semelhantes.

Valores Calculados

Alguns campos suportam valores calculados que referenciam parâmetros:

{
"Parameters": {
"BaseHealth": {
"Value": 100,
"Description": "Base health for this NPC"
}
},
"MaxHealth": {
"Compute": "BaseHealth * 1.5"
}
}

Seleção por Peso

Drops, spawns e lojas usam um sistema de pesos para seleção aleatória:

{
"Container": {
"Type": "Choice",
"Containers": [
{ "Weight": 70, "Item": { "ItemId": "Coin_Gold" } },
{ "Weight": 25, "Item": { "ItemId": "Gem_Ruby" } },
{ "Weight": 5, "Item": { "ItemId": "Sword_Legendary" } }
]
}
}

Peso maior = probabilidade maior. O total não precisa ser igual a 100 — os pesos são relativos.

Encadeamento de Interações

Comportamentos complexos são construídos encadeando interações com o campo Next:

{
"Type": "Condition",
"RequiredGameMode": "Adventure",
"Next": {
"Type": "ApplyEffect",
"EffectId": "Poison",
"Next": {
"Type": "Damage",
"DamageCalculator": {
"BaseDamage": { "Poison": 5 }
}
}
}
}

Cada interação dispara a próxima em sequência, criando comportamentos de gameplay complexos.

Chaves de Tradução

Textos visíveis para o jogador utilizam chaves de localização:

{
"TranslationProperties": {
"Name": "server.items.sword_iron.name",
"Description": "server.items.sword_iron.description"
}
}

O texto real é definido nos arquivos de idioma (Languages/en-US.lang):

server.items.sword_iron.name=Iron Sword
server.items.sword_iron.description=A sturdy blade forged from iron.

Validação de Arquivos

O Hytale valida os arquivos JSON na inicialização do servidor. Erros comuns:

  • Vírgulas no final — JSON não permite vírgulas após o último elemento
  • Referências ausentesParent ou Reference apontando para templates inexistentes
  • Tipos de campo inválidos — String onde era esperado um número, ou vice-versa
  • Campos obrigatórios ausentes — Alguns campos são obrigatórios dependendo do tipo de entidade