[include(틀:상위 문서,top1=마인크래프트/팩)] [include(틀:마인크래프트/관련 문서)] [목차] == 개요 == 데이터팩은 마인크래프트의 데이터들을 바꿀 수 있는 시스템이다. 스냅샷 17w43a부터 추가되었다. 모드 필요 없이 발전 과제, 함수, 드롭 아이템, 구조물, 조합법, 태그를 바꾸거나 추가할 수 있다. 맵 폴더 안에다가 data라는 이름의 폴더를 또 추가하여 폴더 형식의 데이터팩을 넣은 다음 [[마인크래프트/명령어#s-3.1.2.5|/datapack]] 명령어로 활성화하면 된다. == 제작 == 데이터 팩 파일은 {{{.minecraft/saves/(월드)/datapack}}}에다 파일을 만들어야 한다. 폴더 이름은 라틴 문자로 지어야 한다. 그리고 {{{data}}} 폴더 안에 또 {{{namespace}}}라는 폴더를 만들어야 한다. 만약에 {{{main}}}이라는 폴더를 만들었을 경우 {{{functions}}}로 예를 들자면 {{{function main/함수 이름}}}이다. 예를 들어. world 라는 이름의 세계에 나만의 조합법을 만들어서 플레이하고 싶다면 world > datapacks > (파일이름) > data > crafting > recipes > 원하는 조합법.json 이렇게 넣어야만 데이터팩을 사용할 수 있다. === 폴더 구조 === {{{#!folding 【폴더 구조 열기】 || * (데이터팩 이름) * [[#pack_mcmeta|pack.mcmeta]] * pack.png * data * (namespace) * [[#advancements|advancements]] * (advancement).json * [[#functions|functions]] * (function).mcfunction * [[#loot_tables|loot_tables]] * (loot_table).json * [[#predicates|predicates]] * (predicate).json * [[#recipes|recipes]] * (recipe).json * [[#structures|structures]] * (structure).nbt * tags * blocks * (tag).json * entity_types * (tag).json * fluids * (tag).json * functions * (tag).json * items * (tag).json * dimension_type * (dimension type).json * [[#dimension|dimension]] * (dimension).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_modifiers^^(1.17 JE)^^ * (item_modifiers).json^^(1.17 JE)^^||}}} === pack.mcmeta === [anchor(pack_mcmeta)]데이터팩 파일 안에는 {{{pack.mcmeta}}}라는 파일을 만들어 주면 된다. 이 파일은 JSON 형식으로 되어있는데, 리소스팩 제작 때 필수로 넣어야 하는 것이다. 이 과정에서 오류가 발생하면 데이터팩을 불러오지 못한다. 파일 확장자명이 안 보인다면 윈도우 기준으로 파일 탐색기에서 위에 있는 보기를 눌러준 다음에 파일 확장명을 체크 표시해주면 된다. 이 과정이 정상적으로 끝마치면 이 코드를 작성하면 된다. {{{ { "pack": { "pack_format": 5, "description": "TEST Data pack" } } }}} 만약에 파일이 열리지 않는다면 연결 프로그램을 메모장 등으로 바꿔주어야 한다. JE 1.13에서는 {{{"pack_format"}}}의 숫자를 {{{3}}}으로 설정해주어야 한다. 1.14는 4, 1.15는 5, 1.16.2는 6이다. 참고로 {{{"description"}}}는 이 데이터팩의 설명을 써놓는 곳이다. === functions === [anchor(functions)]1.12 때 {{{function}}} 다뤄봤다면 간단하다. {{{functions}}} 폴더를 {{{namespace}}} 폴더 안에다가 만든 후, 거기다가 1.12때 {{{function}}} 만들 때와 같이 파일을 제작한다. 파일 확장명은 {{{.mcfunction}}}으로 해야한다. {{{functions}}}를 다루지 못한다면 [[마인크래프트/명령어#s-3.1.1.10|function 도움말]]을 보자. == 기능 == === 구조물 === [anchor(structures)][[마인크래프트/구조물|이 구조물]]이 아니고 구조물 블록에 쓰이는 구조물이다. === 드롭 아이템[anchor(loot_tables)] === 몹과 블록의 드롭 아이템과 구조물의 상자에 있는 아이템을 바꿀 수 있다. 또한 이것과 loot 명령어를 활용한다면 give 명령어 보다 더 많은 것을 구현 할 수 있다. 단, 일부 블록(기반암, 엔드 차원문 틀 등)의 경우 아이템을 얻을 수 없도록 [[하드코딩]] 되어 있으므로 드롭 아이템을 추가하더라도 아이템이 드롭되지 않는다. *형식: Compound *type - 형식: String *pools - 형식: List *형식: Compound *conditions - 형식: List *형식: Compound *condition - 형식: String *functions - 형식: List *형식: Compound *function - 형식: String *conditions - 형식: List *형식: Compound *condition - 형식: String *rolls - 형식: Int *rolls - 형식: Compound *min - 형식: Int *max - 형식: Int *bonus_rolls - 형식: Float *bonus_rolls - 형식: Compound *min - 형식: Float *max - 형식: Float *entries - 형식: List *형식: Compound *conditions - 형식: List *형식: Compound *condition - 형식: List *type - 형식: String *name - 형식: String *children - 형식: List *expand - 형식: Boolean *functions - 형식: List *형식: Compound *function - 형식: String *conditions - 형식: List *형식: Compound *condition - 형식: String *weight - 형식 - Int *quality - 형식 - Int === 발전 과제 === [anchor(advancements)]발전과제를 추가하고 이름과 달성 목표, 경험치를 바꿀 수 있다. [[https://advancements.thedestruc7i0n.ca/|이 사이트에서]] 쉽게 생성할 수 있다. === 조합법 === [anchor(recipes)]조합법을 바꿀 수 있다. 키에 아이템을 설정해 놓고 패턴에서 그 키로 조합하는 것이다. 다만 아쉽게도 NBT는 지원 안한다. NBT를 적용시킬 때에는 얻을 수 없는 아이템을 주고 그 아이템을 삭제한 뒤에 NBT가 적용된 아이템을 주는 방식으로 제작하면 된다. 예시를 들면 다이아몬드 곡괭이의 경우 ' '은 빈 공간, X는 다이아몬드, #은 막대기라고 했을 시 패턴에서 {{{#!syntax json { "type": "minecraft:crafting_shaped", "pattern": [ "XXX", " # ", " # " ], "key": { "#": { "item": "minecraft:stick" }, "X": { "item": "minecraft:diamond" } }, "result": { "item": "minecraft:diamond_pickaxe" } } }}} 라고 쓰면 다이아몬드 곡괭이의 조합법이 완성되는 것이다. 원하는 조합법을 쉽게 만들 수 있는 외국 사이트가 있다. [[https://crafting.thedestruc7i0n.ca/|사이트]] === functions === [anchor(advancements)]1.12에는 data 폴더에 있는 functions 폴더에다가 넣으면 되지만 1.13부터는 datapack을 사용해 함수를 제작해야 한다. === 술어 === [anchor(predicates)]1.15부터 생겼으며 data 폴더에 있는 predicate 폴더에 만들면 된다. 시작 - 형식: Compound condition - 형식: String - condition의 ID 이다. condition의 다른 부분 (아래에) '''alternative''' * terms - 형식: List * terms - 형식: Compound '''block_state_property''' * block - 형식: String - 블록의 ID이다. * properties - 형식: Compound '''damage_source_properties''' - 데미지의 속성을 확인한다. * is_explosion - 형식: Boolean - 폭발 * is_projectile - 형식: Boolean - 발사체 * is_fire - 형식: Boolean - 화염 * is_lightning - 형식: Boolean - 번개 * is_magic - 형식: Boolean - 마법 * bypasses_magic - 형식: Boolean - 배고픔에만 해당. * bypasses_invulnerability - 형식: Boolean - 공허 피해에만 해당. * bypasses_armor - 형식: Boolean * source_entity - 형식: Compound * ''(모든 엔티티와 같다.)'' * direct_entity - 형식: Compound * ''(모든 엔티티와 같다.)'' '''entity_properties''' * entity - 형식: String - 조건을 확인할 엔티티를 지정한다. * predicate - 형식: Compound * flags - 형식: Compound * is_on_fire - 형식: Boolean - 화염 여부 테스트. * is_sneaking - 형식: Boolean - 웅크리기 여부 테스트. * is_sprinting - 형식: Boolean - 달리기 여부 테스트. * is_swimming - 형식: Boolean - 수영 여부 테스트. * is_baby - 형식: Boolean - 아기 변형 여부 테스트. * ''(모든 엔티티와 같다.)'' '''random_chance''' * chance - 형식: Float - 성공확률를 정한다. 1이 100%이다. 50%확률로 성공할려면 0.5. '''weather_check''' * raining - 형식: Boolean - true이면 비가 올 때 성공한다. * thundering - 형식: Boolean - 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 } }}} === 차원 === [anchor(dimension)]1.16부터 생겼으며 data 폴더 안에 minecraft 폴더 안에 dimension , dimension_type 폴더 만들면 된다. 그 폴더 안에 영어 소문자 _ 로만 차원 이름을 적고 .json을 만들면 된다. 추가된 차원을 가고 싶다면 {{{ execute in <추가된 차원> run tp @s ~ ~ ~}}}로 가면 된다. 완전한 평지 엔드 버전 {{{#!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" } } }}} ==== dimension_type ==== 차원 타입을 설정하는 곳 기본값은 차원마다 다르다. || || 설명 || overworld || the_nether || 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 || ||fixed_time||'''선택 사항''' 0에서 24000사이 정수이다. 오버월드 처럼 하루를 만들고 싶다면 이것을 제거하면 된다. || ''(비어있음)'' || 18000 || 6000 || ||has_ceiling||기반암 천장이 있는지 여부|| false || true || false || ||has_raids||습격을 일으킬 수 있는지 여부 || true || false || true || ||has_skylight||오버월드처럼 낮에 하늘에 광원이 있는지 여부 || true || false || false || ||height^^(1.17 예정)^^||설치 가능한 높이를 정한다. 256부터? 2032 사이 정수값이다. || 256 || 256 || 256 || ||infiniburn||무한히 불을 태울 수 있는 블록 태그 || minecraft:infiniburn_overworld || minecraft:infiniburn_nether || minecraft:infiniburn_end || ||logical_height||블록 높이 제한, has_celling이 true면 해당 값의 y좌표에 기반암 천장이 생긴다. || 256 || 128 || 256 || ||natural||false이면 나침반이 무작위로 회전, true이면 네더 차원문이 좀비화 피글린 생성한다. || true || false || false || ||piglin_safe||피글린이 좀비화 피글린으로 변하지 않는 여부 true이면 생존. || false || true || false || ||respawn_anchor_works||플레이어가 리스폰 정박기를 사용할 수 있을지 여부, false인 상태로 사용시 폭발 || false || true || false || ||ultrawarm||차원이 네더처럼 작동[* 물이 증발하거나 스펀지가 증발]하는지 여부 || false || true || false || === 생물 군계 === [anchor(biome)] 1.16.2부터 추가된 기능. ~~모드에만 있을줄 알았던...~~ === 아이템 수정자 === 1.17부터 추가된 기능. /Item ... modifier 명령어를 사용할 때 쓰인다. 더 많은 내용은 [[https://minecraft.gamepedia.com/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^^(JE 1.17)^^ :'''선택 사항'''. 만약 true이면 현재 내구도에 비례하여 변경된다. '''set_lore''' - 아이템에 설명을 추가한다. * lore '''set_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": "set_name", "name" : "NamuWiki" }] }}}아이템의 이름과 설명, 무기 피해량은 무한으로 설정한다. {{{#!syntax json [{ "function": "set_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": "addition", "slot": "mainhand" }] }] }}} == [[마인크래프트/데이터팩/목록|목록]] == [[마인크래프트/데이터팩/목록]] 참조. [[분류:마인크래프트]][[분류:나무위키 마인크래프트 프로젝트]]