Horizon 콘텐츠 모드 (.hmod)
Horizon 콘텐츠 모드는 데이터와 에셋만 포함하며 코드는 없습니다. .hmod는 horizon-mod.toml 매니페스트와 선택적 assets/ 및 data/ 디렉토리를 포함하는 zip 파일로, 게임 시작 시 기본 리소스 위에 계층화됩니다. WebAssembly(mod.wasm)는 사용이 중단되었으며 거부됩니다. 사용자가 실행 가능한 동작을 원한다면 네이티브 모드입니다. horizon-native-mod 스킬을 참조하세요.
작업 루프
- 스캐폴드: 프로젝트 폴더(매니페스트 +
data//assets/)를 생성하거나cargo horizon-mod new <path> --name "Name"을 실행합니다. 스캐폴드를 사용한 경우: 생성된 예제 콘텐츠(블록 상태, 아이템, 모델, 블록 선언, 전리품 테이블 및data/minecraft/아래의 모든 것)를 추가하기 전에 삭제하세요. 이는references/pitfalls.md에 설명된 조용히 실패하는 패턴을 보여줍니다. 매니페스트와 자신의 파일만 남겨두세요. - 콘텐츠 추가: 모드 고유의 네임스페이스 아래에 추가하세요:
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)는 다른 위치이며 모드 폴더가 없습니다. 새 설치에 폴더가 없으면 생성하세요. - 활성화: 콘텐츠 모드는 시작 시 한 번 로드됩니다. 게임을 완전히 종료하고 다시 시작한 후, 옵션 → 모드 → 활성화, 다시 완전히 종료하고 다시 시작한 후, 월드를 로드하세요.
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를 참조하세요.