Mods de Conteúdo Horizon (.hmod)
Mods de conteúdo Horizon são apenas dados e assets — sem código. Um .hmod é um zip contendo um manifesto horizon-mod.toml mais diretórios opcionais assets/ e data/, sobrepostos aos recursos base do jogo na inicialização. WebAssembly (mod.wasm) está morto e rejeitado. Se o usuário deseja comportamento executável, isso é um mod nativo — veja o skill horizon-native-mod.
O ciclo de trabalho
- Estruturar a pasta do projeto (manifesto +
data//assets/), ou executecargo horizon-mod new <caminho> --name "Nome". Se usou a estrutura: remova seu conteúdo de exemplo gerado (blockstates, items, models, block declarations, loot tables e tudo sobdata/minecraft/) antes de adicionar o seu — ele demonstra os padrões de falha silenciosa descritos emreferences/pitfalls.md. Mantenha apenas o manifesto e seus próprios arquivos. - Adicionar conteúdo sob o próprio namespace do mod:
data/<id-do-mod>/recipe/...,assets/<id-do-mod>/lang/.... Nunca escreva emdata/minecraft/— coloque as substituições emdata/<id-do-mod>/. - Construir:
cargo horizon-mod build→ produztarget/horizon-mod/<id>.hmod. - Verificar:
cargo horizon-mod check target/horizon-mod/<id>.hmod. - Instalar: copie o
.hmodpara o diretóriohorizon-mods/do jogo. Onde ele fica: dentro da pasta de instalação do Horizon, ao lado dehorizon-client.exeehorizon-mods.txt(ex.:...\horizon-windows-x64\horizon-mods\) — é de onde nossas instalações carregam. O diretório de dados do usuário (%APPDATA%\Roaming\horizon) é um local diferente e não continha uma pasta de mods. Crie a pasta se uma instalação nova não a tiver. - Habilitar: mods de conteúdo carregam uma vez na inicialização — feche o jogo completamente, reinicie, Opções → Mods → habilitar, feche completamente novamente, reinicie, carregue um mundo.
Após o passo 3, opcionalmente execute horizon-inspect target/horizon-mod/<id>.hmod --json (código de saída 0 = válido) para um relatório de segurança/manifesto se a ferramenta estiver instalada.
Comece pelo que é comprovadamente funcional
Receitas baseadas em dados com IDs de itens vanilla são a base verificada — elas funcionam sem texturas, modelos ou registros de itens:
{
"type": "minecraft:smelting",
"cookingtime": 200,
"experience": 0.35,
"ingredient": "minecraft:rotten_flesh",
"result": { "id": "minecraft:leather" }
}
(minecraft:blasting para fornalha alta; cookingtime em ticks, 200 = ~10 s.)
Adicione um tipo de conteúdo por vez e teste novamente após cada um. O Horizon pode rejeitar silenciosamente conteúdo que não entende, então um mod "tudo de uma vez" é impossível de depurar.
Armadilhas conquistadas com esforço (verificadas no Horizon 0.2.97)
Leia references/pitfalls.md antes de projetar qualquer coisa além de receitas com itens vanilla — os modos de falha lá são silenciosos e custam horas. Destaques:
- Novas declarações de itens/blocos podem não aparecer no jogo; o jogo pode rejeitá-las sem registrar erros.
componentsde itens não são suportados nesta versão.- O manifesto usa
deny_unknown_fields; IDs de mod são apenas[a-z0-9_].
Referências — leia sob demanda
references/manifest-reference.md— referência completa dos camposhorizon-mod.toml: linhas de api, capabilities, side, regras de id. Leia antes de escrever qualquer manifesto.references/data-and-assets.md— formatos de dados verificados (receitas, idioma) e layout de assets. Leia ao adicionar conteúdo além de uma receita de fundição.references/pitfalls.md— o catálogo de falhas silenciosas e estratégia de depuração. Leia antes de testar e sempre que "o mod não aparece".references/validation-and-publishing.md— uso do inspector/checker, regras de registro (index.json,revoked.toml, MOD-POLICY), empacotamento determinístico. Leia antes de publicar.
Regras que não são negociáveis
- Mods de conteúdo declaram capabilities; nunca solicite mais do que o mod precisa — os jogadores veem isso antes de habilitar.
- Arquivos .jar de mod Java não funcionam no Horizon; não tente portar arquivos
.jar, porte seus dados. - O Horizon não contém assets da Mojang; nunca agrupe assets do Minecraft em um mod. Derive tudo ou referencie IDs vanilla.