Mods de contenu Horizon (.hmod)
Les mods de contenu Horizon sont données et assets uniquement — pas de code. Un .hmod est une archive ZIP contenant un manifeste horizon-mod.toml ainsi que les répertoires optionnels assets/ et data/, superposés aux ressources de base du jeu au démarrage. WebAssembly (mod.wasm) est mort et rejeté. Si l'utilisateur souhaite un comportement exécutable, il s'agit d'un mod natif — voir le skill horizon-native-mod à la place.
Le cycle de travail
- Échafauder le dossier du projet (manifeste + répertoires
data//assets/), ou exécutercargo horizon-mod new <chemin> --name "Nom". Si vous avez utilisé l'échafaudage : supprimez son contenu d'exemple généré (blockstates, items, models, déclarations de blocs, tables de butin, et tout ce qui se trouve sousdata/minecraft/) avant d'ajouter le vôtre — il illustre les schémas d'échec silencieux décrits dansreferences/pitfalls.md. Ne conservez que le manifeste et vos propres fichiers. - Ajouter du contenu sous le propre espace de noms du mod :
data/<mod-id>/recipe/...,assets/<mod-id>/lang/.... N'écrivez jamais dansdata/minecraft/— placez les surcharges dansdata/<mod-id>/. - Compiler :
cargo horizon-mod build→ produittarget/horizon-mod/<id>.hmod. - Vérifier :
cargo horizon-mod check target/horizon-mod/<id>.hmod. - Installer : copiez le
.hmoddans le répertoirehorizon-mods/du jeu. Où se trouve-t-il ? Dans le dossier d'installation d'Horizon, à côté dehorizon-client.exeethorizon-mods.txt(par exemple...\horizon-windows-x64\horizon-mods\) — c'est de là que nos installations chargent les mods. Le répertoire de données utilisateur (%APPDATA%\Roaming\horizon) est un emplacement différent et ne contient pas de dossier de mods. Créez le dossier si une installation fraîche ne l'a pas. - Activer : les mods de contenu se chargent une fois au démarrage — quittez complètement le jeu, relancez, Options → Mods → activer, quittez complètement à nouveau, relancez, chargez un monde.
Après l'étape 3, vous pouvez éventuellement exécuter horizon-inspect target/horizon-mod/<id>.hmod --json (exit 0 = valide) pour un rapport de sécurité/ manifeste si l'outil est installé.
Commencez par ce qui est prouvé pour fonctionner
Les recettes basées sur les données avec des IDs d'objets vanilla sont la base vérifiée — elles fonctionnent sans textures, modèles ou enregistrements d'objets :
{
"type": "minecraft:smelting",
"cookingtime": 200,
"experience": 0.35,
"ingredient": "minecraft:rotten_flesh",
"result": { "id": "minecraft:leather" }
}
(minecraft:blasting pour le haut fourneau ; cookingtime en ticks, 200 = ~10 s.)
Ajoutez un type de contenu à la fois et retestez après chacun. Horizon peut rejeter silencieusement le contenu qu'il ne comprend pas, donc un mod "big-bang" est impossible à déboguer.
Pièges durement acquis (vérifiés sur Horizon 0.2.97)
Lisez references/pitfalls.md avant de concevoir quoi que ce soit au-delà des recettes d'objets vanilla — les modes d'échec y sont silencieux et coûtent des heures. Points clés :
- Les déclarations de nouveaux objets/blocs peuvent ne pas apparaître en jeu ; le jeu peut les rejeter sans journaliser d'erreurs.
- Les
componentsd'objets ne sont pas pris en charge dans cette version. - Le manifeste utilise
deny_unknown_fields; les identifiants de mod sont[a-z0-9_]uniquement.
Références — lisez à la demande
references/manifest-reference.md— référence complète des champshorizon-mod.toml: lignes d'API, capacités, côté, règles d'ID. Lisez avant d'écrire un manifeste.references/data-and-assets.md— formats de données vérifiés (recettes, lang) et disposition des assets. Lisez lorsque vous ajoutez du contenu au-delà d'une recette de cuisson.references/pitfalls.md— le catalogue des échecs silencieux et la stratégie de débogage. Lisez avant de tester et chaque fois que "le mod n'apparaît pas".references/validation-and-publishing.md— utilisation de l'inspecteur/vérificateur, règles de registre (index.json,revoked.toml, MOD-POLICY), empaquetage déterministe. Lisez avant de publier.
Règles non négociables
- Les mods de contenu déclarent des capacités ; ne demandez jamais plus que ce dont le mod a besoin — les joueurs les voient avant d'activer.
- Les fichiers jar de mods Java ne s'exécutent pas dans Horizon ; n'essayez pas de porter des fichiers
.jar, portez leurs données à la place. - Horizon ne contient aucun asset de Mojang ; n'incorporez jamais d'assets Minecraft dans un mod. Dérivez tout ou référencez les IDs vanilla.