Community程式設計與開發github.com

CGRLabs/horizon-native-mod

構建 Horizon 原生模組 (.hnmod) — 將 Rust mixin 套件編譯成客製化的 Horizon 用戶端二進位檔。當使用者需要在 Horizon 遊戲中實現程式碼級別的行為(如鏡頭、輸入、渲染、物理、遊戲玩法鉤子),或提及 horizon-mixins、mixin 注入、原生鉤子、NATIVE_HOOKS_API、.hnmod、原生模組暫存、移植 Java 模組機制時使用。

horizon-native-mod 是什麼?

此技能專注於建置 Horizon 原生模組(.hnmod),這些模組是透過暫存工具將 Rust mixin 套件編譯到修補後的 Horizon 用戶端中。原生模組是未經沙盒處理、擁有完整使用者權限的程式碼,能夠執行遊戲能做的任何事情,因此必須在使用者介面中明確標示其不受限制的特性。技能涵蓋兩個關鍵結構:固定(pinning)機制,讓套件綁定特定 Horizon 提交版本或宣告 NATIVE_HOOKS_API 等級以兼容夜版;以及平台要求(Linux/WSL2、Rust 1.95.0、Python 3.12+)。使用者可透過標準管線(測試、暫存、編譯、打包)並搭配 --check-hooks 參數確保鉤子等級正確,還應參考 references/ 目錄下的規範(如 mixin-bundle-format.md、pipeline.md、example-gyro.md)來設計注入點與套件結構。

相容平台~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/CGRLabs/horizon-ai-skills/tree/HEAD/skills/horizon-native-mod

Installed? Explore more 程式設計與開發 skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

在你喜歡的 AI 中提問

開啟一個已預先載入此 Agent Skill 的新對話。

說明文件

Horizon 原生模組 (.hnmod)

原生模組是由暫存工具編譯到修補後的 Horizon 用戶端中的 Rust mixin 套件。它們是未經沙盒處理、擁有完整使用者權限的程式碼——請在任何使用者介面文案中明確說明,並將套件視為強大的工具:它可以執行遊戲能做的任何事情。

兩個結構性事實驅動一切:

  1. 固定 (Pinning)。 套件指定它所針對的具體 Horizon 提交版本 (horizon_revision,40 位十六進位) 加上 horizon-mixins 的提交版本。或者,它宣告 hooks: N(一個 NATIVE_HOOKS_API 等級),然後啟動器可以在任何鉤子 API 至少為 N 的 Horizon 版本上建置它——鉤子點只會新增,不會移除,因此這能與夜版相容。優先使用鉤子點。
  2. 平台。 暫存需要 Linux(WSL2 也可),Rust 1.95.0,Python 3.12+,Git。套件庫程式碼的執行時期單元測試可在任何地方執行,包括 Windows。

套件結構

<repo>/
  compatibility.json            # 固定 + 鉤子等級 (參見 references/pipeline.md)
  mixins/<id>/
    horizon-mixin.toml          # 模組區塊 + 注入 (參見 references/mixin-bundle-format.md)
    runtime.rs                  # 作為注入到用戶端中的庫 crate
    <x>_helper.rs               # 每個注入點一個檔案(輔助函式)
  tools/package.py              # 建置確定性的 .hnmod
  tools/horizon.py              # 暫存 + 建置修補後的用戶端 (借鑒自 gyro)

每個 .hnmod 對應一個套件;mixins/ 下的資料夾必須與模組 ID 完全相同;僅 .rs 和 .toml 檔案會出貨。

管線(指令已點對點驗證)

cargo test                                        # flight-maths 風格的單元測試,可在任何地方執行
python3 tools/horizon.py stage                    # 匯出固定的 Horizon 原始碼,規劃/套用 mixin(約 3 分鐘)
cargo check  --locked --offline                   # 在暫存樹中檢查
cargo test   --locked --offline
cargo build  --profile fast --locked --offline    # 修補後的用戶端(首次約 6 分鐘)
python3 tools/package.py --check-hooks            # target/<id>-<version>.hnmod + 驗證鉤子聲明

--check-hooks 會在固定的提交版本中擷取 native_hooks.rs 並斷言宣告的 hooks 等級確實存在——永遠不要讓這個數字是猜測的。

知識存放位置

  • references/mixin-bundle-format.md — horizon-mixin.toml 欄位、三種注入類型(HEAD、RETURN、OVERWRITE)、綁定語法、$value、[[module]] 執行時期 crate。在撰寫任何注入之前請先閱讀。
  • references/pipeline.md — compatibility.json 各欄位詳述、固定策略(提交 vs 鉤子)、暫存內部機制、確定性打包規則、啟動器「從 GitHub 新增」流程。在打包或選擇固定點之前請先閱讀。
  • references/example-gyro.md — 一個完整、可運作、已出貨的模組(6 個鉤子點的鏡頭旋轉 + 輸入捕捉)的註釋式逐步解說。在設計任何非平凡功能之前請先閱讀;複製其結構。

不可妥協的原則

  • 永遠不要猜測 hooks 數字——請根據固定的提交版本驗證(--check-hooks 會執行此操作)。
  • 保持輔助檔案小巧且單一用途;將邏輯放在 runtime.rs 中以便進行單元測試。
  • 原生模組預設不會被審查:註冊表/啟動器會顯示未經沙盒處理的程式碼警告,你的 README 也必須包含此警告。
  • 不得包含 Mojang 的資產或程式碼;採用與 Horizon 一致的 MIT 風格授權。
  • 設定 → 模組行會顯示 runtime.rs 中的 VERSION;請保持它與清單版本一致,否則檢查會失敗。

Individual skills in this repo

This repo contains 1 individual skill — each has its own dedicated page.

相關技能