최근 수정 시각 : 2024-11-26 10:50:39

마인크래프트/팩/데이터 팩

파일:상위 문서 아이콘.svg   상위 문서: 마인크래프트/팩

파일:마인크래프트 로고.svg
{{{#!wiki style="margin: -0px -10px -5px; min-height:calc(1.5em + 5px)"
{{{#!folding [ 펼치기 · 접기 ]
{{{#!wiki style="margin: -5px -1px -11px; word-break:keep-all"
<colbgcolor=darkgreen><colcolor=#fff> 기본 플레이
시스템세계 (시드) · 게임 모드 · 난이도 · 게임 규칙 · 엔딩 · 죽음 메시지 · 스플래시 · 명령어 · NBT · 런처
인게임아이템 · (플레이어) · 개체 · 날씨 · 차원 · 생물군계 · 구조물 · 마법 부여 · 상태 효과 · 조작법 · 피해 · 업적
도움말튜토리얼 · (탐험 · 파밍 · 회로) · 재생 가능한 자원 · 브릿징 · PVP · 파쿠르 · 스피드런 · 건축
시리즈 및 매체
출시 에디션자바 에디션 (업데이트) · 베드락 에디션 (업데이트) · 포켓 에디션* · 콘솔 에디션* · 파이 에디션*
파생 게임마인크래프트 던전스* · 마인크래프트 레전드* · 마인크래프트 에듀케이션 · 마인크래프트: 스토리 모드* · 마인크래프트 어스*
미디어OST · 관련 서적 · 레고 · 영화 · 애니메이션 · Minecraft Live · Minecraft Now · Minecraft Monthly
유저 콘텐츠
창작 요소2차 창작 · 망토 · · 모드 (개발 · · 모드팩) · 애드온 · (리소스 팩 · 데이터 팩) · 외부 프로그램 ·
멀티 콘텐츠멀티플레이 · 서버 · 플러그인 · Realms · EULA
개발개발 기초 · 모드 개발 · 플러그인 개발
기타
이야깃거리여담 · 커뮤니티 · 사건 사고 · 문제점 · 용어 · 지원 언어 · 머나먼 땅 · 이미테이션 게임 · 히로빈
관련 문서나무위키 마인크래프트 프로젝트 · 마인크래프트로 분류된 문서 · 마인크래프트의 하위 문서
* 표시는 서비스가 종료되었거나 개발이 중단되었다는 표시이다. }}}}}}}}}

1. 개요2. 제작
2.1. pack.mcmeta2.2. function 작성법
3. 기능
3.1. advancement / 발전 과제3.2. chat type / 대화3.3. damage type / 피해 유형3.4. dimension / 차원
3.4.1. dimension_type
3.5. enchantment / 마법 부여3.6. enchantment provider3.7. instrument / 염소뿔3.8. function / 함수
3.8.1. 매크로 기능
3.9. item modifier / 아이템 수정자3.10. jukebox_song / 주크박스 음악3.11. loot_table / 드롭 아이템3.12. painting variant / 그림 3.13. predicate / 술어 3.14. recipe / 조합법3.15. structure / 구조물3.16. worldgen
3.16.1. biome / 생물 군계
4. 유저 표준5. 목록6. 변경 내역
6.1. 1.216.2. 1.206.3. 1.196.4. 1.186.5. 1.176.6. 1.166.7. 1.156.8. 1.146.9. 1.13

1. 개요

데이터 팩은 마인크래프트의 데이터들을 바꿀 수 있는 시스템이다. 스냅샷 17w43a부터 추가되었다. 별도의 모드로더 필요 없이 발전 과제, 함수, 드롭 아이템, 구조물, 조합법, 태그를 바꾸거나 추가할 수 있다. 맵 폴더 안에다가 data라는 이름의 폴더를 또 추가하여 폴더 형식의 데이터 팩을 넣은 다음 /datapack 명령어로 활성화하면 된다.

2. 제작

데이터 팩 파일은 .minecraft/saves/(월드)/datapacks에다 파일을 만들어야 한다. 폴더 이름은 라틴 문자로 지어야 한다. 그리고 data 폴더 안에 또 namespace에 해당하는 폴더를 만들어야 한다. 만약에 main이라는 폴더를 만들었을 경우 functions로 예를 들자면 function main/함수 이름이다.

예를 들어,
world 라는 이름의 월드에 나만의 조합법을 만들어서 플레이하고 싶다면
.minecraft > saves > world > datapacks > (파일이름) > data > crafting > recipe > 원하는 조합법.json
이렇게 넣어야만 데이터 팩을 사용할 수 있다.

===# 폴더 구조 #===
  • (데이터 팩 이름)
    • pack.mcmeta
    • pack.png
    • data
      • (namespace)
        • advancement
          • (advancement).json
        • chat_type
          • (advancement).json
        • damage_type
          • (damage_type).json
        • datapacks
        • dimension
          • (dimension).json
        • dimension_type
          • (dimension type).json
        • function
          • (function).mcfunction
        • loot_table
          • (loot_table).json
        • recipe
          • (recipe).json
        • predicate
          • (predicate).json
        • structure
          • (structure).nbt
        • tags
          • banner_pattern
            • (tag).json
          • block
            • (tag).json
          • cat_variant
            • (tag).json
          • entity_type
            • (tag).json
          • damage_type
            • (tag).json
          • fluid
            • (tag).json
          • function
            • (tag).json
          • item
            • (tag).json
        • worldgen
          • biome
            • (biome).json
          • configured_carver
            • (configured_carver).json
          • configured_feature
            • (configured_feature).json
          • configured_structure_feature
            • (configured_structure_feature).json
          • configured_surface_builde
            • (configured_surface_builder).json
          • processor_list
            • (processor_list).json
          • template_pool
            • (template_pool).json
        • item_modifier
          • (item_modifiers).json

2.1. pack.mcmeta

