Horizon コンテンツ Mod (.hmod)
Horizon コンテンツ Mod は データとアセットのみ — コードはありません。.hmod は horizon-mod.toml マニフェストと、オプションの assets/ および data/ ディレクトリを含む zip ファイルで、起動時にゲームの基本リソースの上にレイヤーとして適用されます。WebAssembly (mod.wasm) は廃止され、拒否されます。実行可能な動作が必要な場合は、ネイティブ Mod です — horizon-native-mod スキルを参照してください。
作業ループ
- スキャフォールド プロジェクトフォルダ(マニフェスト +
data//assets/)を作成するか、cargo horizon-mod new <path> --name "Name"を実行します。スキャフォールドを使用した場合: あなたのコンテンツを追加する前に、生成されたサンプルコンテンツ(blockstates、items、models、block declarations、loot tables、およびdata/minecraft/配下のすべて)を削除してください。これらはreferences/pitfalls.mdに記載されている、まさにサイレントに失敗するパターンを示しています。マニフェストと自分のファイルのみを残します。 - コンテンツを追加 Mod 自身の名前空間の下に:
data/<mod-id>/recipe/...、assets/<mod-id>/lang/...。data/minecraft/に書き込まないでください — オーバーライドはdata/<mod-id>/に配置します。 - ビルド:
cargo horizon-mod build→target/horizon-mod/<id>.hmodを生成します。 - チェック:
cargo horizon-mod check target/horizon-mod/<id>.hmod。 - インストール:
.hmodをゲームのhorizon-mods/ディレクトリにコピーします。その場所: Horizon インストールフォルダ内、horizon-client.exeとhorizon-mods.txtの隣(例:...\horizon-windows-x64\horizon-mods\) — これがインストールが読み込む場所です。ユーザーデータディレクトリ(%APPDATA%\Roaming\horizon)は別の場所であり、mods フォルダは保持されていません。新しいインストールにない場合はフォルダを作成します。 - 有効化: コンテンツ Mod は起動時に一度だけ読み込まれます — ゲームを完全に終了し、再起動し、オプション → Mod → 有効化し、再度完全に終了し、再起動し、ワールドを読み込みます。
ステップ 3 の後、ツールがインストールされていれば、オプションで horizon-inspect target/horizon-mod/<id>.hmod --json(終了コード 0 = 有効)を実行して、セキュリティ/マニフェストレポートを取得できます。
動作確認済みのものから始める
バニラアイテム ID を使用したデータ駆動型 レシピが検証済みのベースラインです — テクスチャ、モデル、アイテム登録は不要です:
{
"type": "minecraft:smelting",
"cookingtime": 200,
"experience": 0.35,
"ingredient": "minecraft:rotten_flesh",
"result": { "id": "minecraft:leather" }
}
(minecraft:blasting はかまどの場合; cookingtime は ticks 単位、200 = 約10秒)
一度に一種類のコンテンツを追加し、その都度再テストしてください。 Horizon は理解できないコンテンツをサイレントに拒否する可能性があるため、一度に大量の変更を加えるとデバッグが不可能になります。
苦労して得た落とし穴(Horizon 0.2.97 で確認済み)
バニラアイテムレシピ以外のものを設計する前に references/pitfalls.md を読んでください — そこにある障害モードはサイレントで、何時間も費やすことになります。ハイライト:
- 新しいアイテム/ブロックの宣言は ゲーム内に表示されないことがあります; ゲームはエラーログを出さずにそれらを拒否する可能性があります。
- アイテム
componentsはこのバージョンではサポートされていません。 - マニフェストは
deny_unknown_fieldsを使用します; Mod ID は[a-z0-9_]のみです。
リファレンス — オンデマンドで参照
references/manifest-reference.md—horizon-mod.tomlの全フィールドリファレンス: API lines、capabilities、side、id ルール。マニフェストを書く前に読んでください。references/data-and-assets.md— 検証済みデータ形式(レシピ、言語)とアセットレイアウト。1つの精錬レシピ以上のコンテンツを追加するときに読んでください。references/pitfalls.md— サイレント障害カタログとデバッグ戦略。テスト前および「Mod が表示されない」ときに読んでください。references/validation-and-publishing.md— インスペクタ/チェッカーの使用方法、レジストリルール(index.json、revoked.toml、MOD-POLICY)、決定論的パッケージング。公開前に読んでください。
譲れないルール
- コンテンツ Mod はキャパビリティを宣言します; Mod が必要とする以上のものを要求しないでください — プレイヤーは有効化する前にこれらを確認します。
- Java Mod の jar は Horizon では実行されません;
.jarファイルを移植しようとしないでください。代わりにその データ を移植してください。 - Horizon には Mojang のアセットは含まれていません; Minecraft のアセットを Mod にバンドルしないでください。すべてを独自に派生させるか、バニラの ID を参照してください。