mir.pe (일반/어두운 화면)
최근 수정 시각 : 2024-12-26 10:25:39

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

파일:상위 문서 아이콘.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 값은 데이터 팩을 적용할 마인크래프트 버전에 따라 다르게 설정해야 된다. 값은 다음과 같다.
61 1.21.4
57 1.21.2 ~ 1.21.3
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
effects overworld로 설정하면 구름, 태양, 별, 달이 생기며, 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_y Y좌표의 밑바닥을 정의한다. -2032 ~ 2032 사이의 값. -64 0 0
monster_spawn_block_light_limit ??? 0 15 0
natural false이면 나침반이 무작위로 회전, 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
looting_enchant
set_damage - 도구의 내구도를 수정한다.
set_lore - 아이템에 설명을 추가한다.
item_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"
}

3.11. loot_table / 드롭 아이템

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

Loot Table를 생성하는 사이트가 있다. 엔드 도시에 있는 상자 프리셋

3.12. painting variant / 그림

1.21(24w18a)부터 추가된 기능. 그림을 추가하거나 변경시킨다.

3.13. predicate / 술어

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

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

alternative
block_state_property
damage_source_properties - 데미지의 속성을 확인한다.
entity_properties random_chance
weather_check
예시:
플레이어 웅크리기 감지
#!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부터 추가된 기능.

커스텀 바이옴을 만들 수 있다. 잔디의 색깔,물의 색깔,하늘의 색깔 등 바꿀 수 있으며 특정 소리가 흘러나오게도 할 수 있고 온도[7]도 커스텀할 수 있다.

다음 사이트에서 쉽게 만들 수 있다.
https://misode.github.io/worldgen/biome/

#!syntax json

{
  "carvers": {
    "air": [
      "minecraft:cave",
      "minecraft:cave_extra_underground",
      "minecraft:canyon"
    ]
  },
  "downfall": 0.3,
  "effects": {
    "fog_color": 12638463,
    "mood_sound": {
      "block_search_extent": 8,
      "offset": 2,
      "sound": "minecraft:ambient.cave",
      "tick_delay": 6000
    },
    "sky_color": 8233727,
    "water_color": 4159204,
    "water_fog_color": 329011
  },
  "features": [
    [],
    [
      "minecraft:lake_lava_underground",
      "minecraft:lake_lava_surface"
    ],
    [
      "minecraft:amethyst_geode"
    ],
    [
      "minecraft:monster_room",
      "minecraft:monster_room_deep"
    ],
    [],
    [],
    [
      "minecraft:ore_dirt",
      "minecraft:ore_gravel",
      "minecraft:ore_granite_upper",
      "minecraft:ore_granite_lower",
      "minecraft:ore_diorite_upper",
      "minecraft:ore_diorite_lower",
      "minecraft:ore_andesite_upper",
      "minecraft:ore_andesite_lower",
      "minecraft:ore_tuff",
      "minecraft:ore_coal_upper",
      "minecraft:ore_coal_lower",
      "minecraft:ore_iron_upper",
      "minecraft:ore_iron_middle",
      "minecraft:ore_iron_small",
      "minecraft:ore_gold",
      "minecraft:ore_gold_lower",
      "minecraft:ore_redstone",
      "minecraft:ore_redstone_lower",
      "minecraft:ore_diamond",
      "minecraft:ore_diamond_large",
      "minecraft:ore_diamond_buried",
      "minecraft:ore_lapis",
      "minecraft:ore_lapis_buried",
      "minecraft:ore_copper",
      "minecraft:underwater_magma",
      "minecraft:disk_sand",
      "minecraft:disk_clay",
      "minecraft:disk_gravel",
      "minecraft:ore_emerald"
    ],
    [
      "minecraft:ore_infested"
    ],
    [
      "minecraft:spring_water",
      "minecraft:spring_lava"
    ],
    [
      "minecraft:glow_lichen",
      "minecraft:trees_windswept_forest",
      "minecraft:flower_default",
      "minecraft:patch_grass_badlands",
      "minecraft:brown_mushroom_normal",
      "minecraft:red_mushroom_normal",
      "minecraft:patch_sugar_cane",
      "minecraft:patch_pumpkin"
    ],
    [
      "minecraft:freeze_top_layer"
    ]
  ],
  "has_precipitation": true,
  "spawn_costs": {},
  "spawners": {
    "ambient": [
      {
        "type": "minecraft:bat",
        "maxCount": 8,
        "minCount": 8,
        "weight": 10
      }
    ],
    "axolotls": [],
    "creature": [
      {
        "type": "minecraft:sheep",
        "maxCount": 4,
        "minCount": 4,
        "weight": 12
      },
      {
        "type": "minecraft:pig",
        "maxCount": 4,
        "minCount": 4,
        "weight": 10
      },
      {
        "type": "minecraft:chicken",
        "maxCount": 4,
        "minCount": 4,
        "weight": 10
      },
      {
        "type": "minecraft:cow",
        "maxCount": 4,
        "minCount": 4,
        "weight": 8
      },
      {
        "type": "minecraft:llama",
        "maxCount": 6,
        "minCount": 4,
        "weight": 5
      }
    ],
    "misc": [],
    "monster": [
      {
        "type": "minecraft:spider",
        "maxCount": 4,
        "minCount": 4,
        "weight": 100
      },
      {
        "type": "minecraft:zombie",
        "maxCount": 4,
        "minCount": 4,
        "weight": 95
      },
      {
        "type": "minecraft:zombie_villager",
        "maxCount": 1,
        "minCount": 1,
        "weight": 5
      },
      {
        "type": "minecraft:skeleton",
        "maxCount": 4,
        "minCount": 4,
        "weight": 100
      },
      {
        "type": "minecraft:creeper",
        "maxCount": 4,
        "minCount": 4,
        "weight": 100
      },
      {
        "type": "minecraft:slime",
        "maxCount": 4,
        "minCount": 4,
        "weight": 100
      },
      {
        "type": "minecraft:enderman",
        "maxCount": 4,
        "minCount": 1,
        "weight": 10
      },
      {
        "type": "minecraft:witch",
        "maxCount": 1,
        "minCount": 1,
        "weight": 5
      }
    ],
    "underground_water_creature": [
      {
        "type": "minecraft:glow_squid",
        "maxCount": 6,
        "minCount": 4,
        "weight": 10
      }
    ],
    "water_ambient": [],
    "water_creature": []
  },
  "temperature": 0.2
}

} 

4. 유저 표준

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

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

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

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

5. 목록

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

6. 변경 내역

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

6.1. 1.21

6.2. 1.20

Hello, \
World!}}}

6.3. 1.19

6.4. 1.18

6.5. 1.17

6.6. 1.16

6.7. 1.15

6.8. 1.14

6.9. 1.13


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


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