데이터 팩 파일 안에는 pack.mcmeta라는 파일을 만들어 주면 된다. 이 파일은 JSON 형식으로 되어있는데, 리소스팩 제작 때 필수로 넣어야 하는 것이다. 이 과정에서 오류가 발생하면 데이터 팩을 불러오지 못한다. 파일 확장자명이 안 보인다면 윈도우 기준으로 파일 탐색기에서 위에 있는 보기를 눌러준 다음에 파일 확장명을 체크 표시해주면 된다. 이 과정을 정상적으로 끝마치면 다음 코드를 작성하면 된다.
#!syntax json
{
  "pack": {
    "pack_format": 1,
    "description": "namuwiki -- 여기는 나무위키를 지우고 자기가 원하는 글을 쓰면 데이터 팩의 설명이 된다."
  }
}
다중 버전을 지원하는 팩을 만들려면 다음과 같이 작성한다. 작성 예시는 1.20.2부터 1.20.4까지 버전을 지원할 경우이다.(이 기능은 1.20.2부터 추가되었다.)
#!syntax json
{
  "pack": {
    "pack_format": 26,
    "supported_formats":{
      "min_inclusive":18,
      "max_inclusive":26
    },
    "description": "데이터 팩의 설명"
  }
}
중요: pack_format 값은 데이터 팩을 적용할 마인크래프트 버전에 따라 다르게 설정해야 된다. 값은 다음과 같다.
57 1.21.2
48 1.21 ~ 1.21.1
41 1.20.5 ~ 1.20.6
26 1.20.3 ~ 1.20.4
18 1.20.2
15 1.20 ~ 1.20.1
12 1.19.4
10 1.19 ~ 1.19.3
9 1.18.2
8 1.18 ~ 1.18.1
7 1.17 ~ 1.17.1
6 1.16.2 ~ 1.16.5
5 1.15 ~ 1.16.1
4 1.13 ~ 1.14.4

2.2. function 작성법

말 그대로 함수로 플레이어가 명령 목록을 적은 텍스트 파일을 저장하고 게임내에서 사용할 수 있게 해준다. 저장 확장자는 .mcfunction. UTF-8로 인코딩하여 사용하는 것이 여러 문제를 예방할 수 있다.[1]

기능을 사용하려면 먼저 텍스트 파일을 .minecraft/saves/(월드이름)/datapacks/(데이터팩 이름)/data/(네임 스페이스)/function 내의 최상위 폴더에 배치해야 한다. 새로운 최상위 폴더의 이름은 내부 함수를 실행할 때 사용되는 네임 스페이스가 된다. 최상위 폴더 내의 하위 폴더에 기능을 배치 할 수도 있다. (데이터팩 이름) 폴더에 pack.mcmeta 파일이 있어야 한다.

예를 들어 custom:example/test라는 함수를 실행하면 data/custom/function/example/test.mcfunction에서 데이터를 불러오게 된다. 만약 네임스페이스를 쓰지 않았다면 minecraft:라는 기본 설정된 네임 스페이스를 지정받게 된다. 하지만 나중에 기본 네임 스페이스를 추가하였을 때 의도하지 않은 동작을 방지하기 위해선 사용자 지정 네임 스페이스를 사용하는 것을 추천한다.

텍스트 파일로 이루어져 있는 함수는 수정하기 쉽고, 명령 블록에서 긴 명령어를 작성하는 것 보다 렉을 더 적게 유발한다.
/reload 명령어를 사용해서 함수 파일을 로딩하면 마인크래프트에 재접속 하지 않고 바뀐 함수를 적용할 수 있다.

/function 명령어를 성공적으로 입력했다면 함수 '<경로>'에 있는 명령어 <개수>개를 실행했습니다라고 출력된다. 내장된 함수는 위 메세지를 출력하지 않는다. 함수 내에서 명령의 성공적인 출력은 비교기로 측정 할 수 없다 (/ execute store 명령을 사용하여 동일한 효과를 얻을 수는 있다.)

명령 블록이 실행하는 모든 명령어는 권한 레벨2를 넘을 수 없다. 하지만 위와 다르게 보통의 멀티플레이 서버 구현 프로그렘에서는 server.properties의 function-permission-level에서 자유롭게 설정할 수 있다.

함수 구문을 작성하려면 아래의 function 부분 참고.

3. 기능

3.1. advancement / 발전 과제

발전과제를 추가/변경하고 이름과 달성 조건, 경험치 획득 및 명령어 실행을 할 수 있다.

이 사이트에서 쉽게 생성할 수 있다.

3.2. chat type / 대화

대화 메시지를 변경한다. 또한 /say, /me, /msq, /teammsg 의 출력 형식도 변경이 가능하다.

대화 메시지를 '<이름> 내용'대신 '이름: 내용'으로 변경하기.
#!syntax json
파일 경로: .minecraft\saves\<맵 이름>\datapacks\<데이터 팩 이름>\data\minecraft\chat_type\chat.json
{
  "chat": {
    "parameters": [
      "sender",
      "content"
    ],
    "translation_key": "%s: %s"
  },
  "narration": {
    "parameters": [
      "sender",
      "content"
    ],
    "translation_key": "chat.type.text.narrate"
  }
}

3.3. damage type / 피해 유형

개체가 받을 수 있는 피해를 정의한다. 즉 피해 유형과 해당 유형의 피해로 인해 개체가 사망할 때 사용되는 사망 메시지를 제어할 수 있다.

또한 피해 유형 태그는 게임에서 피해가 적용되는 방식의 다양한 측면을 제어한다. 자세한 내용은 tag 문단 참고.

사용자 지정 피해 유형은 damage 명령어만 가능하다.
    • message_id <
      >
      • 죽음 메시지를 제어한다. 번역 문자열을 사용한다. death.attack.<message_id>
    • exhaustion <
      >
      • 피해를 입을때마다 소진 수치를 늘린다. 자세한 내용은 배고픔 문단 참고
    • scaling <
      >
      • 난이도에 따라 피해가 변경된다. 가능한 값은 다음과 같다.
        • never - 항상 동일하다.
        • always - 난이도가 다르면 피해량도 다르다.
        • when_caused_by_living_non_player - 공격자가 플레이어가 아닌 몹이라면 난이도에 따라 다르다.
    • effects <
      >
      • (선택 사항) 들리는 소리를 제어한다. 가능한 값은 다음과 같다.
        • hurt(기본값) - 기본 피해 소리
        • thorns - 가시 마법 부여 피해 소리
        • drowning - 익사 피해 소리
        • burning - 불 피해 소리
        • poking - 달콤한 열매 피해 소리
        • freezing - 동사 피해 소리
    • death_message_type <
      >
      • (선택 사항)

