Community编程与开发github.com

CGRLabs/horizon-native-mod

构建 Horizon 原生模组 (.hnmod) — 将 Rust 混入捆绑包编译为自定义 Horizon 客户端二进制文件。当用户需要在 Horizon 游戏中实现代码级行为(如摄像机、输入、渲染、物理、游戏机制钩子)时使用,涉及 horizon-mixins、混入注入、原生钩子、NATIVE_HOOKS_API、.hnmod、原生模组暂存,或移植 Java 模组机制。也用于调试暂存、构建或引脚失败的原生模组。即使用户只说“修改 X 工作方式的 Horizon 模组”,也适用此技能 —— 内容模组(horizon-content-mod 技能)无法运行代码。

horizon-native-mod 是什么?

此技能定义了 Horizon 原生模组 (.hnmod) 的完整创建流程。原生模组是编译成打补丁的 Horizon 客户端的 Rust 混入捆绑包,拥有完全的用户权限 —— 不是沙盒化代码,能执行游戏所能做的任何事情。核心在于两个结构事实:1) 引脚(pinning):捆绑包要么精确指定编译时所基于的 Horizon 提交哈希(horizon_revision)和 horizon-mixins 提交,要么声明 NATIVE_HOOKS_API 级别(hooks: N),使得启动器能在任何钩子 API 至少为 N 的 Horizon 上构建 —— 钩子点只增不减,因此这只在 Nightly 版本中存活,优先使用钩子点。2) 平台:暂存需要 Linux(WSL2 也可)、Rust 1.95.0、Python 3.12+ 和 Git;运行时单元测试可在任何平台(包括 Windows)运行。技能涵盖完整的管线命令(cargo test、stage、check、build、package),并强调关键引用文档(mixin-bundle-format.md、pipeline.md、example-gyro.md)。非协商事项包括:从不猜测 hooks 数值、保持辅助文件简短单一、原生模组默认不被审核需显示警告、不发送 Mojang 资产或代码、清单版本与运行时 VERSION 一致。

兼容平台~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 混入捆绑包。它们是未沙盒化的代码,拥有完全的用户权限 —— 在任何 UI 副本中明确说明,并将捆绑包视为强大:它可以做游戏能做的任何事情。

两个结构事实驱动一切:

  1. 引脚。 捆绑包命名了其编译时所针对的精确 Horizon 提交(horizon_revision,40 位十六进制)以及 horizon-mixins 提交。或者它声明 hooks: N(一个 NATIVE_HOOKS_API 级别),然后启动器在任何钩子 API 至少为 N 的 Horizon 上构建它 —— 钩子点只增不减,所以这能跨越 Nightly 版本生存。优先使用钩子点。
  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 源码,计划/应用混入(约 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.

相关技能