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

마인크래프트/데이터팩에서 넘어옴

역사 raw
대문 랜덤 문서 최근 토론
이 문서의 상위 문서: 마인크래프트/팩
1. 개요2. 제작
2.1. 폴더 구조2.2. pack.mcmeta2.3. functions
3. 기능
3.1. 구조물3.2. 드롭 아이템3.3. 발전 과제3.4. 조합법3.5. functions3.6. 술어3.7. 차원
3.7.1. dimension_type‌
3.8. 생물 군계3.9. 아이템 수정자
4. 목록

1. 개요[편집]

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

2. 제작[편집]

데이터 팩 파일은 .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[편집]

데이터팩 파일 안에는 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는 다이아몬드, #은 막대기라고 했을 시 패턴에서
{
  "type": "minecraft:crafting_shaped",
  "pattern": [
    "XXX",
    " # ",
    " # "
  ],
  "key": {
    "#": {
      "item": "minecraft:stick"
    },
    "X": {
      "item": "minecraft:diamond"
    }
  },
  "result": {
    "item": "minecraft:diamond_pickaxe"
  }
}

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

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

3.5. functions[편집]

1.12에는 data 폴더에 있는 functions 폴더에다가 넣으면 되지만 1.13부터는 datapack을 사용해 함수를 제작해야 한다.

3.6. 술어[편집]

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이면 천둥이 올 때 성공한다.

예시:
플레이어 웅크리기 감지
파일 경로: .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. 생물 군계[편집]


1.16.2부터 추가된 기능. 모드에만 있을줄 알았던...

3.9. 아이템 수정자[편집]

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(JE 1.17) :선택 사항. 만약 true이면 현재 내구도에 비례하여 변경된다.

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

set_name - 아이템의 이름을 설정한다.
  • name
예시:
아이템 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] 물이 증발하거나 스펀지가 증발