3.4. dimension / 차원

1.16부터 생겼으며 data 폴더 안에 minecraft 폴더 안에 dimension , dimension_type 폴더 만들면 된다. 그 폴더 안에 영어 소문자 _ 로만 차원 이름을 적고 .json을 만들면 된다.

추가된 차원을 가고 싶다면 /execute in (폴더 이름):(차원 이름) run tp ~ ~ ~로 가면 된다. 추가된 차원에 엔티티를 소환하거나 블록을 설치하는 것 또한 execute in을 이용하면 된다.[2]

완전한 평지 엔드 버전
#!syntax json
{
      "generator": {
        "settings": {
          "structures": {
            "stronghold": {
              "distance": 32,
              "spread": 3,
              "count": 128
            },
            "structures": {}
          },
          "layers": [
            {
              "height": 1,
              "block": "minecraft:bedrock"
            },
            {
              "height": 3,
              "block": "minecraft:end_stone"
            }
          ],
          "biome": "minecraft:the_end"
        },
        "type": "minecraft:flat"
      },
      "type": {
    "ultrawarm": false,
    "natural": true,
    "coordinate_scale": 1.0,
    "piglin_safe": false,
    "respawn_anchor_works": false,
    "bed_works": false,
    "has_raids": true,
    "has_skylight": false,
    "has_ceiling": false,
    "ambient_light": 0.0,
    "fixed_time": 6000,
    "logical_height": 256,
    "infiniburn": "minecraft:infiniburn_end"
  }
}

3.4.1. dimension_type

차원 타입을 설정하는 곳 기본값은 차원마다 다르다.
설명 minecraft:overworld minecraft:the_nether minecraft:the_end
ambient_light빛의 양 0.0 0.1 0.0
bed_works플레이어가 침대에 누울 수 있는지 여부, false일 시 폭발 true false false
coordinate_scale각 월드 당 좌표 스케일. 네더에서 1블록 움직임은 오버월드에서 8블록 움직인 것과 같다. 1.0 8.0 1.0
effectsoverworld로 설정하면 구름, 태양, 별, 달이 생기며, the_nether로 설정하면 네더처럼 짙은 안개가 된다. the_end로 설정할 경우 엔드와 같이 어두운 하늘이 된다. 이외의 값을 설정한 경우 자동으로 "minecraft:overworld"로 설정된다. overworld the_nether the_end
fixed_time선택 사항 0에서 24000사이 정수이다. 오버월드 처럼 하루를 만들고 싶다면 이것을 제거하면 된다. (비어있음) 18000 6000
has_ceiling기반암 천장이 있는지 여부 false true false
has_raids습격을 일으킬 수 있는지 여부 true false true
has_skylight오버월드처럼 낮에 하늘에 광원이 있는지 여부 true false false
height이 차원의 총 높이. 16 ~ 4064 사이의 값. 384 256 256
infiniburn무한히 불을 태울 수 있는 블록 태그 #minecraft:infiniburn_overworld #minecraft:infiniburn_nether #minecraft:infiniburn_end
logical_height세계 생성 높이 제한, has_celling이 true면 해당 값의 y좌표에 기반암 천장이 생긴다. 384 128 256
min_yY좌표의 밑바닥을 정의한다. -2032 ~ 2032 사이의 값. -64 0 0
monster_spawn_block_light_limit??? 0 15 0
naturalfalse이면 나침반이 무작위로 회전, true이면 네더 차원문이 좀비화 피글린 생성한다. true false false
piglin_safe피글린이 좀비화 피글린으로 변하지 않는 여부. true이면 생존. false true false
respawn_anchor_works플레이어가 리스폰 정박기를 사용할 수 있을지 여부. false인 상태로 사용시 폭발 false true false
ultrawarm차원이 네더처럼 작동[3]하는지 여부. false true false

3.5. enchantment / 마법 부여

1.21(24w18a)부터 추가된 기능.

3.6. enchantment provider

3.7. instrument / 염소뿔

1.21.2(24w33a)부터 추가된 기능. 염소 뿔의 소리를 정의한다.
    • description < >
      • 설명. JSON으로 작성한다.
    • range <
      >
      • 들을 수 있는 범위. 기본 염소 뿔의 범위는 256.0이다.
    • sound_event <
      >
      • 소리 id. sound.json으로 정의한대로 쓴다.
    • use_duration <
      >
      • 재사용 대기시간.(초)

3.8. function / 함수

.mcfunction 파일 내부에 유효한 마인크래프트 명령어를 슬래쉬(/)를 제외하고 작성하여야 한다. 함수 텍스트 파일 내부에서 줄 맨앞에 #을 붙여서 주석을 작성할 수 있다. 함수를 사용하면 명령 블록의 입력 한계값인 32,500자보다 길게 쓸 수 있지만 2,000,000자보다 길게 쓸 수 없다. 내부에서 실행 가능한 명령의 총합은 /gamerule maxCommandChainLength의 값으로 결정되고 기본값은 65,536줄이다. 이 설정값을 초과하는 명령어는 무시된다.

함수는 모든 명령을 단일 틱으로 실행하고 다른 함수 내에서 호출 된 함수는 부모함수와 동일한 틱으로 명령을 실행한다. 함수는 다른 함수를 사용하거나 명령 블록 환경에서 사용된다.[4] 여기에는 명령 발신자, 위치, 회전 등이 포함된다.

함수 내에서 발생하는 명령어의 문맥을 변경해도 명령 순서에 관계없이 다음 반복까지 동일한 함수 내 (또는 하위 함수 내)의 다른 명령에서 사용하는 명령 환경에 영향을 미치지 않는다. 단 / execute 명령은 예외이며 하위 함수의 명령 환경을 업데이트 한다.
  • 사용 예시
execute as @a at @s run function foo:bar
foo:bar
{{{#!wiki style="margin:1em calc(2em + 25px) 1em 1em"
\#\#는 주석을 의미합니다.
teleport @s ~ ~5 ~
setblock ~ ~-1 ~ emerald_block
execute at @s run setblock ~ ~-1 ~ diamond_block}}}

