MC Toolkit

가이드 / 문제 해결

데이터팩이 로드되지 않나요? 폴더 구조와 반드시 일치해야 하는 세 가지 이름

/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

세 가지 이름이 일치해야 하는데, 그중 하나는 눈에 잘 띄지 않습니다:

  1. 팩 루트의 pack.mcmeta — data/ 안이 아니라 옆에 있어야 합니다.
  2. data/<namespace>/ — 네임스페이스이며, 소문자에 공백이 없어야 합니다. 이 이름이 my_namespace:my_function의 접두사가 됩니다.
  3. 카테고리 폴더 이름 — 이름이 바뀌었고, 여기가 보통 문제의 원인입니다.

폴더 이름이 단수형으로 변경되었습니다

이 변경으로 많은 팩과 많은 튜토리얼이 망가졌습니다:

이전현재
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"] }

순서대로 진단하기

  1. /datapack list — 팩이 아예 목록에 없다면 pack.mcmeta가 없거나, 형식이 잘못되었거나, 한 단계 너무 깊이 들어간 것입니다.
  2. 목록에는 있지만 비활성화됨 — /datapack enable "file/my_pack". file/ 접두사와 따옴표에 주의하세요.
  3. 목록에 있고 활성화되었지만 아무 동작도 안 함 — 복수형 폴더 이름, 또는 로드 태그를 minecraft 대신 자신의 네임스페이스에 넣은 경우입니다.
  4. /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/에 넣으세요.

데이터 팩 스튜디오 →

더 많은 가이드

모두 보기 →