이 문서의 상위 문서: 마인크래프트/팩
1. 개요[편집]
데이터팩은 마인크래프트의 데이터들을 바꿀 수 있는 시스템이다. 스냅샷 17w43a부터 추가되었다. 모드 필요 없이 발전 과제, 함수, 드롭 아이템, 구조물, 조합법, 태그를 바꾸거나 추가할 수 있다. 맵 폴더 안에다가 data라는 이름의 폴더를 또 추가하여 폴더 형식의 데이터팩을 넣은 다음 /datapack 명령어로 활성화하면 된다.
2. 제작[편집]
데이터 팩 파일은
예를 들어.
world 라는 이름의 세계에 나만의 조합법을 만들어서 플레이하고 싶다면
world > datapacks > (파일이름) > data > crafting > recipes > 원하는 조합법.json
이렇게 넣어야만 데이터팩을 사용할 수 있다.
.minecraft/saves/(월드)/datapack에다 파일을 만들어야 한다. 폴더 이름은 라틴 문자로 지어야 한다. 그리고 data 폴더 안에 또 namespace라는 폴더를 만들어야 한다. 만약에 main이라는 폴더를 만들었을 경우 functions로 예를 들자면 function main/함수 이름이다.예를 들어.
world 라는 이름의 세계에 나만의 조합법을 만들어서 플레이하고 싶다면
world > datapacks > (파일이름) > data > crafting > recipes > 원하는 조합법.json
이렇게 넣어야만 데이터팩을 사용할 수 있다.
2.1. 폴더 구조[편집]
【폴더 구조 열기】
||
- (데이터팩 이름)
- pack.png
- data
- (namespace)
- (advancement).json
- (function).mcfunction
- (loot_table).json
- (predicate).json
- (recipe).json
- (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).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)||
2.2. pack.mcmeta[편집]
데이터팩 파일 안에는
만약에 파일이 열리지 않는다면 연결 프로그램을 메모장 등으로 바꿔주어야 한다.
JE 1.13에서는
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"는 이 데이터팩의 설명을 써놓는 곳이다.2.3. functions[편집]
1.12 때
function 다뤄봤다면 간단하다. functions 폴더를 namespace 폴더 안에다가 만든 후, 거기다가 1.12때 function 만들 때와 같이 파일을 제작한다. 파일 확장명은 .mcfunction으로 해야한다. functions를 다루지 못한다면 function 도움말을 보자.3. 기능[편집]
3.1. 구조물[편집]
3.2. 드롭 아이템[편집]
몹과 블록의 드롭 아이템과 구조물의 상자에 있는 아이템을 바꿀 수 있다. 또한 이것과 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
3.3. 발전 과제[편집]
3.4. 조합법[편집]
조합법을 바꿀 수 있다. 키에 아이템을 설정해 놓고 패턴에서 그 키로 조합하는 것이다. 다만 아쉽게도 NBT는 지원 안한다.
NBT를 적용시킬 때에는 얻을 수 없는 아이템을 주고 그 아이템을 삭제한 뒤에 NBT가 적용된 아이템을 주는 방식으로 제작하면 된다.
예시를 들면 다이아몬드 곡괭이의 경우 ' '은 빈 공간, X는 다이아몬드, #은 막대기라고 했을 시 패턴에서
라고 쓰면 다이아몬드 곡괭이의 조합법이 완성되는 것이다.
원하는 조합법을 쉽게 만들 수 있는 외국 사이트가 있다. 사이트
NBT를 적용시킬 때에는 얻을 수 없는 아이템을 주고 그 아이템을 삭제한 뒤에 NBT가 적용된 아이템을 주는 방식으로 제작하면 된다.
예시를 들면 다이아몬드 곡괭이의 경우 ' '은 빈 공간, X는 다이아몬드, #은 막대기라고 했을 시 패턴에서
{
"type": "minecraft:crafting_shaped",
"pattern": [
"XXX",
" # ",
" # "
],
"key": {
"#": {
"item": "minecraft:stick"
},
"X": {
"item": "minecraft:diamond"
}
},
"result": {
"item": "minecraft:diamond_pickaxe"
}
}라고 쓰면 다이아몬드 곡괭이의 조합법이 완성되는 것이다.
원하는 조합법을 쉽게 만들 수 있는 외국 사이트가 있다. 사이트
3.5. functions[편집]
3.6. 술어[편집]
1.15부터 생겼으며 data 폴더에 있는 predicate 폴더에 만들면 된다.
시작 - 형식: Compound
condition - 형식: String - condition의 ID 이다.
condition의 다른 부분 (아래에)
alternative
시작 - 형식: 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이면 천둥이 올 때 성공한다.
예시:
플레이어 웅크리기 감지
파일 경로: .minecraft\saves\<맵 이름>\datapacks\<데이터팩 이름>\data\<namespace>\predicates\<파일 이름>.json
{
"condition": "minecraft:entity_properties",
"predicate": {
"flags": {
"is_sneaking": true
}
},
"entity":"this"
}50% 확률로 명령어 실행{
"condition": "minecraft:random_chance",
"chance": 0.5
}3.7. 차원[편집]
1.16부터 생겼으며 data 폴더 안에 minecraft 폴더 안에 dimension , dimension_type 폴더 만들면 된다. 그 폴더 안에 영어 소문자 _ 로만 차원 이름을 적고 .json을 만들면 된다.
추가된 차원을 가고 싶다면
완전한 평지 엔드 버전
추가된 차원을 가고 싶다면
execute in <추가된 차원> run tp @s ~ ~ ~로 가면 된다.완전한 평지 엔드 버전
{
"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.7.1. 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 | 차원이 네더처럼 작동[1]하는지 여부 | false | true | false |
3.8. 생물 군계[편집]
3.9. 아이템 수정자[편집]
1.17부터 추가된 기능. /Item ... modifier 명령어를 사용할 때 쓰인다.
더 많은 내용은 마인크래프트 영어 위키로 가면 된다.
시작 - 형식: Compound
function - 형식: String - function의 ID 이다.
function의 다른 부분 (아래에)
limit_count
더 많은 내용은 마인크래프트 영어 위키로 가면 된다.
시작 - 형식: 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개로 쌓기
아이템 10개로 쌓기
파일 경로: .minecraft\saves\<맵 이름>\datapacks\<데이터팩 이름>\data\<namespace>\item_modifiers\<파일 이름>.json
[
{
"function": "limit_count",
"limit": 10
}
]도구의 내구도가 절반으로 깎이며 이름이 NamuWiki인 아이템으로 변경[{
"function": "set_damage",
"damage" : 0.5
},
{
"function": "set_name",
"name" : "NamuWiki"
}]아이템의 이름과 설명, 무기 피해량은 무한으로 설정한다.[{
"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"
}]
}]4. 목록[편집]
마인크래프트/데이터팩/목록 참조.
[1] 물이 증발하거나 스펀지가 증발