위와 같은 명령어를 플레이어가 사용하면 플레이어는 y좌표가 5칸 위인 위치로 텔레포트 한다. 그리고 플레이어가 원래 밟고 있던 블록은 에매랄드 블록으로 바뀌며 텔레포트한 위치 바로 아래에 다이아몬드 블록이 생성된다. 이러한 특성은 대상 선택인자 매개변수의 영향을 받지 않는다.

@s라는 대상 지정 인자를 이용해서 엔티티가 함수를 사용하도록 할 수 있고, /execute as 로 연출자 엔티티를 수정하는 함수를 전 보다 잘 쓸 수 있는 가능성을 제시해 준다.[5] 이것은 더 간단한 과정으로 대상 선택 인자로 선택한 특정 엔티티를 사용하는 연출을 보다 높은 퀄리티로 구현할 수 있게 해주며 일반적으로 월드의 엔티티 숫자를 줄일 수 있다.

또한, /schedule function 명령어로 일정 시간 후에 Function파일을 작동시킬 수 있어 시간차를 두고 명령어를 사용하고 싶을 때도 유용하다. 명령 블록으로는 레드스톤 중계기나 떨어지는 블록 등을 이용해야 하나, schedule 명령어 덕분에 function을 쓴다면 굳이 명령 블록을 쓸 이유가 없어진다.

이외에 다양항 방법으로 함수를 활용할 수 있으며, 스크립트, 플러그인에서만 지원하던 함수 기능을 마인크래프트로 가져옴으로써 플러그인을 덜 쓰고도 동일한 효과를 낼 수 있게 되었다. 이는 마인크래프트 서버를 더 쾌적한 환경으로 운영할 수 있는 가능성을 제시해 주며, 전에는 시도해 보지 못했던 다양한 연출을 사용함으로써 새로운 미니게임의 탄생을 촉구할 수 있다.

give @p spawner[item_name='{"text":"Speed Husk Spawner","color":"#0B9914","bold":true}',block_entity_data={id:"minecraft:spawner",SpawnCount:5,SpawnRange:7,Delay:60,MinSpawnDelay:300,MaxSpawnDelay:900,MaxNearbyEntities:10000,RequiredPlayerRange:14,SpawnData:{entity:{id:"minecraft:husk",Glowing:1b,CustomNameVisible:1b,Health:30f,CanBreakDoors:0b,Tags:["SpeedHusk"],CustomName:'{"text":"Speed Husk","color":"#0B9C06","bold":true}',ArmorItems:[{},{},{id:"minecraft:golden_chestplate",count:1,components:{"minecraft:enchantments":{levels:{"minecraft:protection":1}} }},{}],active_effects:[{id:"minecraft:speed",amplifier:3b,duration:-1,show_particles:0b}],attributes:[{name:max_health,base:30}]}},SpawnPotentials:[{weight:1,data:{entity:{id:"minecraft:husk",Glowing:1b,CustomNameVisible:1b,Health:30f,CanBreakDoors:0b,Tags:["SpeedHusk"],CustomName:'{"text":"Speed Husk","color":"#0B9C06","bold":true}',ArmorItems:[{},{},{id:"minecraft:golden_chestplate",count:1,components:{"minecraft:enchantments":{levels:{"minecraft:protection":1}} }},{}],active_effects:[{id:"minecraft:speed",amplifier:3b,duration:-1,show_particles:0b}],attributes:[{name:max_health,base:30}]} }}]}] 1

이런 엄청난 길이의 코드를 파일에 저장하는 역할도 같이 할 수 있다. 따라서 서버 내 메모리 최척화와, 긴 명령어의 저장 등 다방면의 기능을 할 수 있기에, 코딩을 해야 한다면 명령 블록을 최소화하고, 함수를 사용하는 것이 좋다.

3.8.1. 매크로 기능

1.20.2(23w31a)부터 추가된 기능. 일명 매개변수를 넣는 기능이다.

function <실행 파일> <compound> 또는 function <실행 파일> with <data source> [경로]
  • 사용 예시
execute as @a at @s run function foo:bar {baz:"World!"}
foo:bar
{{{#!wiki style="margin:1em calc(2em + 25px) 1em 1em"
\#\#는 주석을 의미합니다.
$say Hello $(baz)}}}
위와 같은 명령어를 사용하면 $(baz)의 변수값은 World!가 되니 실행되는 명령어는 /say Hello World!가 된다.

(함수 이름) 뒤에 with 명령어를 사용하여 저장된 NBT 데이터를 활용할 수 있다. with 뒤에 오는 인수는 NBT 소스(블록, 개체, 저장소 등)를 지정해야 한다.
execute as @p run function foo:bar2 with entity @s SelectedItem
foo:bar2
{{{#!wiki style="margin:1em calc(2em + 25px) 1em 1em"
$say 이 함수를 실행하는 플레이어는 $(id) 아이템을 $(count)개 보유하고 있습니다.}}}

3.9. item modifier / 아이템 수정자

1.17부터 추가된 기능. /Item modifier ... 명령어를 사용할 때 쓰인다.

더 많은 내용은 마인크래프트 영어 위키로 가면 된다.

시작 - <
Compound
>
function <
String
> - function의 ID 이다.
function의 다른 부분 (아래에)

limit_count
  • limit: 사용할 정확한 제한을 지정한다.

looting_enchant
  • count: 약탈 레벨당 추가 아이템 수를 지정한다. 숫자는 소수점 일 수 있으며 약탈 레벨을 곱한 후 반올림된다.
  • limit: 약탈 계산 후 스택에 있는 최대 아이템 수를 정한다. 값이 0이면 제한이 적용되지 않는다.

set_damage - 도구의 내구도를 수정한다.
  • damage: Number provider. 설정할 내구도 비율을 지정한다 (1.0은 손상되지 않음, 0.0은 손상됨).
  • add :선택 사항. 만약 true이면 현재 내구도에 비례하여 변경된다.

set_lore - 아이템에 설명을 추가한다.
  • lore

item_name - 아이템의 이름을 설정한다.
  • name
