Horizon Content Mods (.hmod)
Horizon Content Mods sind reine Daten und Assets – kein Code. Ein .hmod ist ein ZIP-Paket, das ein horizon-mod.toml-Manifest sowie optionale assets/- und data/-Verzeichnisse enthält. Es wird beim Starten des Spiels über die Basisressourcen gelegt. WebAssembly (mod.wasm) ist tot und wird abgelehnt. Falls der Benutzer ausführbares Verhalten wünscht, handelt es sich um eine native Mod – siehe den Skill horizon-native-mod.
Der Arbeitsablauf
- Scaffold: Erstelle den Projektordner (Manifest +
data//assets/) oder führecargo horizon-mod new <pfad> --name "Name"aus. Falls du das Scaffold verwendet hast: Lösche die automatisch generierten Beispielinhalte (Blockstates, Items, Models, Blockdeklarationen, Loot-Tabellen und alles unterdata/minecraft/), bevor du deine eigenen hinzufügst – sie demonstrieren genau die stillen Fehlermuster, die inreferences/pitfalls.mdbeschrieben sind. Behalte nur das Manifest und deine eigenen Dateien. - Inhalte hinzufügen: Unter dem eigenen Namensraum der Mod:
data/<mod-id>/recipe/...,assets/<mod-id>/lang/.... Schreibe niemals indata/minecraft/– setze Übersteuerungen indata/<mod-id>/. - Bauen:
cargo horizon-mod build→ erzeugttarget/horizon-mod/<id>.hmod. - Überprüfen:
cargo horizon-mod check target/horizon-mod/<id>.hmod. - Installieren: Kopiere das
.hmodin dashorizon-mods/-Verzeichnis des Spiels. Wo das liegt: Innerhalb des Horizon-Installationsordners, nebenhorizon-client.exeundhorizon-mods.txt(z.B....\horizon-windows-x64\horizon-mods\) – hier lädt unsere Installation die Mods. Das Benutzerdatenverzeichnis (%APPDATA%\Roaming\horizon) ist ein anderer Ort und hatte keinen Mods-Ordner. Erstelle den Ordner, falls eine Neuinstallation ihn nicht besitzt. - Aktivieren: Content Mods werden nur beim Start geladen – beende das Spiel komplett, starte es neu, Optionen → Mods → aktivieren, beende es erneut komplett, starte es neu, lade eine Welt.
Nach Schritt 3 kann optional horizon-inspect target/horizon-mod/<id>.hmod --json (Exit 0 = gültig) für einen Sicherheits-/Manifest-Bericht ausgeführt werden, falls das Tool installiert ist.
Beginne mit dem, was nachweislich funktioniert
Datengetriebene Rezepte mit Vanilla-Item-IDs sind die verifizierte Basis – sie funktionieren ohne Texturen, Modelle oder Item-Registrierungen:
{
"type": "minecraft:smelting",
"cookingtime": 200,
"experience": 0.35,
"ingredient": "minecraft:rotten_flesh",
"result": { "id": "minecraft:leather" }
}
(minecraft:blasting für den Schmelzofen; cookingtime in Ticks, 200 = ~10 s.)
Füge jeweils eine Art von Inhalten hinzu und teste nach jeder Änderung erneut. Horizon kann Inhalte, die es nicht versteht, stillschweigend ablehnen – daher ist eine "Big-Bang"-Mod nicht debugbar.
Hart erkämpfte Fallstricke (getestet mit Horizon 0.2.97)
Lies references/pitfalls.md, bevor du etwas anderes als Vanilla-Item-Rezepte entwirfst – die Fehlermodi dort sind still und kosten Stunden. Highlights:
- Neue Item-/Blockdeklarationen erscheinen möglicherweise nicht im Spiel; das Spiel kann sie ohne Fehlerprotokoll ablehnen.
- Item-
componentswerden in dieser Version nicht unterstützt. - Das Manifest verwendet
deny_unknown_fields; Mod-IDs bestehen nur aus[a-z0-9_].
Referenzen – bei Bedarf lesen
references/manifest-reference.md– Vollständige Referenz derhorizon-mod.toml-Felder: API-Zeilen, Fähigkeiten, Seite, ID-Regeln. Vor dem Schreiben eines Manifests lesen.references/data-and-assets.md– Verifizierte Datenformate (Rezepte, Lang) und Asset-Layout. Vor dem Hinzufügen von Inhalten jenseits eines einzelnen Schmelzrezepts lesen.references/pitfalls.md– Der Katalog stiller Fehler und Debugging-Strategie. Vor dem Testen und immer dann lesen, wenn "die Mod nicht angezeigt wird".references/validation-and-publishing.md– Verwendung des Inspektors/Prüfers, Registry-Regeln (index.json,revoked.toml, MOD-POLICY), deterministisches Paketieren. Vor dem Veröffentlichen lesen.
Regeln, die nicht verhandelbar sind
- Content Mods deklarieren Fähigkeiten; fordere niemals mehr an, als die Mod benötigt – Spieler sehen diese vor dem Aktivieren.
- Java-Mod- JARs laufen nicht in Horizon; versuche nicht,
.jar-Dateien zu portieren, portiere stattdessen ihre Daten. - Horizon enthält keine Mojang-Assets; packe niemals Minecraft-Assets in eine Mod. Leite alles ab oder referenziere Vanilla-IDs.