마인크래프트 데이터팩 강좌 [3-1] - 매크로

2025. 2. 7. 12:00·마인크래프트 강좌/데이터팩 강좌
반응형

마인크래프트 자바에디션 1.21.4를 바탕으로 제작되었습니다.

매크로란?

매크로는 1.20.2에 추가된 기능으로 매크로 함수는 내용의 일부를 게임 중에 수정할 수 있습니다.

이를 통해 스코어나 스토리지 값에 따라 함수의 내용물을 변경하여 마치 변수를 쓰는 것처럼 사용할 수 있습니다.

예를 들어 매크로를 통해 함수를 tp (매크로) 0 0 으로 설정해주면 게임 내에서

  • 매크로=1 -> tp 1 0 0
  • 매크로=2 -> tp 2 0 0

이런 식으로 값을 변경해서 사용할 수 있습니다.

매크로 함수 만들기

# 매크로 명령어는 $로 시작합니다.
# 매크로를 넣을 부분은 $(매크로명)으로 사용합니다.
# (매크로명) 에는 영어 소문자, 대문자, 숫자, _를 사용 가능합니다.
$say $(say)

# $가 없다면 평범한 명령어입니다.
say macro acitve

# 하나의 함수에 여러 매크로를 넣을 수 있고
# 하나의 명령어에 여러 매크로를 넣을 수 있습니다.
$tp @s $(x) $(y) $(z)

 

매크로 함수 사용하기

우선 매크로 함수는 평범하게 /function으로 실행하면 작동하지 않습니다.

왜냐하면 $(매크로) 부분이 비어있어 명령어가 완성되지 않았기 때문입니다.

따라서 /function <함수명> [<arguments> | with]에서 뒷부분을 채워서 매크로에 값을 전달해주어야 합니다.

 

1. 직접 채우기 (arguments)

/function potan:macro {say:"hello", x:11, y:58, z:1}
/function potan:macro {say:"hello", x:"~", y:"~", z:"~1"} (굳이 숫자일 필요 없음)

직접 매크로의 값들을 직접 할당해서 설정해주는 방법입니다.

위 명령어의 첫번째를 실행시키면 작동하는 함수의 내용물은 밑처럼 설정됩니다.

say hello
say macro acitve
tp @s 11 58 1

즉, 위에 적은 부분이 (매크로명) 부분을 대체하는 것입니다.

/function potan:macro {say:"hello", x:"~", y:"~"}
/function potan:macro {say:"hello", x:"~", y:"~", z:"a"}

따라서 위 내용처럼 1. 인수가 부족하거나, 2. 대체한 값이 명령어에 맞지 않을 경우 

오류가 나면서 실패하게 됩니다.

 

2. 다른 곳에서 가져오기 (with)

/function <함수> with (block <좌표>|entity <엔티티>|storage <스토리지ID>) [<경로>]

블록, 엔티티, 스토리지의 NBT 데이터를 인수로 넣어서 함수를 실행시킵니다.

예시 1

블록의 NBT 데이터가 이렇게 되어 있을 때

/function potan:macro with block 5 56 -20

를 작동시키면 인수로 위의 NBT 데이터가 그대로 들어가게 됩니다.

따라서 위의 예시 함수에서 say 매크로를 $(id) 로 변경하고 명령어를 실행시키면 say minecraft:chest가 실행되고 상자의 위치로 tp하게 됩니다.

예시 2

함수 내용
$say I have $(count) $(id)s.

명령어
/function potan:macro with entity @s SelectedItem

플레이어가 들고 있는 아이템의 정보들을 인수로 넣습니다.

이렇게 뒤에 추가 경로를 넣어 특정한 NBT 요소들만 넣을 수 있습니다.

예시 3

스토리지 설정
/data merge storage potan:storage {status:{gold:10,level:1}}

함수 내용물
$tellraw @a ["Level: ", {"text":"$(level)", "color":"aqua"}]
$tellraw @a ["Gold: ", {"text":"$(gold)", "color":"yellow"}]

명령어
/function potan:macro with storage potan:storage status

내용물을 아예 교체하는 것이기에 Text에도 사용이 가능합니다.

 

만약 ""가 없다면
$tellraw @a ["Gold: ", {"text":$(gold), "color":"yellow"}]

스토리지 수정
/data merge storage potan:storage {status:{gold:'"10"',level:1}}