예시:
아이템 10개로 쌓기
#!syntax json
파일 경로: .minecraft\saves\<맵 이름>\datapacks\<데이터 팩 이름>\data\<namespace>\item_modifiers\<파일 이름>.json
[
  {
    "function": "limit_count",
    "limit": 10
  }
]
도구의 내구도가 절반으로 깎이며 이름이 NamuWiki인 아이템으로 변경
#!syntax json
[
  {
    "function": "set_damage",
    "damage": 0.5
  },
  {
    "function": "item_name",
    "name": "NamuWiki"
  }
]
아이템의 이름과 설명, 무기 피해량은 무한으로 설정한다.
#!syntax json
[
  {
    "function": "item_name",
    "name": "Sword of the Universe"
  },
  {
    "function": "set_lore",
    "lore": [
	{"text":"Oi you! Yes you."},
	{"text":"What are you looking at?"},
	{"text":"Yes this sword has ∞ damage."},
	{"text":"Kinda overkill? I'm lazy ok. (╯°□°)╯︵ ┻━┻"}
	]
  },
  {
    "function": "set_attributes",
    "modifiers": [{
	"attribute": "minecraft:generic.attack_damage",
	"name": "",
	"amount": 9e99,
	"operation": "add_value",
	"slot": "mainhand"
	}]
  }
]

3.10. jukebox_song / 주크박스 음악

1.21(24w21a)부터 추가된 기능. jukebox_playable 구성 요소에 사용된다.
#!syntax json
{
  "comparator_output": 값,
  "description": {
    "translate": "번역문자열"
  },
  "length_in_seconds": 시간(초),
  "sound_event": "사운드ID"
}
  • comparator_output <
    > 재생할 때 비교기로 출력되는 레드스톤 강도(0 ~ 15).
  • description < > 도구 설명에 표시될 노래 이름.
  • length_in_seconds <
    > 노래의 길이(초).
  • sound_event <
    > 주크박스에서 재생할 소리 ID.

3.11. loot_table / 드롭 아이템

몹, 블록의 드롭 아이템, 구조물의 상자, 낚시 보상, 마을의 영웅 보상, 피글린과 물물 거래 등 드롭 아이템을 바꿀 수 있다. 또한 이것과 loot 명령어를 활용한다면 give 명령어 보다 더 많은 것을 구현 할 수 있다. 단, 일부 블록(기반암, 엔드 차원문 틀 등)의 경우 이 방법으로는 얻을 수 없도록 하드코딩 되어 있으므로 드롭 아이템을 추가하더라도 아이템이 드롭되지 않는다.

Loot Table를 생성하는 사이트가 있다. 엔드 도시에 있는 상자 프리셋
  • < >
    • type <
      > - 선택 사항. 상자 보상이면 "minecraft:chest", 개체이면 "minecraft:entity" 등으로 지정한다.
    • pools <
      > - Loot Table 목록.

  • rolls - < > - 최소 n번부터 최대 n번까지 다음 아이템을 굴린다.
    • min <
      > - 최소.
    • max <
      > - 최대.
  • bonus_rolls <
    > - 자신의 행운 수치에 따라 [math(bonus\_rolls\times Luck)]번 더 굴린다. 굴린 횟수가 소수점이라면 무조건 버린다.
  • bonus_rolls < > - 자신의 행운 수치를 곱하여 최소 min번부터 최대 max번까지 더 굴린다. 굴린 횟수가 소수점이라면 무조건 버린다.
  • conditions <
    > - 조건문.
  • functions <
    > -
  • entries <
    > - 여기에 넣을 아이템(들)을 정의한다.
    • < >
      • type <
        > - 타입을 지정한다. "minecraft:item"이면 아이템. minecraft:empty이면 없음 등으로 지정이 가능하다.
      • functions <
        >
      • conditions <
        >
      • name <
        >
      • children <
        >
      • expand - <
        >
      • weight <
        > - 비중. 생략하면 1로 지정된다.
      • quality <
        > - 자신의 행운 수치에 따라 비중을 더한다. 기본값은 0이다.

3.12. painting variant / 그림

1.21(24w18a)부터 추가된 기능. 그림을 추가하거나 변경시킨다.
  • asset_id <
    > - 리소스팩 모델을 불러온다. 리소스 팩으로 추가한 팩도 포함. 예: minecraft:alban
  • height <
    > - 그림의 높이. 1~16 값만 가능하다.
  • width <
    > - 그림의 너비. 1~16 값만 가능하다.
  • author < > - 그림의 저자.
    • "color" <
      > - 글자 색상.
    • "translate" <
      > - 번역 문자열.
  • title < > - 그림의 제목.
    • "color" <
      > - 글자 색상.
    • "translate" <
      > - 번역 문자열.

3.13. predicate / 술어

1.15부터 생겼으며 data 폴더에 있는 predicate 폴더에 만들면 된다.
주의사항! 여기있는 예시와 정보는 predicate의 극히 일부만 다루었다. 더욱 정확한 정보를 위해서는 영문위키를 찾아보는 것이 좋다.

시작 - <
Compound
>
condition <
String
> - condition의 ID 이다.
condition의 다른 부분 (아래에)

alternative
block_state_property
damage_source_properties - 데미지의 속성을 확인한다.
  • is_explosion <
    > - 폭발
  • is_projectile <
    > - 발사체
  • is_fire <
    > - 화염
  • is_lightning <
    > - 번개
  • is_magic <
    > - 마법
  • bypasses_magic <
    > - 배고픔에만 해당.
  • bypasses_invulnerability <
    > - 공허 피해에만 해당.
  • bypasses_armor <
    >
  • source_entity - < >
    • (모든 엔티티와 같다.)
  • direct_entity - < >
    • (모든 엔티티와 같다.)

entity_properties
  • entity <
    > - 조건을 확인할 엔티티를 지정한다.
    • predicate - < >
      • flags - < >
        • is_on_fire <
          > - 화염 여부 테스트.
        • is_sneaking <
          > - 웅크리기 여부 테스트.
        • is_sprinting <
          > - 달리기 여부 테스트.
        • is_swimming <
          > - 수영 여부 테스트.
        • is_baby <
          > - 아기 변형 여부 테스트.
    • (모든 엔티티와 같다.)

