데이터팩이 로드되지 않나요? 폴더 구조와 반드시 일치해야 하는 세 가지 이름
/datapack list에 나타나지 않는 데이터팩은 코드 문제가 아니라 경로 문제입니다. 정확한 트리 구조, 네임스페이스 규칙, 그리고 function처럼 단수형으로 이름이 바뀐 폴더들을 정리했습니다.
/datapack list에 아무것도 표시되지 않거나, 팩이 비활성화된 것으로 나옵니다. 거의 항상 JSON은 멀쩡하고 폴더가 잘못된 경우입니다.
트리 구조
world/datapacks/my_pack/
├── pack.mcmeta
└── data/
├── my_namespace/
│ ├── function/ one .mcfunction per file
│ ├── recipe/
│ ├── loot_table/
│ ├── advancement/
│ └── predicate/
└── minecraft/
└── tags/
└── function/
└── load.json
세 가지 이름이 일치해야 하는데, 그중 하나는 눈에 잘 띄지 않습니다:
- 팩 루트의
pack.mcmeta—data/안이 아니라 옆에 있어야 합니다. data/<namespace>/— 네임스페이스이며, 소문자에 공백이 없어야 합니다. 이 이름이my_namespace:my_function의 접두사가 됩니다.- 카테고리 폴더 이름 — 이름이 바뀌었고, 여기가 보통 문제의 원인입니다.
폴더 이름이 단수형으로 변경되었습니다
이 변경으로 많은 팩과 많은 튜토리얼이 망가졌습니다:
| 이전 | 현재 |
|---|---|
functions/ | function/ |
recipes/ | recipe/ |
loot_tables/ | loot_table/ |
advancements/ | advancement/ |
predicates/ | predicate/ |
structures/ | structure/ |
복수형 이름을 사용하는 팩은 로드됩니다 — /datapack list에 나타납니다 — 그리고 그냥 아무 동작도 하지 않습니다. 이것이 이 문제들 중 가장 혼란스러운 실패 양상입니다. tags/는 복수형으로 남았지만, 그 안의 폴더들은 나머지와 함께 단수형이 되었습니다 — tags/functions/는 이제 tags/function/입니다. 네, 일관성이 없습니다.
자동으로 무언가 실행하기
두 가지 특수 태그:
data/minecraft/tags/function/load.json → runs once on load/reload
data/minecraft/tags/function/tick.json → runs every tick
data/minecraft/를 사용해야 하며, 자신의 네임스페이스가 아니라는 점에 주의하세요 — 태그는 Minecraft에 속하고, 태그가 가리키는 함수는 여러분에게 속합니다:
{ "values": ["my_namespace:setup"] }
순서대로 진단하기
/datapack list— 팩이 아예 목록에 없다면pack.mcmeta가 없거나, 형식이 잘못되었거나, 한 단계 너무 깊이 들어간 것입니다.- 목록에는 있지만 비활성화됨 —
/datapack enable "file/my_pack".file/접두사와 따옴표에 주의하세요. - 목록에 있고 활성화되었지만 아무 동작도 안 함 — 복수형 폴더 이름, 또는 로드 태그를
minecraft대신 자신의 네임스페이스에 넣은 경우입니다. /reload를 실행하고 로그를 확인하세요 (logs/latest.log, 또는 런처 출력). 문법 오류가 있는 함수는 "Failed to load function …"과 함께 로그에 남습니다. 채팅에는 리로드가 완료되었다고만 표시됩니다.
압축 여부
둘 다 작동합니다. 압축한다면 pack.mcmeta가 zip 루트에 있어야 하며, 리소스 팩과 정확히 같습니다. 개발 중에는 폴더 형태가 더 편한데, /reload가 다시 압축하지 않아도 수정 사항을 반영하기 때문입니다.
서버에서의 위치
서버에서는 경로가 <world>/datapacks/이며, 여기서 <world>는 server.properties의 level-name 값입니다 — 서버 루트가 아닙니다. 팩을 서버 폴더에 그냥 넣는 것이 서버 측에서 가장 흔한 실수입니다.
현재 폴더 이름과 유효한 pack.mcmeta로 팩을 구성한 다음, 바로 넣을 수 있게 다운로드하려면 Datapack Studio를 사용하세요 — 그리고 위에서 설명한 대로 로드 태그를 data/minecraft/tags/function/에 넣으세요.