yusin_YT 1e0511f92377434a9f27b5724c29fbe3
게임버전 | 1.20.x |
---|
해당 강좌는 23w33a(1.20.2)버전으로 작성되었습니다.
또한 데이터팩에 function을 아신다는 가정하에 진행합니다!
0. 매크로가 뭔가용?
저번 강좌 때 storage를 배웠죵? 그 값을 function에서 가져와서 쓰는거에요!
예를 들어 test라는 저장소가 있고 내용물이 {x:1,y:2,z:3}에요!
그럼 tp.mcfunction에 tp @s $(x) $(y) $(z)
이라고 저장한 뒤
function <NameSpace>:tp with storage minecraft:test
라고 한다면 해당 function에 숫자를 쓰지 않았지만 tp @s 1 2 3을 친거랑 같게 되는겁니다!
1. 어떡해 쓰나요?
$명령어, 원하는 곳에$(<NBT>)을 넣으면 뎀다!
이렇게 쓰면됩니다!
<NBT>에는 해당 저장소에 있는 NBT값이여야합니다!
2. 예를 1 가지 들어줄 있어요?
음.. 스코어보드 숫자 만큼 대미지를 주는걸 만들어 봅시다!
1. 스코어보드 만들기
/scoreboard objectives add damage dummy
이름이 damage고 명령어로만 조작할 수 있는 스코어보드를 만든다.
후후.. 저 해석 오랜만에 보시죵?
2. 저장소 만들기
/data merge storage damage {damage:0}
이름이 damage고 내용물이 {damage:0}인 저장소를 만든다.
3. 스코어보드 값을 storage에 저장하기
이건 제가 알려주지 않은 부분임다!
execute store에 관련된것임다!
execute as @p at @s store result storage minecraft:damage damage int 1 run scoreboard players get @s damage
만약 가장 가까운 플레이어가 있다면..
그 플레이어를 기준으로..
이 명령어를 실행했을 출력된 값을 damage라는 저장소에 damage라는 NBT값에 int의 형태로 1를 곱해서 저장한다..
그 플레이어 기준으로 damage라는 스코어보드 값을 가져온다.
4. 대미지 주기
이제 3번 명령어를 실행하여 점수를 가져온다음에
damage.mcfunction을 만들어서
$damage @s $(damage)
이렇게 적으면 되요!
명령어 앞에 $
원하는 곳에 $(<NBT>)
그리고
/function test:damage with storage minecraft:damage
damage라는 저장소와 함께 test:damage라는 기능을 실행한다.
이렇게 치면..!!
스코어보드 값 만큼 대미지가 들어오네요!
3. 마무리이~
한 번 써도면 음~ 이해했어! 이런느낌이 드실껍니다!
네? 저는 데이터팩 function이나 아예 모르겠다구요?
괜찮아요! 질문은 댓글 쪽지 디스코드(yusin_12)로 하면 되요!
yusin12
2023.08.28해당 강좌에 쓴 데이터팩입니다.
datapacks.zip
세찐찐
2023.08.29감사합니다!