random_chance
  • chance <
    > - 성공확률를 정한다. 1이 100%이다. 0.5면 50%확률로 성공한다.

weather_check
  • raining <
    > - true이면 비가 올 때 성공한다.
  • thundering <
    > - true이면 천둥이 올 때 성공한다.

예시:
플레이어 웅크리기 감지
#!syntax json
파일 경로: .minecraft\saves\<맵 이름>\datapacks\<데이터 팩 이름>\data\<namespace>\predicates\<파일 이름>.json
  {
    "condition": "minecraft:entity_properties",
    "predicate": {
	"flags": {
		"is_sneaking": true
	}
    },
    "entity":"this"
}
50% 확률로 명령어 실행
#!syntax json
{
    "condition": "minecraft:random_chance",
    "chance": 0.5
}

3.14. recipe / 조합법

조합법을 바꿀 수 있다. 키에 아이템을 설정해 놓고 패턴에서 그 키로 조합하는 것이다.

예시를 들면 다이아몬드 곡괭이의 경우 ' '은 빈 공간, X는 다이아몬드, #은 막대기라고 했을 시 패턴에서
#!syntax json
{
  "type": "minecraft:crafting_shaped",
  "category": "equipment",
  "pattern": [
    "XXX",
    " # ",
    " # "
  ],
  "key": {
    "#": "minecraft:stick",
    "X": "#minecraft:diamond_tool_materials"
  },
  "result": {
    "count": 1,
    "id": "minecraft:diamond_pickaxe"
  }
} 

라고 쓰면 다이아몬드 곡괭이의 조합법이 완성되는 것이다.

만약 나무 판자로 만드는 아이템같이[6] 다른 아이템으로도 조합이 가능하게 하고 싶다면 tag 파일을 따로 만들어 tag 파일을 tag 폴에 넣고 조합법에 집어넣을 수 있다.

원하는 조합법을 쉽게 만들 수 있는 외국 사이트가 있다. 사이트

3.15. structure / 구조물

자연 생성 구조물처럼 구조물 생성에 관여한다. 혹은 구조물 블록에 쓰이는 구조물이다.

3.16. worldgen

3.16.1. biome / 생물 군계

1.16.2부터 추가된 기능.

4. 유저 표준

데이터 팩에 포함된 태그나 명령어 등에 정해진 표준은 없지만, 유저들이 자체적으로 적당한 표준을 만들어 사용하고 있다.
사실 지키지 않아도 큰 문제는 없으나, 다른 데이터팩과의 충돌 방지나 호환을 위해 지키는 것이 좋다.

리소스팩 충돌 방지, 엔티티 및 태그 표준, 네임스페이스 표준 등 꽤 많은 양의 표준이 정해져 있다.

잘 읽어보면, Forge 모드 로더와의 연동도 고려하고 있는 것 같다

자세한 내용은 이 사이트를 참고하도록 하자.

5. 목록

파일:상세 내용 아이콘.svg   자세한 내용은 마인크래프트/팩/데이터 팩/목록 문서
번 문단을
부분을
참고하십시오.

6. 변경 내역

Breaking Changes은 [B]로 표시한다.