만약 $(gold) 처럼 ""로 감싸주지 않는다면  값이 들어갔을 때 "10"으로 들어가도록 '"10"' 으로 (문자열 문자열(?)) 로 적어주어야 합니다.

 

주의사항

1. 함수 실행 오류

기존의 마크 함수는 데이터팩을 불러올 때 함수가 올바른지 확인하기에 함수에 문제가 있으면 즉시 비활성화됩니다.

하지만 매크로가 들어간 명령어는 올바른지 확인하지 않고 넘어갑니다.

이로인해 제대로 검증하지 않으면 작성에 실수를 해도 그냥 넘어갈 수도 있고

함수가 잘 제작되어도 인수가 잘못 들어가 함수가 작동에 실패할 수도 있습니다.

.따라서 이 문제로 결과물이 중간에 멈추지 않도록 신경써줘야 합니다.

2. 성능 문제

기존의 데이터팩 함수들은 맵이 열리거나 /reload 명령어 사용 후에 로드하면서 올바른지 확인한 후 끝납니다.

하지만 매크로가 들어간 명령어는 함수를 실행시킬 때마다 해당 명령어가 올바른지 확인합니다.

이는 매크로 라인이 존재하지 않는 함수에 비해 성능 저하를 유발시킬 수 있습니다. 

따라서 온갖 함수에 매크로를 도배하는 것은 성능에 영향을 끼칠 수 있으니 이 점을 주의하는 것이 좋습니다.

 

 

 

 

반응형
저작자표시 (새창열림)

'마인크래프트 강좌 > 데이터팩 강좌' 카테고리의 다른 글

마인크래프트 1.21.5 엔티티 유형 정리  (0) 2025.03.25
1.21.5 테스트 기능에 대하여  (1) 2025.02.14
마인크래프트 데이터팩 강좌 [2-1] - pack.mcmeta  (1) 2025.01.09
마인크래프트 데이터팩 강좌 [9-1] - Enchantment Provider  (0) 2024.06.26
마인크래프트 데이터팩 강좌 [9] - enchantment  (4) 2024.06.25
'마인크래프트 강좌/데이터팩 강좌' 카테고리의 다른 글
  • 마인크래프트 1.21.5 엔티티 유형 정리
  • 1.21.5 테스트 기능에 대하여
  • 마인크래프트 데이터팩 강좌 [2-1] - pack.mcmeta
  • 마인크래프트 데이터팩 강좌 [9-1] - Enchantment Provider
Potan
Potan
안녕하세요 Potan입니다. 다양한 주제를 다루고 싶으나 마인크래프트를 주로 하고있습니다. 프사 : 카미쵸(kyamicho)
    반응형
  • Potan
    Potan의 게임블로그
    Potan
  • 전체
    오늘
    어제
    • 분류 전체보기 (258)
      • Minecraft Display Engine (1)
      • 마인크래프트 강좌 (50)
        • 명령어 강좌 (7)
        • 데이터팩 강좌 (18)
        • 리소스팩 강좌 (0)
        • 업데이트 정리 (22)
        • 블록벤치 강좌 (3)
      • 마인크래프트 (10)
        • 마크관련 잡담 (10)
        • 마인크래프트 맵 (1)
      • 유튜브 관련 (0)
      • 마인크래프트 모드강좌 (18)
        • Extra Utilities 2 (9)
        • 간단한 모드강좌 (0)
        • Refined Storage (4)
        • Thermal Expansion (5)
      • 마인크래프트 생존기 (156)
        • Sky Factory 3[완] (68)
        • Direwolf20[완] (10)
        • FTB Beyond[완] (78)
      • 잡담 (7)
        • 뻘글 (1)
      • 스팀게임 (4)
        • Clone Drone in the danger z.. (3)
      • itch.io (1)
      • 개발일지 (0)
  • 블로그 메뉴

    • 홈
    • 태그
    • 미디어로그
    • 위치로그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    1.13
    모드
    Sky Factory3
    데이터팩
    datapack
    스카이 팩토리
    강좌
    명령어
    생존기
    모드팩
    스카이 블럭
    Sfy Factory 3
    minecraft
    FTB Beyond
    야생
    마인크래프트 데이터팩
    FTB
    1.10.2
    Beyond
    마인크래프트
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
Potan
마인크래프트 데이터팩 강좌 [3-1] - 매크로
상단으로

티스토리툴바