글 난이도 : 하


데이터 팩을 사용할 줄 안다는 전제 하에 글을 쓴다.

이 글을 쓰게 된 계기는 별 것 없음.

그냥 맵고갈이 너무 심해져서 양산형 맵을 너무 빠르게 양산하려다가 발견했음.

ㅇㅇ.. 그냥 쓰던 방식 쓰는 게 좋을 텐데, 맵을 평소보다 16.9배 빠르게 만들어야 한다면 추천함.

사실, 뽑기 자체를 만드는 난이도는 크게 어렵지 않음. 고양이도 아마 할 수 있을 거임.


먼저, 랜덤한 값을 출력하는 명령어를 만들면 되겠지.

스토리지의 이름, 랜덤 출력 범위, 함수 이름 등등은 원하는 대로 변경 가능함. 이 글에서는

스토리지: minecraft:random.value

랜덤 출력 범위: 1~10

으로 하겠음.


/execute store result storage minecraft:random value int 1 run random value 1..10


위 명령어로 minecraft:random 의 value에 1부터 10 사이의 난수를 저장하는 스토리지를 만들어준다.


이제, 데이터 팩을 만든 뒤 함수를 하나 만들어주면 된다.

x,z좌표 중 하나를 골라서 $(value) 로 바꿔줘라. 여기서는 z축을 고르겠음.


$setblock x y $(value) redstone_block


이제, 함수나 연쇄형 커맨드 같은 방식으로 /execute store.. 커맨드와 방금 만든 함수가 연쇄적으로 작동되도록 만들어주면 된다. 단, 함수는 minecraft:random이라는 스토리지의 value 값을 사용하기 때문에, 뒤에 with storage minecraft:random을 붙여야 함.



(반응형) /execute store result storage minecraft:random value int 1 run random value 1..10


(연쇄형) /function (네임스페이스):(함수 이름) with storage minecraft:random


이제, 이 명령어를 사용하게 된다면 x, y, (1부터 10 사이 난수) 값에 해당되는 좌표에 레드스톤 블록이 설치된다.

매개변수를 사용한 반대 축 방향 (글에서는 x축)으로 커맨드를 설치하면 되는데, 상대좌표를 이용하면 편하게 할 수 있음. 단순하게 하자면 이런 식임. (커맨드와 셜커 상자 사이 빈칸이 레드스톤 블록이 설치될 곳임.)


 

24b0d121e09c28a8699fe8b115ef0468e5abefbc63

 


이렇게 하면, 목표 좌표에, 나온 난수 값을 z좌표로 하는 행에 있는 셜커 상자가 설치되겠지.

if score로 노가다를 하기보단, 엑시옴 복붙 딸깍으로 하는 편이 맵 제작을 빠르게 하는 데에는 훨씬 낫지 않을까 하는 생각임.