6.1. 1.21

  • 1.21.4
    • [B] 데이터 팩 버전은 이제 ??이다.
    • attribute 명령어는 특정 특성 기본값으로 되돌릴 수 있다. attribute <target> <attribute> base reset
    • [B] minecraft:custom_model_data는 이제 정수형(int)이 아닌 다음과 같은 필드를 갖게된다.
      • floats - list of floats.
      • flags - list of booleans.
      • strings - list of strings.
      • colors - list of RGB 색 값.
    • [B] minecraft:equippable 에서 modelasset_id로 이름이 변경되었다.
    • [B] TNT가 실린 광산 수레의 키가 변경되었다. TNTFusefuse
  • 1.21.2
    • [B] 데이터 팩 버전은 이제 57이다.
    • Data-Driven 염소 뿔이 추가되었다.
    • 새로운 특성이 추가되었다. tempt_range
      • 유혹이 가능한 몹을 유혹할 수 있는 범위를 지정한다.
    • 다음 명령어가 추가되었다. rotate
      • rotate는 개체를 회전시킨다.
    • tnttnt_minecartexplosion_power NBT가 추가되었다. 기본값은 4이며 수치가 높을수록 폭발력이 강해진다.
    • [B] 다음 개체가 제거되었다. minecraft:boat, minecraft:chest_boat
    • 다음 개체가 추가되었다. minecraft:oak_boat, minecraft:spruce_boat, minecraft:birch_boat, minecraft:jungle_boat, minecraft:acacia_boat, minecraft:cherry_boat, minecraft:dark_oak_boat, minecraft:mangrove_boat, minecraft:bamboo_raft, minecraft:oak_chest_boat, minecraft:spruce_chest_boat, minecraft:birch_chest_boat, minecraft:jungle_chest_boat, minecraft:acacia_chest_boat, minecraft:cherry_chest_boat, minecraft:dark_oak_chest_boat, minecraft:mangrove_chest_boat, minecraft:bamboo_chest_raft
    • 다음 아이템 구성 요소가 추가되었다. minecraft:consumable, minecraft:repairable, minecraft:enchantable, minecraft:use_cooldown, minecraft:use_remainder, minecraft:item_model, minecraft:equippable, minecraft:glider, minecraft:tooltip_style, minecraft:death_protection,
    • [B] minecraft:fire_resistant 아이템 구성 요소가 제거되었다.
    • [B] minecraft:food 아이템 구성 요소가 변경되었다. 이제 음식 데이터만 저장되며, 이것만으로는 아이템을 소비할 수 없다.
    • [B] 특성 id는 더 이상 generic., player., zombie. 접두사를 붙이지 않는다.
    • [B] 조합법의 재료 부분이 간소화되었다.
      • [B] {"item":"<item id>"} -> "<item id>".
      • [B] {"tag":"<tag id>"} -> "#<tag id>".
    • 양털 깎기, 무시룸 깎기, 눈 골렘 호박 깎기, 닭의 알, 아르마딜로의 껍질, 마을의 영웅 효과를 받은 새끼 주민, 마을의 영웅 효과를 받은 실업자 주민은 이제 loot_table에 제어된다.
    • Data-Driven 그림의 저자와 제목이 추가되었다. 이전에는 그림 id에 따라 저자와 제목은 하드코딩 되어있었다. 저자와 제목은 비어있어도 작동된다.
    • 새로운 술어가 추가되었다. 플레이어 하위 조건인 input.
      • 플레이어가 누르고 있는 키를 감지한다. 다음 입력이 지원된다: 앞, 뒤, 왼쪽, 오른쪽, 점프, 웅크리기, 달리기.
    • 다음 공격 특성이 추가되었다. ender_pearl, mace_smash
    • 다음 아이템 태그가 추가되었다.
      • villager_picks_up, furnace_minecart_fuel,
  • 1.21
    • [B] 데이터 팩 버전은 이제 48이다.
    • [B] 데이터 팩의 경로가 변경되었다. 변경 사항은 다음과 같다.
      • tags/items -> tags/item
      • tags/blocks -> tags/block
      • tags/functions -> tags/function
      • tags/entity_types -> tags/entity_type
      • tags/fluids -> tags/fluid
      • tags/game_events -> tags/game_event
      • structures -> structure
      • advancements -> advancement
      • recipes -> recipe
      • loot_tables -> loot_table
      • predicates -> predicate
      • item_modifiers -> item_modifier
      • functions -> function
    • Data-Driven 주크박스 노래가 추가되었다.
    • Data-Driven 마법 부여가 추가되었다.
    • Data-Driven 그림이 추가되었다.
    • 새로운 선택자: @n
      • 가장 가까운 개체를 지정한다. @e[sort=nearest,limit=1]와 같다.
      • 예: 가장 가까운 돼지 @n[type=minecraft:pig]
    • [B] 특성은 UUIDname 조합이 삭제되고 id로 대체되었다. id는 특성 수정자의 고유 식별자이다.
    • [B] 특성의 세부 이름이 변경되었다.
      • id, renamed from Name
    • [B] 조건자 중 하나인 enchantment가 제거되었다.
    • 새로운 조건자가 추가되었다. enchantments
    • food 구성 요소 내에서 using_converts_to가 추가되었다. 음식 아이템을 먹으면 지정된 아이템으로 교체된다.
    • [B] power NBT 태그를 acceleration_power로 대체되었다.
      • 다음 개체가 영향을 받는다: dragon_fireball, large_fireball, small_fireball, fireball, breeze_wind_charge, wind_charge, wither_skull
    • 다음 특성이 추가 및 변경되었다.
      • generic.attack_knockback - 이제 플레이어도 영향 받을 수 있다.
      • generic.burning_time - 개체가 불타고 있는 남은 시간 배율을 수정한다.
      • generic.explosion_knockback_resistance - 개체의 폭발 밀려남 무시 배율을 수정한다.
      • generic.movement_efficiency
      • generic.oxygen_bonus
      • generic.water_movement_efficiency
      • player.mining_efficiency
      • player.sneaking_speed - 플레이어의 웅크리기 속도를 수정한다.
      • player.submerged_mining_speed
      • player.sweeping_damage_ratio

6.2. 1.20

  • 1.20.5
    • [B] 데이터 팩 버전은 이제 41이다.
    • [B] 마인크래프트/NBT/아이템은 삭제되었으며, 구성 요소로 처음부터 다시 작성되었다.
    • [B] 상태 효과의 127 이상의 점프 강화, 채굴 피로 등 오버플로 레벨이 제거되었다.
    • [B] particle의 일부 입자의 변수 입력이 변경되었다. 변경 사항은 다음과 같다.
      • item minecraft:dirtitem{item:{id:"minecraft:dirt"}} 혹은 item{item: "minecraft:dirt"}}
      • dust 1.0 0.0 0.0 2.0dust{color:[1.0, 0.0, 0.0],scale:2.0}
      • dust_color_transition 1.0 0.0 0.0 0.5 0.0 1.0 0.5dust_color_transition{from_color: [1.0f, 0.0f, 0.0f], scale: 0.5f, to_color: [0.0f, 1.0f, 0.5f]}
      • 블록 입자(minecraft:block, minecraft:block_marker, minecraft:falling_dust, minecraft:dust_pillar)
        • block minecraft:redstone_lamp[lit=true]block{block_state:{Name:"minecraft:redstone_lamp",Properties:{lit: "true"}} }
        • block minecraft:diamond_blockblock{block_state:"minecraft:diamond_block"}
    • bypasses_wolf_armor 피해 속성이 추가되었다.
    • [B] recipes 결과 아이템 구문이 변경되었다. itemid, Countcount.
    • recipes 결과 아이템 구문이 새로 추가되었다. components 사용자 지정 구성(=NBT)을 정의할 수 있게 되었다.
    • [B] function의 최대 길이는 이제 한 줄당 2,000,000자로 제한된다.
    • 활, 쇠뇌는 발사체 무기로 분류되어 무한, 다중 발사, 관통 마법 부여를 영향 받을 수 있다.
    • 다음 속성이 추가/변경되었다.
      • player.block_interaction_range, player.entity_interaction_range - 플레이어의 블록/개체 상호작용 거리를 수정한다.
      • generic.scale - 몹의 크기를 수정한다.
      • generic.step_height - 몹의 계단 판정 높이를 수정한다.
      • [B] horse.jump_strength -> generic.jump_strength - 점프 강도는 이제 말이 아닌 모든 몹에게 적용된다.
      • generic.gravity - 중력을 조절한다.
      • generic.safe_fall_distance - 낙하 안전 거리를 수정한다.
      • generic.fall_damage_multiplier - 낙하 피해를 곱한다.
      • player.block_break_speed - 블록 파괴 속도를 수정한다.
    • [B] 속성의 계산 이름이 달라졌다.
      • additionadd_value
      • multiply_baseadd_multiplied_base
      • multiply_totaladd_multiplied_total
    • [B] sweepingsweeping_edge로 수정되었다.
    • [B] 인갑의 이름이 변경되었다. minecraft:scuteminecraft:turtle_scute
    • 생성 지점 근처에 항상 로딩되는 청크(이하 스폰 청크)의 크기를 조정하는 게임 규칙이 추가되었다. spawnChunkRadius
  • 1.20.3
    • [B] 데이터 팩 버전은 이제 26이다.
    • [B] 잔디의 이름이 변경되었다. minecraft:grassminecraft:short_grass
    • [B] TNT NBT가 추가/변경되었다.
      • block_state 추가.
      • [B] Fusefuse
    • [B] Text Json에서 각각 false, true는 문자열로 지정이 안된다.
    • wither_skull 위더 해골의 NBT가 추가되었다. 파란색 위더 해골 여부를 결정한다. dangerous
    • 게임 규칙이 추가되었다. playersNetherPortalDefaultDelay, playersNetherPortalCreativeDelay, projectilesCanBreakBlocks
    • [B] 던진 삼지창의 필드명이 변경되었다. Tridentitem
    • scoreboard는 이제 이름 및 점수값에도 사용자 지정이 가능하다.
    • 피해 태그 추가: can_break_armor_stand
  • 1.20.2
    • [B] 데이터 팩 버전은 이제 18이다.
    • functions(함수)의 매크로 기능이 추가되었다.
    • functions(함수)의 개행 기능이 추가되었다. 줄의 끝에서 \ 넣는다면 다음 줄 명령어에 연결된다.

      • {{{say \
Hello, \
World!}}}
  • [B] Id[7] 데이터 형식이
    에서
    로 변경되었다. 속도의 ID는 1이였지만 지금은 minecraft:speed이다.
  • [B] 상태 효과 관련 NBT가 변경되었다.
  • 속성의 일부인 generic.max_absorption이 추가되었다. 최대 흡수 체력을 결정한다.
  • random 명령어가 추가되었다.
  • enderPearlsVanishOnDeath 게임 규칙이 추가되었다.
  • 1.20
    • [B] 데이터 팩 버전은 이제 15이다.
    • [B] 표지판의 NBT가 추가/변경되었다. 이전 표지판 NBT 보기
      • Text1, Text2, Text3, Text4가 제거되었다. 대신 front_text back_text가 추가되었다.
      • 밀랍칠한 표지판 여부를 확인하는 NBT인 is_waxed가 추가되었다.

