CommunityProgramación y desarrollogithub.com

CGRLabs/horizon-native-mod

Construye mods nativos de Horizon (.hnmod) — paquetes de mixins en Rust compilados en un cliente Horizon personalizado. Úsalo cuando el usuario quiera comportamiento a nivel de código en el juego Horizon (cámara, entrada, renderizado, física, hooks de gameplay), mencione horizon-mixins, inyección de mixins, hooks nativos, NATIVE_HOOKS_API, .hnmod, staging de mods nativos o portar la mecánica de un mod de Java a Horizon. También úsalo al depurar un mod nativo que no se staged, construye o fija correctamente. Incluso si el usuario solo dice 'Mod de Horizon que cambia cómo funciona X', esta skill aplica — los mods de contenido (skill horizon-content-mod) no pueden ejecutar código.

¿Qué es horizon-native-mod?

Esta skill está diseñada para crear mods nativos de Horizon (.hnmod), que son paquetes de mixins en Rust compilados directamente en un cliente Horizon parcheado. A diferencia de los mods de contenido, estos mods ejecutan código no sandboxeado con todos los privilegios del usuario, lo que permite modificar cualquier aspecto del juego a nivel de código (cámara, entrada, renderizado, física, hooks de gameplay). La skill soporta dos estrategias de fijación: por commit exacto (usando `horizon_revision`) o por nivel de API de hooks (`NATIVE_HOOKS_API`), siendo esta última la recomendada para versiones nocturnas. El proceso de construcción es determinista y requiere Linux (WSL2 funciona), Rust 1.95.0, Python 3.12+ y Git. La skill proporciona comandos verificados de principio a fin para ejecutar pruebas unitarias, stage, verificar y empaquetar el mod, asegurando que los números de hooks nunca se adivinen. Además, incluye referencias detalladas a documentos clave como el formato de paquete de mixins, la estrategia de fijación y un ejemplo completo de un mod funcional (cámara y entrada), así como reglas no negociables como no adivinar el nivel de hooks, mantener archivos auxiliares pequeños y de un solo propósito, y advertir explícitamente sobre la falta de sandbox.

Compatible con~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/CGRLabs/horizon-ai-skills/tree/HEAD/skills/horizon-native-mod

Installed? Explore more Programación y desarrollo skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

Preguntar en tu IA favorita

Abre un nuevo chat con esta habilidad de agente ya precargada.

Documentación

Mods Nativos de Horizon (.hnmod)

Los mods nativos son paquetes de mixins en Rust compilados en un cliente Horizon parcheado mediante la herramienta de staging. Son código no sandboxeado que se ejecuta con todos los privilegios del usuario — indícalo claramente en cualquier copia de la UI, y trata el paquete como poderoso: puede hacer cualquier cosa que el juego pueda.

Dos hechos estructurales lo determinan todo:

  1. Fijación. Un paquete nombra la confirmación exacta de Horizon contra la que fue construido (horizon_revision, 40 hex) más la confirmación de horizon-mixins. Alternativamente declara hooks: N (un nivel de NATIVE_HOOKS_API) y entonces el lanzador lo construye en cualquier Horizon cuyo API de hooks sea al menos N — los puntos de hook solo se agregan, nunca se eliminan, por lo que esto sobrevive a las versiones nocturnas. Prefiere puntos de hook.
  2. Plataforma. El staging requiere Linux (WSL2 funciona), Rust 1.95.0, Python 3.12+, Git. Las pruebas unitarias de tiempo de ejecución del código de la biblioteca del paquete se ejecutan en cualquier lugar, incluido Windows.

Anatomía del paquete

<repo>/
  compatibility.json            # fijaciones + nivel de hooks (ver referencias/pipeline.md)
  mixins/<id>/
    horizon-mixin.toml          # bloque de mod + inyecciones (ver referencias/mixin-bundle-format.md)
    runtime.rs                  # #![used como crate de biblioteca inyectada en el cliente]
    <x>_helper.rs               # un archivo por punto de inyección (helpers)
  tools/package.py              # construye el .hnmod determinista
  tools/horizon.py              # stage + construye el cliente parcheado (tomar prestado de gyro)

Un paquete por .hnmod; la carpeta dentro de mixins/ debe llamarse exactamente como el id del mod; solo se envían archivos .rs y .toml.

El pipeline (comandos verificados de principio a fin)

cargo test                                        # pruebas unitarias estilo flight-maths, ejecutable en cualquier lugar
python3 tools/horizon.py stage                    # exportar código fuente fijado de Horizon, planificar/aplicar mixins (~3 min)
cargo check  --locked --offline                   # en el árbol staged
cargo test   --locked --offline
cargo build  --profile fast --locked --offline    # cliente parcheado (~6 min la primera vez)
python3 tools/package.py --check-hooks            # target/<id>-<version>.hnmod + verifica la declaración de hooks

--check-hooks obtiene native_hooks.rs en la confirmación fijada y afirma que el nivel de hooks declarado realmente existe — nunca permitas que el número sea una suposición.

Dónde vive el conocimiento

  • references/mixin-bundle-format.md — campos de horizon-mixin.toml, los tres tipos de inyección (HEAD, RETURN, OVERWRITE), sintaxis de enlace, $value, el [[module]] runtime crate. Léelo antes de escribir cualquier inyección.
  • references/pipeline.md — compatibility.json campo por campo, estrategia de fijación (commit vs hooks), internos del staging, reglas de empaquetado determinista, flujo "Añadir desde GitHub" del lanzador. Léelo antes de empaquetar o elegir fijaciones.
  • references/example-gyro.md — recorrido anotado de un mod completo, funcional y enviado (rollo de cámara + captura de entrada en 6 puntos de hook). Léelo antes de diseñar algo no trivial; copia su estructura.

No negociables

  • Nunca adivines el número de hooks — verifícalo contra la confirmación fijada (--check-hooks hace esto).
  • Mantén los archivos helper pequeños y de un solo propósito; pon la lógica en runtime.rs donde pueda ser probada unitariamente.
  • Los mods nativos no se revisan por defecto: el registro/lanzador muestra una advertencia de código no sandboxeado, y tu README también debe hacerlo.
  • No envíes activos o código de Mojang; licencia de estilo MIT consistente con la de Horizon.
  • La fila Opciones → Mods imprime VERSION de runtime.rs; mantenlo igual a la versión del manifiesto o la verificación falla.

Individual skills in this repo

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

Skills relacionados