Mods de Contenido de Horizon (.hmod)
Los mods de contenido de Horizon son solo datos y activos — sin código. Un .hmod es un zip que contiene un manifiesto horizon-mod.toml más directorios opcionales assets/ y data/, superpuestos sobre los recursos base del juego al inicio. WebAssembly (mod.wasm) está obsoleto y rechazado. Si el usuario quiere comportamiento ejecutable, eso es un mod nativo — consulta la habilidad horizon-native-mod en su lugar.
El ciclo de trabajo
- Scaffold la carpeta del proyecto (manifiesto + directorios
data//assets/), o ejecutacargo horizon-mod new <ruta> --name "Nombre". Si usaste el scaffold: elimina su contenido de ejemplo generado (estados de bloques, objetos, modelos, declaraciones de bloques, tablas de botín y cualquier cosa bajodata/minecraft/) antes de añadir el tuyo — demuestra los patrones de fallo silencioso descritos enreferences/pitfalls.md. Conserva solo el manifiesto y tus propios archivos. - Añade contenido bajo el propio namespace del mod:
data/<mod-id>/recipe/...,assets/<mod-id>/lang/.... Nunca escribas endata/minecraft/— coloca las sobrescrituras endata/<mod-id>/. - Construye:
cargo horizon-mod build→ producetarget/horizon-mod/<id>.hmod. - Verifica:
cargo horizon-mod check target/horizon-mod/<id>.hmod. - Instala: copia el
.hmoden el directoriohorizon-mods/del juego. Dónde está: dentro de la carpeta de instalación de Horizon, junto ahorizon-client.exeyhorizon-mods.txt(ej....\horizon-windows-x64\horizon-mods\) — aquí es donde nuestras instalaciones cargan los mods. El directorio de datos del usuario (%APPDATA%\Roaming\horizon) es una ubicación diferente y no contiene una carpeta de mods. Crea la carpeta si una instalación nueva no la tiene. - Habilita: los mods de contenido se cargan una vez al inicio — cierra el juego por completo, relanza, Opciones → Mods → habilitar, cierra por completo de nuevo, relanza, carga un mundo.
Después del paso 3, opcionalmente ejecuta horizon-inspect target/horizon-mod/<id>.hmod --json (código de salida 0 = válido) para obtener un informe de seguridad/manifiesto si la herramienta está instalada.
Empieza con lo que está probado que funciona
Las recetas basadas en datos con ids de objetos vanilla son la base verificada — funcionan sin texturas, modelos ni registros de objetos:
{
"type": "minecraft:smelting",
"cookingtime": 200,
"experience": 0.35,
"ingredient": "minecraft:rotten_flesh",
"result": { "id": "minecraft:leather" }
}
(minecraft:blasting para alto horno; cookingtime en ticks, 200 = ~10 s.)
Añade un tipo de contenido a la vez y vuelve a probar después de cada uno. Horizon puede rechazar contenido que no entiende de forma silenciosa, por lo que un mod grande es indepurable.
Errores silenciosos comprobados (verificado en Horizon 0.2.97)
Lee references/pitfalls.md antes de diseñar algo más allá de recetas con objetos vanilla — los modos de fallo son silenciosos y cuestan horas. Titulares:
- Las declaraciones de nuevos objetos/bloques pueden no aparecer en el juego; el juego puede rechazarlas sin registrar errores.
- Los
componentsde objetos no son compatibles en esta versión. - El manifiesto usa
deny_unknown_fields; los ids de mod solo permiten[a-z0-9_].
Referencias — lee según sea necesario
references/manifest-reference.md— referencia completa de campos dehorizon-mod.toml: líneas de API, capacidades, lado, reglas de id. Léelo antes de escribir cualquier manifiesto.references/data-and-assets.md— formatos de datos verificados (recetas, idioma) y diseño de activos. Léelo al añadir contenido más allá de una receta de fundición.references/pitfalls.md— catálogo de fallos silenciosos y estrategia de depuración. Léelo antes de probar y siempre que "el mod no aparece".references/validation-and-publishing.md— uso del inspector/verificador, reglas de registro (index.json,revoked.toml, MOD-POLICY), empaquetado determinista. Léelo antes de publicar.
Reglas no negociables
- Los mods de contenido declaran capacidades; nunca solicites más de las que el mod necesita — los jugadores las ven antes de habilitar.
- Los jars de mods de Java no se ejecutan en Horizon; no intentes portar archivos
.jar, porta sus datos. - Horizon no contiene activos de Mojang; nunca incluyas activos de Minecraft en un mod. Deriva todo o referencia ids vanilla.