생방송 보니까 데이터팩을 꺼려하는 사람들이 꽤 보이더라고? 사실 데이터팩이 그렇게 어려운 게 아니라서 나도 하루만에 입문해서 맵에 있던 커맨드 블록들을 전부 데이터팩으로 옮겨버린 전적이 있기 때문에 이 쉽고도 좋은 걸 알려주고자 이 글을 쓰게 되었음.
그리고 쓰려다가 알게 됐는데 이미 데이터팩 입문 글을 올린 게이가 있더라고?! 폴더 생성이나 함수 쪽은 저기에 더 잘 설명이 돼있기도 하고, 여기서 다룰 것들도 저 글과 많이 겹치니 웬만하면 저 글을 보는 게 도움이 더 될 거임!
이 글에선 무엇을 다루나!
0. 폴더 생성
1. 함수(function)
2. 발전과제(advancement)
3. 조합법(recipe)
* Ctrl+F(단어 찾기)로 쉽게 이동할 수 있음!
폴더 생성
일단 기본적인 구성은 마인크래프트의 data 폴더를 그대로 따름. 다른 점은 pack.mcmeta를 써야한다는 점과 몇몇 기능은 못 쓴다는 점? 그정도 말곤 없을 거임.
들어가기에 앞서서 먼저 내가 쓰는 데이터팩 템플릿을 주고 시작할게!
먼저 pack.mcmeta를 작성해야 하는데, 여기에도 사실 filter이라는 기능이 있거든? 근데 입문 글에 이런 거 쓰면 다 나갈 테니까 이건 패스하고, 단순하게 필수로 써야하는 것만 적으면 이거임.
{
"pack": {
"pack_format": 71,
"description": "데이터팩"
}
}
pack_format은 데이터팩의 버전을, description은 데이터팩 설명을 나타낸다. description은 별로 필요없고(?), pack_format은 버전마다 달라진다는 것만 알면 된다. 71은 1.21.5 버전 용이고 다른 버전들은 마인크래프트위키나 나무위키에 적혀있으니 그거 참고하면 된다.
사실 filter을 안 쓰면 pack.mcmeta는 별로 중요하지 않음. 대충 버전만 맞추면 되는 거니 다음으로 넘어가자!
이제 namespace를 정해야 하는데, 원래 기본 마크 data 폴더에서 minecraft 폴더가 있지? 그 minecraft도 namespace라고 보면 된다. 대충 아무 이름이나 적으면 되는데 대문자나 영어 알파벳이 아닌 문자는 쓸 수 없는 걸로 알고 있음.
내가 준 폴더의 이 위치가 namespace의 위치임! 저 custom이 내가 임의로 설정한 namespace고!
함수(function)
함수는 여러 명령어 묶음을 한 번에 실행시켜주는 기능임! 물론 여러 업데이트를 거치면서 그 이상의 위상을 가지게 되긴 했는데, 일단 여기서는 함수의 기본적인 부분이랑 함수 태그만 다룰게!
함수를 쓰는 법은 되게 쉬움! 그냥 확장명이 mcfunction인 파일에 명령어를 '/' 없이 붙여넣기만 하면 됨! 간단한 예시를 보여주자면,
execute as @a at @s if block ~ ~-0.1 ~ minecraft:emerald_block run title @a title {text:"클리어 축하한다!",color:dark_aqua}
execute as @a[tag=!clear] at @s if block ~ ~-0.1 ~ minecraft:emerald_block run playsound minecraft:entity.firework_rocket.launch weather @a ~ ~ ~ 1 1
execute as @a[tag=!clear] at @s if block ~ ~-0.1 ~ minecraft:emerald_block run tag @a add clear
execute as @a[tag=clear] at @s unless block ~ ~-0.1 ~ minecraft:emerald_block run tag @a remove clear
이건 에메랄드 블록 위에 올라가면 클리어 메세지와 함께 폭죽 소리가 나오는 함수임.
확실히 커맨드 블록보다 만들도 편하고 수정하기도 편해 보이지?!
그럼 이제 함수 태그에 대해 설명하겠음. 경로는 minecraft > tags > function 이고, 여기에 tick과 load라는 태그를 추가할 수 있음.
tick은 설정한 함수가 매 틱마다 실행되도록 하는 태그고, load는 맵이 로드되거나 reload 명령어를 입력했을 때 실행되도록 하는 태그임.
{ "values": [
"custom:tick"
] }
이건 예시고, 저렇게 values 안에 원하는 함수 이름을 적으면 끝임! 쉽지? 이것만 알면 이제 인생에서 커맨드 블록을 영원히 다시 안 봐도 된다!
발전과제(advancement)
말 그대로 발전 과제임. 이건 스스로 만드는 건 개인적으로는 불가능하다 생각하고, 사이트에서 만드는 게 일반적임.
(발전 과제 만드는 사이트 :https://misode.github.io/advancement/)
꼭 알아야 하는 걸 알려주자면,
1. 하나의 업적 묶음에 root라는 이름의 업적 파일은 필수적이다.
2. 파일명이 root인 업적의 icon은 그 업적 묶음 전체의 대표 아이콘이 된다.
3. 파일명이 root인 업적은 background를 입력해 그 업적 묶음의 배경사진을 설정할 수 있다.
4. 연결되는 업적을 만들고 싶다면 연결할 업적을 parent에 입력해 연결할 수 있다.
나머지는 사이트 만지면서 차차 알아가실 수 있을 거임! 아니면 마인크래프트 기본 발전 과제 파일을 보면서 알아가실 수도 있고!
조합법(recipe)
말 그대로 아이템 조합법임. 제작대의 조합법 뿐만이 아니라 화로, 대장장이 작업대, 모닥불 등의 모든 조합(?)법이 다 있음.
아무튼 바로 본론으로 가자면, 먼저 예시로 피스톤의 조합법 파일을 보여줄게.
{
"type": "minecraft:crafting_shaped",
"category": "redstone",
"key": {
"#": "minecraft:cobblestone",
"R": "minecraft:redstone",
"T": "#minecraft:planks",
"X": "minecraft:iron_ingot"
},
"pattern": [
"TTT",
"#X#",
"#R#"
],
"result": {
"count": 1,
"id": "minecraft:piston"
}
}
백문이 불여일견이라고, 사실은 저것만 이해하면 다른 설명은 별로 필요가 없을 거임.
type이나 category는 위키에 있기도 하고, 사이트(https://misode.github.io/recipe/)에 선택형으로 있어서 설명할 필요는 없...을 것 같고,
key는 pattern에 쓸 기호에 아이템을 지정해주는 거, pattern은 key에서 지정한 기호로 조합법의 형태를 만들어주는 거라고 생각하면 된다. 그리고 result는 조합을 하고 나면 나오는 아이템이고, 여기에 components도 붙일 수 있음.
입문용이라 글이 짧고 내용이 많이 없음! 이건 데팩을 안 쓰는 편식쟁이들에게 이게 얼마나 좋은지 알려주려고 쓴 글이기 때문에 막상 이 글만 보고 만들려고 하면 못 쓰는 기능이 많을 거임. 그러니 이 글을 보고 흥미를 느꼈다면 이 글에서 얻은 배경지식으로 다른 글들을 보면서 지식을 쌓으면 데이터팩을 잘 쓸 수 있게 될 거임!
한수 배우고 간다 :)
함수 배우고 간다 :)
조미료 처럼 데이터팩 쓰면 맵이 더 맛있어짐
ㄴㄴ 나에게는 데이터팩이 메인 디쉬인데 ㅋㅋㅋㅋㅋㅋ
와드 박음