개인 자료란 (JE)

  서버 커뮤니티

한국 마인크래프트 포럼

마인크래프트 자료 및 커뮤니티 플랫폼

전체 회원수 122,121명 ( +41명 )

※ 장기간 미활동 회원 제외

Profile Ylemon0618 HK For Developers 에디터

Ylemon0618 f920ec2ed0f7479684dd910fc7fde463

Profile

커뮤니티new 개발자란new 개발자 강좌 커맨드

마인크래프트 커맨드 강좌 - 응용편 : timer 만들기!

2020.08.02 조회 수 3406 추천 수 0

안녕하세요. 오늘은 마인크래프트 커맨드를 응용해서 타이머를 만드는 방법을 소개해 드리겠습니다.

우선 알아야 할 명령어 들입니다.

-scoreboard

-execute

-setblock

-title


이 명령어들은 나중에 소개해 드리겠습니다.

모르시는 분들은 다른 강좌를 찾아보시거나, 구글링을 해보시는 걸 추천합니다.


자, 그럼 이제 시작해 보겠습니다.


우선, 채팅창에 다음과 같은 명령어들을 쳐주세요.

03731551f94567a0832dbdb03fbe77ab.png

/scoreboard objectives add timer dummy {"text":"timer"}


잠깐 설명을 하자면 timer 라는 이름의 dummy 타입의 objective 를 만드는 명령어 입니다.

파란색 글씨로 되어있는 timer 는 명령어에서 쓸 이름이고, 초록색 JSON형식으로 되어있는 timer 는 직접 보이는 이름입니다.

저는 쉽게 이해를 돕기위해 두개의 이름을 통일했습니다.


ca9b755e00ceea727d35cbdcec3a4446.png

/scoreboard objectives add second dummy {"text":"second"}


second 라는 이름의 dummy 타입의 objective 를 만드는 명령어 입니다.


9dd22772615ac80c6ef0fdb8fb7891b2.png

/scoreboard objectives add minute dummy {"text":"minute"}


minute 라는 이름의 dummy 타입의 objectives 를 만드는 명령어 입니다.


자, 이렇게 3개의 명령어를 쳐줬다면 준비는 끝났습니다.

이제 커맨드 블럭을 사용해 봅시다.


(저는 타이머를 시작시키는 방법을 레버를 당기는 형식으로 선택했습니다.

여러분들은 하고싶으신 대로 하셔도 무방함을 알려드립니다.)


이제 본격적으로 타이머를 만들어 보겠습니다.

scoreboard players add @a timer 1

을 반복형 커맨드 블럭에 넣어주고,

execute as @a if score @s timer matches 20 run scoreboard players add @a second

를 연쇄형 항상 활성화 커맨드 블럭에 넣어주세요.

scoreboard players reset @a timer

를 연쇄형 항상 활성화 조건적 커맨드 블럭에 넣어주시고 작동 시켜주면

second가 올라가는 것을 확인 할 수 있습니다.

이 명령어의 원리는, 반복 커맨드는 1틱(0.05초)에 한번 작동된다는 점을 이용해 timer 변수가 20이 될때마다 second 에 1을 더하고, timer 를 초기화 시키는 것 입니다.


이번에는 분이 올라가는 시스템을 만들어 보겠습니다.

execute as @a if score @s second matches 60 run scoreboard players add @a minute 1

을 연쇄형 항상 활성화 커맨드 블럭에 넣어주고,

scoreboard players reset @a second

를 연쇄형 항상 활성화 조건적 커맨드 블럭에 넣어주면

60초 마다 분이 올라가는 것을 확인 할 수 있습니다.

이것도 마찬가지로 second 변수가 60이 될 때 마다 minute 에 1을 더하고, second 를 초기화 시키는 것 입니다.


이제 분과 초를 actionbar 에 띄워줄 건데요

다른 반복형 커맨드 블럭에 (좀 깁니다)

title @a actionbar ["",{"text":"[","color":"gold","bold":false},{"selector":"@a","color":"gold","bold":false},{"text":"] ","color":"gold","bold":false},{"text":"timer : ","color":"yellow","bold":false},{"score":{"name":"@a","objective":"minute"},"color":"green","bold":false},{"text":" : ","color":"blue"},{"score":{"name":"@a","objective":"second"},"color":"green","bold":false}]

를 넣어 주세요.

그리고

54196b66b58bce6f16f9b6b9f4a0008f.png

와 같은 모양으로 커맨드 블럭 3개를 더 설치해 주시고,

커맨드 블럭에 각각

scoreboard players set @a second 0

scoreboard players set @a minute 0

scoreboard players reset @a timer

을 넣어 주세요.


이렇게 하면 스톱워치 기능은 완성입니다.


이제 타이머 기능을 만드시고 싶으신 분은 앞의 명령어를 조금 바꿔야 됩니다.


