Community코딩 & 개발github.com

CGRLabs/horizon-content-mod

Horizon 게임(마인크래프트 Java Edition 26.3의 Rust 재구현)용 데이터 기반 콘텐츠 모드(.hmod)를 빌드, 검증, 설치합니다. 사용자가 Horizon 모드 생성, 레시피/블록/아이템/전리품 테이블/태그/언어 파일 추가, 게임에 표시되지 않는 모드 수정, .hmod 패키징/확인, 또는 horizon-mod.toml/기능/Horizon 모드 파이프라인에 대해 질문할 때 사용하세요. Java 데이터팩 스타일 콘텐츠를 Horizon으로 이식할 때도 사용합니다.

horizon-content-mod란 무엇인가요?

이 스킬은 **Horizon 게임(마인크래프트 Java Edition 26.3의 Rust 재구현)용 콘텐츠 모드**를 만드는 개발자를 위한 것입니다. 콘텐츠 모드는 코드 없이 데이터와 에셋만 포함하는 `.hmod` zip 파일이며, `horizon-mod.toml` 매니페스트와 `assets/`, `data/` 디렉토리로 구성됩니다. 이 스킬은 공식 `cargo horizon-mod` 도구를 사용한 프로젝트 스캐폴딩, 빌드, 검증, 설치 전 과정을 안내하며, Horizon 게임에서 실제로 작동하는 검증된 레시피 예제(예: 썩은 고기를 가죽으로 제련)와 함께 흔한 함정(아이템/블록 선언이 조용히 실패하는 문제 등)에 대한 상세한 참조 자료를 제공합니다. 스킬의 작업 루프는 한 번에 한 가지 콘텐츠 종류를 추가하고 테스트할 것을 강조하며, 모드가 게임에 표시되지 않는 조용한 실패를 피하기 위해 `references/pitfalls.md`를 먼저 읽도록 권장합니다. 지원 플랫폼은 Cursor, Claude Code, Codex, Windsurf 등 Cargo 기반 Horizon 개발 환경을 사용하는 모든 도구입니다.

지원 대상~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/CGRLabs/horizon-ai-skills/tree/HEAD/skills/horizon-content-mod

Installed? Explore more 코딩 & 개발 skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

즐겨 사용하는 AI에게 물어보기

이 에이전트 스킬이 미리 로드된 새 채팅을 엽니다.

문서

Horizon 콘텐츠 모드 (.hmod)

Horizon 콘텐츠 모드는 데이터와 에셋만 포함하며 코드는 없습니다. .hmod는 horizon-mod.toml 매니페스트와 선택적 assets/ 및 data/ 디렉토리를 포함하는 zip 파일로, 게임 시작 시 기본 리소스 위에 계층화됩니다. WebAssembly(mod.wasm)는 사용이 중단되었으며 거부됩니다. 사용자가 실행 가능한 동작을 원한다면 네이티브 모드입니다. horizon-native-mod 스킬을 참조하세요.

작업 루프

  1. 스캐폴드: 프로젝트 폴더(매니페스트 + data//assets/)를 생성하거나 cargo horizon-mod new <path> --name "Name"을 실행합니다. 스캐폴드를 사용한 경우: 생성된 예제 콘텐츠(블록 상태, 아이템, 모델, 블록 선언, 전리품 테이블 및 data/minecraft/ 아래의 모든 것)를 추가하기 전에 삭제하세요. 이는 references/pitfalls.md에 설명된 조용히 실패하는 패턴을 보여줍니다. 매니페스트와 자신의 파일만 남겨두세요.
  2. 콘텐츠 추가: 모드 고유의 네임스페이스 아래에 추가하세요: data/<mod-id>/recipe/..., assets/<mod-id>/lang/.... data/minecraft/에는 절대 쓰지 마세요. 재정의는 data/<mod-id>/에 넣으세요.
  3. 빌드: cargo horizon-mod build → target/horizon-mod/<id>.hmod 생성.
  4. 확인: cargo horizon-mod check target/horizon-mod/<id>.hmod.
  5. 설치: .hmod 파일을 게임의 horizon-mods/ 디렉토리에 복사하세요. 위치: Horizon 설치 폴더 내, horizon-client.exe 및 horizon-mods.txt 옆 (예: ...\horizon-windows-x64\horizon-mods\) — 설치 파일이 여기에서 로드됩니다. 사용자 데이터 디렉토리(%APPDATA%\Roaming\horizon)는 다른 위치이며 모드 폴더가 없습니다. 새 설치에 폴더가 없으면 생성하세요.
  6. 활성화: 콘텐츠 모드는 시작 시 한 번 로드됩니다. 게임을 완전히 종료하고 다시 시작한 후, 옵션 → 모드 → 활성화, 다시 완전히 종료하고 다시 시작한 후, 월드를 로드하세요.

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은 틱 단위, 200 = 약 10초.)

한 번에 한 가지 콘텐츠 종류를 추가하고 각각 다시 테스트하세요. Horizon은 이해하지 못하는 콘텐츠를 조용히 거부할 수 있으므로, 한꺼번에 많은 내용을 추가한 모드는 디버그가 불가능합니다.

힘들게 얻은 함정 (Horizon 0.2.97에서 확인)

바닐라 아이템 레시피를 넘어서는 설계를 하기 전에 references/pitfalls.md를 읽으세요. 거기에 설명된 실패 모드는 조용히 발생하며 시간을 낭비합니다. 주요 내용:

  • 새 아이템/블록 선언이 게임에 나타나지 않을 수 있음; 게임이 오류 로그 없이 이를 거부할 수 있습니다.
  • 아이템 components는 이 버전에서 지원되지 않습니다.
  • 매니페스트는 deny_unknown_fields를 사용합니다. 모드 ID는 [a-z0-9_]만 허용됩니다.

참조 — 필요할 때 읽기

  • references/manifest-reference.md — 전체 horizon-mod.toml 필드 참조: api lines, capabilities, side, id 규칙. 매니페스트를 작성하기 전에 읽으세요.
  • references/data-and-assets.md — 검증된 데이터 형식(레시피, 언어) 및 에셋 레이아웃. 하나의 제련 레시피를 넘어 콘텐츠를 추가할 때 읽으세요.
  • references/pitfalls.md — 조용한 실패 카탈로그 및 디버깅 전략. 테스트 전과 "모드가 나타나지 않을 때"마다 읽으세요.
  • references/validation-and-publishing.md — 검사기/확인기 사용법, 레지스트리 규칙(index.json, revoked.toml, MOD-POLICY), 결정론적 패키징. 게시 전에 읽으세요.

변경 불가능한 규칙

  • 콘텐츠 모드는 capabilities를 선언합니다. 모드에 필요한 것보다 더 많이 요청하지 마세요. 플레이어는 활성화 전에 이를 확인합니다.
  • Java 모드 jar 파일은 Horizon에서 실행되지 않습니다. .jar 파일을 포팅하려고 하지 말고, 그 데이터를 포팅하세요.
  • Horizon에는 Mojang 에셋이 포함되어 있지 않습니다. Minecraft 에셋을 모드에 번들로 넣지 마세요. 모든 것을 파생하거나 바닐라 ID를 참조하세요.

Individual skills in this repo

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

관련 스킬