본문으로 건너뛰기

json 구문으로 리소스 팩/데이터팩 설명 커스텀하기 ​

INFO

본문에서는 json문법과 명령어를 모르고 있다와
pack.mcmeta의 기본적인 구조와 리소스 팩의 기본적인 구조에 대해 알고 있다라는 전제 하에 설명하고있다.

pack.mcmeta의 설명 부분에서는 명령어에서 씌이는 json 문법의 글씨효과를 일부 사용할 수 있다.

위 리소스 팩에 씌인 pack.mcmeta를 예로 들자면

json
{
  "pack": {
    "pack_format": 15,
    "supported_formats":[15,46],
    "description": [
      { "text": " ◆ ", "color": "aqua", "bold": false },
      { "text": "도미노한국인 제작", "color": "aqua", "bold": true },
      { "text": "\n" },
      { "text": " Version:", "color": "gray", "bold": true },
      { "text": "1.0 ", "color": "gray", "bold": false },
      { "text": " Lab PBR 1.3 ", "color": "white", "bold": true }
    ]
  }
}

이런식으로 기존의 description { 내용... }이 아닌
description [ { 커맨드1 }, { 커맨드2 }] 같은 방식을 사용하고 있다.

예를 들어

안녕하세요 여러분

이라고 쓰고 싶다면

json
      { "text": "안녕하세요 ", "color": "red", "bold": true },
      { "text": "여러분 ", "color": "white", "bold": false }

이런식으로 작성할 수 있다.

Json 문법 ​

text ​

쓰고 싶은 문자를 쓸 수 있다.
\n을 통해 줄바꿈이 가능하다.
만약
" ' , \
기호를 쓰고 싶다면 이스케이프 문자라고 불리는 역슬래시\를 앞에 붙이면 된다.

json
 { "text": " \"안녕, 세상아!\" \n text 테스트 " }


color ​

글씨의 색을 지정할 수 있다.
지정된 깁노 색상값 값이나 다른 원하는 색을 쓸 수 있다.
다른 원하는 색을 쓰고 싶다면 hex 코드를 쓸 수 있다.

hex 코드는 위에 준비된 색상 선택 도구를 쓰거나 구글에 " Google 색상 선택 도구 " 등을 검색해 사용할 수 있다.

🎨 기본 색상값 목록
  • black
  • dark_blue
  • dark_green
  • dark_aqua
  • dark_red
  • dark_purple
  • gold
  • gray
  • light_gray
  • dark_gray
  • blue
  • green
  • aqua
  • red
  • light_purple
  • yellow
  • white
  • minecoin_gold
  • material_quartz
  • material_iron
  • material_netherite
  • material_redstone
  • material_copper
  • material_gold
  • material_emerald
  • material_diamond
  • material_lapis
  • material_amethyst
  • material_resin
json
{"text": "안녕, ", "color": "light_purple"},
{"text": "세상아!", "color": "#B8AAFF"}


shadow_color ​

글씨의 그림자 색을 지정할 수 있다.
[1.0, 1.0, 1.0, 1.0] 형식으로 rgba를 지정할 수 있다.
rgba가 255가 아닌 1~0 사잇값을 구하고 싶을 경우 변환기나 전용 색 선택 도구를 쓸 수 있다.

참고로 적용하면 원래 색상과는 살짝 다르게 채도가 낮고 어두워질 수 있다.

json
{
    "text": "안녕, 세상아!",
    "color": "#edc177",
    "shadow_color": [0.82, 0.482, 0.247, 1.0]
}


bold ​

글씨를 굵게 할 수 있다.
true, false로 설정할 수 있으며 false라면 bold를 굳이 쓰지 않아도 된다.

json
{ "text": "안녕, 세상아!", "bold": true }


italic ​

글씨를 기울일 수 있다.
위와 동일하게 true, false로 설정할 수 있으며 false라면 사용하지 않아도 된다.

json
{ "text": "안녕, 세상아!", "italic": true }


underlined ​

글씨에 밑줄을 칠 수 있다.
위와 동일하게 true, false로 설정할 수 있으며 false라면 사용하지 않아도 된다.

json
{ "text": "안녕, 세상아!", "underlined": true }


strikethrough ​

글씨에 취소선을 칠 수 있다.
위와 동일하게 true, false로 설정할 수 있으며 false라면 사용하지 않아도 된다.

json
{ "text": "안녕, 세상아!", "strikethrough": true }


obfuscated ​

글씨가 마구잡이로 뒤바뀌는 효과를 줘 읽을 수 없게 난독화할 수 있다.
위와 동일하게 true, false로 설정할 수 있으며 false라면 사용하지 않아도 된다.

json
{ "text": "안녕, 세상아!", "obfuscated": true }


translate ​

마인크래프트의 언어 파일에 있는 문자열을 사용할 수 있다.
언어파일은 assets에서

📁 assets
    ↳ 📁minecraft
        ↳ 📁lang

에서 찾을 수 있다.

예를 들어 해당 경로에 있는 ko_kr.json에 있는

json
"advMode.mode.redstoneTriggered": "레드스톤 필요",

를 참고해서 description에

json
{ "translate": "advMode.mode.redstoneTriggered" }

라고 넣었다면 이렇게 표시되며

게임 세팅에서 언어를 바꾸면 해당 문구도 같이 바뀌게 된다.

여러 언어로 특정 문구로 전하고 싶을 때 쓸 수 있으며
다만 직접 문자열을 만들지는 못한다.


json 작성 팁 ​

이 부분은 json을 다룰 줄 안다면 읽지 않아도 된다.

줄 바꿈, 띄어쓰기, 들여 쓰기가 반드시 필요한가? ​

문자열 내부가 아니라면 공백과 줄 바꿈은 데이터에 아무런 영향을 미치지 않으며
이걸 쓰는 이유는 가독성을 위해서다.
들여 쓰기는 코드 편집기를 사용한다면 대부분 줄 바꿈을 했을 때 자동으로 넣어진다.

메모장으로 해도 되는가? ​

코드 편집기가 아니라 메모장을 써도 상관은 없다.
다만 코드 편집기를 사용하는 것을 추천하는데 그 이유는 초반에는 실수할 일이 많아서이다.
예를 들어서 괄호 뒤에 쉼표( , )를 붙이는 것을 깜빡한다거나 등의 실수가 있을 경우
코드 편집기를 사용하면 바로바로 오류를 찾을 수 있기 때문에 훨씬 편리하다.