우선 스톱워치와 같은 모양으로 커맨드 블럭을 설치해 주시고, (조건적, 무조건적 등도 유지되어야 합니다.)

반복형 커맨드 블럭 쪽은 차례로

scoreboard players add @a timer 1

execute as @a if score @s timer matches 20 run scoreboard players remove @a second 1

scoreboard players reset @a timer

execute as @a if score @s second matches -1 run scoreboard players remove @a minute 1

scoreboard players set @a second 59

를 넣어 주세요.


그리고 반응형 커맨드 블럭 쪽은 차례로

scoreboard players set @a second <하고싶은 초 크기>

scoreboard players set @a minute <하고싶은 분 크기>

scoreboard players reset @a timer


를 넣어주세요.


이렇게 해주시면 완성이지만, 자동으로 actionbar도 뜨게 하고싶으신 분은

251067527dc4e545e0a4061866714f48.png

다음과 같은 모양으로 반응형 커맨드 블럭을 하나 더 설치해 주세요.

(저는 스톱워치, 타이머 둘다 해서 두개입니다.)

그리고 저 커맨드 블럭에

setblock <actionbar 를 뜨게 하는 커맨드 블럭을  작동시킬 레드스톤 블럭을 설치할 좌표> redstone_block

을 넣어주시면 됩니다.

이렇게 해 주시면 최종적으로 완성입니다.

만든 타이머를 탈출맵이나 파쿠르맵에 써 주시면 좋겠네요 ㅎㅎ

긴 글 읽어주셔서 감사하고, 또 정말 고맙습니다.

저는 다음에 또 다른, 더 재미있고 유익한 강좌로 찾아뵙겠습니다.

여러분 모두 안녕히 계세요.


15개의 댓글

리을
2021.08.24

그대로 입력했는데 타이머가 끝나지 않고 마이너스로 계속 내려가네요ㅠㅠ 어떻게 해야하죠..?

Ylemon0618
2021.09.11
@리을

second 와 minute 이 0인지 비교하는 부분이 오류가 있을 가능성이 큽니다

확인해 보세요

haneul1102
2021.06.20

처음부터 끝까지 작동이 안되는데 어떻게 하나요?

노군오1244
2021.02.07

멀티가 돼면 타이머가 작동하지 않아요

Ylemon0618
2021.03.16
@노군오1244

아마 selector 가 @a 라서 그럴겁니다

 

셀렉터를 바꿔보세요

국민석
2021.01.31

타이머 0초가 됬을 때 타임 오버 뛰우고 싶은데 어떻게 해야 하나요?

 

Ylemon0618
2021.02.05
@국민석

확인이 늦었네요.. ;;

무슨 말씀이신지...?

국민석
2021.02.05
@Ylemon0618

타이머에 시간제한이 되면 액션바에 타임 오버라는 글씨가 뜨는 커맨드를 만들고 싶은 겁니다.

근데 그것을 어떻게 해야 할지 몰라서 물어본 것입니다.

Ylemon0618
2021.02.07
@국민석

if score 써서 minute 랑 second 둘 다 0이라면 띄우게 하시면 됩니다

국민석
2021.02.14
@Ylemon0618

감사합니다

저만 그런지는 모르겠는데 second가 줄어들지 않아요 ㅠ0ㅠ

Ylemon0618
2020.10.06
@욜로오오오오오오

코드좀 올려주시겠어요

 

@Ylemon0618

그냥 레몬님이 올리신거 그대로 사용했어요...

 

@Ylemon0618

아 조건형이 꺼져있었네요...ㅠㅠ 죄송합니다 ㅠㅠㅠ

Ylemon0618
2020.10.08
@욜로오오오오오오

넹~

조건형이 아니면 초/분이(가) 올라가고 나서 timer 변수가 리셋이 되지가 않아서

한번 초/분이(가) 올라가고 말기 때문에 꼭 지켜 주셔야 해요.

강좌 읽어 주셔서 감사하고,

댓글도 감사합니다!

앞으로 잘 안되는게 있으면
디스코드 '레몬#2334' DM 이나 한마포 쪽지기능으로 연락 주세요~

컨텐츠
https://www.koreaminecraft.net/files/thumbnails/850/878/002/262x150.crop.jpg?20211018191640
(포션 시리즈) 3편 - 비 2

GlassesFilm

2021-10-18

3

https://www.koreaminecraft.net/files/thumbnails/337/871/002/262x150.crop.jpg?20211014221722

플러그인

달고나 뽑기 in Minecraft 8

BlueRing1017

2021-10-14

6

https://www.koreaminecraft.net/files/thumbnails/848/870/002/262x150.crop.jpg?20211014131239

답안지

한마탐 4주차 / 정오표 + 해설 1

베개냥이

2021-10-14

1