6.3. 1.19

  • 1.19.4
    • [B] 데이터 팩 버전은 이제 12이다.
    • damage type(피해 속성)이 추가되었다.
    • ride, damage 명령어가 추가되었다.
    • effect 명령어에
    • [B] weather 명령어가 변경되었다. 숫자 뒤에 t, s, d가 추가되었으며, 생략 시 t로 설정한다. 기존으로 설정하고 싶다면 숫자 뒤에 s를 붙이면 된다. 예: 540s
    • clone 명령어는 이제 다른 차원에서도 복사/붙여넣기가 가능하다.
    • display 개체가 추가되었다.
  • 1.19
    • [B] 데이터 팩 버전은 이제 10이다.
    • [B] locatebiome 명령어가 삭제되었다. locate biome로 대체 가능
    • [B] placefeature 명령어가 삭제되었다. place feature로 대체 가능
    • [B] Id[8] 데이터 형식이
      에서
      로 변경되었다.

6.4. 1.18

6.5. 1.17

  • 1.17
    • [B] 데이터 팩 버전은 이제 7이다.
    • Item modifier(아이템 수정자)가 추가되었다.

6.6. 1.16

  • 1.16.2
    • [B] 데이터 팩 버전은 이제 6이다.
    • biome(생물 군계)이 추가되었다.
  • 1.16
    • [B] 속성의 이름이 변경되었다. 변경사항은 다음과 같다.
      • generic.armorToughnessgeneric.armor_toughness
      • generic.attackDamagegeneric.attack_damage
      • generic.attackKnockbackgeneric.attack_knockback
      • generic.attackSpeedgeneric.attack_speed
      • generic.flyingSpeedgeneric.flying_speed
      • generic.followRangegeneric.follow_range
      • generic.knockbackResistancegeneric.knockback_resistance
      • generic.maxHealthgeneric.max_health
      • generic.movementSpeedgeneric.movement_speed
      • horse.jumpStrengthhorse.jump_strength
      • zombie.spawnReinforcementszombie.spawn_reinforcements
    • attribute, locatebiome 명령어가 추가되었다.
    • dimension(차원)이 추가되었다.

6.7. 1.15

  • 1.15
    • [B] 데이터 팩 버전은 이제 5이다.
    • predicates(술어)가 추가되었다.

6.8. 1.14

  • 1.14
    • 개체 태그 추가. 예: #minecraft:skeletons

6.9. 1.13

  • 1.13
    • 데이터 팩이 추가되었다. 추가 당시 버전은 4이다.

[1] 메모장이나 notepad++ 등으로 여는 것이 가능하다.[2] /execute in (폴더 이름):(차원 이름) run summon...
/execute in (폴더 이름):(차원 이름) run setblock(혹은 fill) ...
[3] 물이 증발하거나 스펀지가 증발함[4] 즉 함수가 사용하는 명령어는 명령 블록이 사용한 것과 같이 취급된다.[5] 예를 들어서 좀비에 옷을 입히고 대사를 넣어서 마치 NPC가 플레이어를 안내하는 연출을 한다고 가정하자 전에는 스코어보드 명령어와 매개변수를 복잡하게 활용하고 밑에 특정 블록을 넣어서 좀비가 이를 따라가게 하는 식으로 연출했어야 했다. 하지만 함수를 사용하면 이 과정을 간단히 할 수 있고 훨씬더 적은 명령어로 이 연출을 가능하게 해준다.[6] 참나무 판자 뿐만 아닌 다른 나무의 판자로도 조합이 가능한 경우[7] 상태 효과 ID.[8] 상태 효과 ID.


파일:CC-white.svg 이 문서의 내용 중 전체 또는 일부는 문서의 r1604에서 가져왔습니다. 이전 역사 보러 가기
파일:CC-white.svg 이 문서의 내용 중 전체 또는 일부는 다른 문서에서 가져왔습니다.
[ 펼치기 · 접기 ]
문서의 r1604 (이전 역사)
문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)