스티브코딩

이벤트와 실행

이벤트 블록 종류·실행 규칙, 이벤트 확장·메시지 이벤트, 안 될 때 점검

개념2026-10-20 갱신

한눈에 보기

  • 무엇: 코드는 ‘이벤트 블록’ 안에 있어야 실행된다 — 채팅명령어·플레이어 행동·사망·시작하면·무한반복, 이벤트 확장(블록·아이템·몹·메시지)
  • 누구: 코드작성기를 처음 여는 학생(초등 고학년~중학생), 멀티플레이 코딩 수업을 하는 교사
  • 몇 분: 개념·플레이어 이벤트 20분 + 이벤트 확장 예제 20~40분
  • 결과물: 채팅명령어·행동으로 실행되는 나만의 코드, 친구의 채팅으로 실행되는 코드

코드는 ‘이벤트’가 있어야 실행된다

채팅명령어 0 → 에이전트를 내 위치로
채팅명령어 0 → 에이전트를 내 위치로

1 이벤트 블록 안에 코드 작성 예: 채팅명령어 0 → 에이전트를 내 위치로

▶ 시작 버튼
▶ 시작 버튼

2 ▶ 시작 버튼으로 게임에 돌아가기 코드작성기 화면이 열려 있는 동안은 모든 코드가 멈춤

채팅창에 0 입력
채팅창에 0 입력

3 채팅창(T)에 명령어 입력 0 입력 → 코드 실행

  • 코드를 실행시키는 이벤트의 종류: 시작하면 · 채팅명령어 입력 · 플레이어 행동(걷기·아이템 사용) · 블록 설치·파괴 · 몹이 죽었을 때 · 무한반복
  • 이벤트 밖에 놓인 블록은 회색으로 바뀌고 실행되지 않음(영상 화면: 이벤트에 끼우지 않은 에이전트 블록이 회색)

플레이어 이벤트: 채팅명령어·행동·아이템·사망

이벤트 블록(플레이어 범주) 언제 실행 영상 예
다음 채팅명령어를 입력하면: "1" 채팅창에 1 입력(숫자·한글 모두 가능, 입력이 쉬운 숫자를 많이 씀) 채팅창에 말하기 "하이" / 다음 좌표로 텔레포트 ~0 ~10 ~0 (머리 위 10칸), ~0 ~-10 ~0 (10칸 아래)
플레이어가 (걷고) 있으면 실행 그 동작을 하는 동안 나의 위치(~0 ~0 ~0)에 잔디 블록 놓기 → 걸을 때마다 블록(불·꽃도 가능)
on item (철제 삽) used 그 아이템을 들고 우클릭 텔레포트(x 쪽 10칸, 자막 기준 · [6:49 장면](https://youtu.be/kRMxvobQ36E?t=409)) / 잔디 블록 놓기
플레이어가 사망하면 실행 · 화살을 쏘면 실행 죽었을 때 · 활을 당겼다 놓을 때 메시지 보여 주기 · 나의 위치에 잔디 블록
- **동작 목록**: 걷고 · 물에서 수영하고 · 떨어지고 · 등반하고 · 용암에서 수영하고 · 날고 · 타고 · 웅크리고(Shift) · 달리고(Ctrl 또는 앞으로 두 번) · 통통 튀어 다니고 - **블록 범주**에도 ‘(블록)이 놓이면 실행’ · ‘(블록)이 깨지면 실행’ 이벤트가 있음
동작을 바꾸는 드롭다운 — 예전 코드 커넥션 화면 (05:29)
동작을 바꾸는 드롭다운 — 예전 코드 커넥션 화면 (05:29)

예제: 무술년 개부르기(채팅명령어 + 통통 튀기)

다음 채팅명령어를 입력하면: "개"
    블록 채우기: 슬라임 블록  시작 ~-20 ~0 ~-20  끝 ~20 ~0 ~20  교체하기
플레이어가 [통통 튀어 다니고] 있으면 실행
    소환 동물 늑대 를 위치 랜덤 위치 선택: ~-10 ~20 ~-10 ~ ~10 ~20 ~10
  • 1 채팅명령어 ‘개’: 내 주변 바닥을 슬라임 블록으로 41×41칸 채우기
  • 2 슬라임 위에서 튈 때마다: 하늘(20칸 위)에서 늑대가 떨어짐
  • 소환 범위(-1010)를 바닥(-2020)보다 좁게 → 늑대가 슬라임 위에 떨어져 다치지 않음
  • 마인크래프트의 개 = 뼈다귀로 길들인 늑대. 서바이벌 모드에서 늑대를 때리면 무리가 공격
두 묶음으로 된 개부르기 코드 (02:30)
두 묶음으로 된 개부르기 코드 (02:30)

이벤트 규칙: 같은 이벤트는 하나만

채팅명령어 1이 두 개면 나중 것이 회색
채팅명령어 1이 두 개면 나중 것이 회색

같은 채팅명령어는 하나만 채팅명령어 1이 두 개면 나중 것이 회색(비활성)으로 바뀜 → 숫자·이름을 다르게

무한반복 실행 블록
무한반복 실행 블록

무한반복은 예외 여러 개를 동시에 둘 수 있음(타이머·감지 코드를 따로 작성)

시작하면 블록
시작하면 블록

‘시작하면’은 하나만 ▶ 시작 버튼을 누를 때 한 번 실행, 처음 설정을 모아 두기

시작하면 · 무한반복 · 백그라운드로 실행 비교

블록(반복 범주) 언제 실행 영상 결과(에이전트를 플레이어에게 텔레포트 → 앞으로 이동)
시작하면 실행 코드를 실행하는 순간 한 번 20칸 가고 끝
무한반복 실행 조건 없이 계속 반복 에이전트가 멈추지 않음 → 코드를 정지해야 멈춤
백그라운드로 실행 “이 코드를 현재 코드와 함께 실행합니다” 시작하면 실행과 비슷. 30칸 가는 동안 채팅명령어 1(블록 놓기)도 잘 실행됨
- 많이 쓰는 것은 **무한반복**. 시작하면·백그라운드는 단순한 코드에서는 차이가 거의 없음(복잡한 코드에서 다시 비교 필요) - C키로 여는 코드작성기는 정지 버튼이 따로 없음: 창을 열면 코드가 멈추고, ▶ 시작을 누르면 실행되며 게임으로 돌아감(영상 설명)
① 반복 범주의 세 실행 블록 — 예전 화면 (00:19)
① 반복 범주의 세 실행 블록 — 예전 화면 (00:19)
② 백그라운드로 실행 설명 문구 (03:14)
② 백그라운드로 실행 설명 문구 (03:14)

사망 이벤트: 왜 에이전트가 대신 말할까?

다음 채팅명령어를 입력하면: "0"   → 사망횟수 에 0 저장
다음 채팅명령어를 입력하면: "1"   → 죽이기 대상: 자기 자신 (@s)
다음 채팅명령어를 입력하면: "2"   → 채팅창에 말하기: 연결한 문자열 "죽은 횟수:" 사망횟수
플레이어가 사망하면 실행
    일시중지 (ms)      ← 방법 1에서 맨 앞에 추가
    사망횟수 값 1 증가
    채팅창에 말하기: 연결한 문자열 "죽은 횟수:" 사망횟수
  • 플레이어가 죽어 있는 동안에는 에이전트가 대신 실행 → 채팅에 에이전트 이름으로 “죽은 횟수”가 나옴(횟수는 정상으로 늘어남)
  • 방법 1: 맨 앞에 일시중지 2초를 넣고 2초 안에 리스폰(블록 단위가 ms(1/1000초)라 2초는 2000 입력 — 2:06 화면의 ‘일시중지 (ms)’ 블록)
  • 방법 2: 설정 → 게임 → 월드 옵션 ‘즉시 리스폰’ 켜기 → 죽자마자 살아나 플레이어가 직접 말함
  • 누가 말하든 명령은 모두 실행되므로 게임 진행에는 상관없음
① 사망 횟수 세기 코드 (00:31)
① 사망 횟수 세기 코드 (00:31)
② 맨 앞에 일시중지를 넣은 코드 (02:06)
② 맨 앞에 일시중지를 넣은 코드 (02:06)

다른 플레이어가 실행하기 ①: /tell 로 보내기

  • 블록: 플레이어 범주 ‘다른 플레이어가 "1" 라고 하면 실행’ → 코드작성기를 연결하지 않은 친구도 호스트(교사)의 코드를 실행
  • 채팅창에 1만 치면 실행 안 됨(채팅명령어가 아님) → 귓속말 명령 /tell 로 코드작성기를 연 호스트에게 보내야 함
  • /tell <호스트 이름> 1 (영상: /tell ssakspirit 1) 또는 /tell @a 1 (모든 플레이어에 호스트가 포함되므로 실행)
  • 보내는 플레이어가 운영자가 아니어도 실행됨(영상: 멤버·방문자 권한에서 시험)
  • 공개 채팅만으로 실행하려면 → 아래 ‘메시지 이벤트’(이벤트 확장)
① ‘다른 플레이어가 … 라고 하면 실행’ 블록 — 예전 코드 커넥션 화면 (00:07)
① ‘다른 플레이어가 … 라고 하면 실행’ 블록 — 예전 코드 커넥션 화면 (00:07)
② 다른 플레이어가 호스트에게 /tell 로 1 보내기 (01:18)
② 다른 플레이어가 호스트에게 /tell 로 1 보내기 (01:18)

이벤트 확장: 블록·아이템·몹·채팅까지 감지

  • 사용법: 확장 → ‘이벤트’ 추가 → 왼쪽 EVENTS 범주에서 이벤트 블록 꺼내기 / 일이 생길 때마다 count 1 → 변수에 더해 누적 / 명령으로 놓은 블록은 감지가 불안정(영상 테스트)
범주 감지하는 일(블록 이름) 영상 예제
블록 부수기 on 블록 broken with tool count · 놓기 on 블록 placed with tool count 메서드 부순 블록·도구 이름과 개수를 채팅으로
게임플레이 하루가 끝날 때 on end of day 낮이 끝나면 실행
아이템 사용 used · 획득 acquired · 떨어뜨리기 dropped 에메랄드를 주우면 개수, 버리면 복사
몹 몹이 죽었을 때 on mob killed with weapon isMonster 몬스터와 동물에 다른 메시지
플레이어 블록 위에서 튀어 오를 때 on player bounced height on 블록 몇 칸 튀었는지 알려 주기
- **핵심**: 채팅 메시지 이벤트 — 다른 플레이어가 채팅에 “도와줘”라고 쓰면 그 플레이어에게 순간이동. 코드작성기를 열지 않은 친구도 코드를 실행
영상: 마인크래프트의 거의 모든 이벤트를 감지!
영상: 마인크래프트의 거의 모든 이벤트를 감지!

이벤트 확장 예제 ①: 블록 부수기·놓기

on [블록] broken with [tool] [count]
    부순 갯수 값 count 증가
    채팅창에 말하기: 연결 (name of block tool) "으로" (name of block 블록) "을" 부순 갯수 "개 깼다!"
on [블록] placed with [tool] [count] [메서드]
    만약 메서드 = block placed method entity 이면
        설치 방법 에 "플레이어" 저장
    아니면
        설치 방법 에 "명령어" 저장
    놓은 갯수 값 count 증가
    채팅창에 말하기: 연결 (name of block 블록) "을" (name of block tool) "로" 설치 방법 … (뒷부분은 예제 코드에서 확인)
  • 맨손으로 부수면 도구가 ‘알 수 없는 블록’, 삽·돌삽·괭이를 들면 도구 이름이 나옴
  • 블록 종류 조건이 없어서 다이아몬드 블록에 이어 석영 블록을 놓아도 개수가 이어짐
① 블록 부수기 이벤트 (00:46)
① 블록 부수기 이벤트 (00:46)
② 블록 놓기 이벤트와 설치 방법 조건 (02:01)
② 블록 놓기 이벤트와 설치 방법 조건 (02:01)

이벤트 확장 예제 ②: 에메랄드 줍기·복사

on [item] acquired with [count] [메서드]
    주운 갯수 값 count 증가
    만약 item = 아이템(에메랄드) 이면
        만약 메서드 = item acquired method picked up 이면
            채팅창에 말하기: 연결 "에메랄드를 " 주운 갯수 "개 주웠다!"
on [item] dropped with [count]
    만약 item = 아이템(에메랄드) 이면
        채팅창에 말하기: 연결 "에메랄드가 복사되었다!"
        블록이나 아이템 주기: 대상: 자기 자신 (@s)  에메랄드  수량 1
  • 에메랄드 64개를 주우면 “에메랄드를 64개 주웠다!” / 하나 던지면 하나가 다시 들어오는 ‘복사’ 시스템
  • 획득 방법(메서드): picked up · crafted · taken from chest · taken from ender chest · bought · anvil · smelted · brewed …
① 아이템 획득 이벤트와 에메랄드·picked up 조건 (03:42)
① 아이템 획득 이벤트와 에메랄드·picked up 조건 (03:42)
② 아이템 떨어뜨리기로 에메랄드 복사 (04:46)
② 아이템 떨어뜨리기로 에메랄드 복사 (04:46)

이벤트 확장 예제 ③: 몹 처치·튕긴 높이

on [mob] killed with [weapon] [isMonster]
    만약 isMonster 이면
        채팅창에 말하기: 연결 "악의 힘이 " (name of block weapon) "으로 처단!"
    아니면
        채팅창에 말하기: 연결 "무고한 생명체가 " (name of block weapon) "으로 희생..."
on player bounced [height] on [블록]
    채팅창에 말하기: 연결 (name of block 블록) "에서 " height "칸 위로 올라갔다!"
  • 돼지와 몬스터를 네더라이트 검으로 처치해 메시지 비교 / 몹 이름을 돌려주는 값도 있음(예제에서는 안 씀)
  • 슬라임처럼 튕기는 블록 위에서 뛰면 “여덟 칸, 다섯 칸 …”처럼 높이가 나옴
① 몹 처치 이벤트와 isMonster 조건 (05:38)
① 몹 처치 이벤트와 isMonster 조건 (05:38)
② 플레이어 바운스 이벤트 (06:38)
② 플레이어 바운스 이벤트 (06:38)

다른 플레이어가 실행하기 ②: 메시지 이벤트

on [메시지] sent by [sender] to [receiver] with [messageType]
    다음 채팅명령어를 실행: 메시지
다음 채팅명령어를 입력하면: "run"
    채팅창에 말하기: "run을 실행했습니다."
  • 누가 채팅을 보내면 메시지 · 보낸 사람(sender) · 받는 사람(receiver, 공개 채팅이면 없음) · messageType 을 알 수 있음
  • 메시지를 ‘다음 채팅명령어를 실행’에 넣으면 → 다른 플레이어가 공개 채팅에 run 만 쳐도 코드작성기를 연 플레이어의 run 이 실행됨
  • /tell 이 필요 없음(①과 비교). 단, 내가 직접 run 을 치면 메시지 이벤트와 채팅명령어에서 두 번 실행됨
메시지 값을 채팅명령어 실행에 넣은 코드 (07:33)
메시지 값을 채팅명령어 실행에 넣은 코드 (07:33)

메시지 이벤트 응용: “도와줘” 하면 달려가기

on [메시지] sent by [sender] to [receiver] with [messageType]
    만약 (메시지 "도와줘" 가 포함되었는지 여부) 이면
        대상 에 (플레이어 이름 sender) 저장
        텔레포트: 타겟 대상: 자기 자신 (@s)  목적타겟 대상
  • 친구가 채팅에 ‘도와줘’를 쓰면 → 보낸 사람을 변수 ‘대상’에 저장 → 코드를 실행하는 내가 그 친구에게 순간이동
  • 친구는 코드작성기를 열지 않아도 됨 → 멀티플레이 협동 규칙 만들기 활동으로
  • 예제 코드: 이벤트 확장 예제 코드
‘도와줘’ 메시지로 보낸 사람에게 텔레포트 (09:13)
‘도와줘’ 메시지로 보낸 사람에게 텔레포트 (09:13)
교사용 메모 · 이벤트 확장 더 알기
  • 코드작성기 확장 목록에 ‘이벤트’가 추가됨(블록 이름은 아직 영어). 블록·게임플레이·아이템·몹·플레이어 범주로 거의 모든 일을 감지합니다.
  • 대부분의 이벤트는 일이 일어날 때마다 count 1을 돌려줍니다 → ‘부순 개수’ 같은 변수를 1씩 늘려 누적하는 방식으로 씁니다.
  • 블록 놓기의 방법(method)은 플레이어가 놓기(entity)·명령으로 놓기 두 가지인데, 영상 테스트에서 명령으로 놓은 블록은 감지가 잘 안 됐습니다.
  • 아이템 획득 방법: 줍기(picked up)·조합(crafted)·상자에서 꺼내기(taken from chest)·구매(bought) 등. 맨손으로 부수면 도구 이름이 ‘알 수 없는 블록’으로 나옵니다.
  • 아이템 사용 방법(item use method): use tool(삽으로 잔디를 우클릭해 길 만들기처럼 아이템 고유 기능) · equip armor · 공격하기 등. 영상에서도 더 테스트가 필요하다고 했습니다.
  • 그 밖의 블록: on item equipped to slot with enchantments(착용·인챈트) · on item interacted with count 메서드 · on camera used isSelfie · 몹이 스폰될 때.
  • 채팅 메시지 이벤트는 다른 플레이어가 공개 채팅에 쓴 글만으로 코드를 실행할 수 있어 멀티플레이 수업에 특히 유용합니다(기존 ‘다른 플레이어가 …라고 하면’은 /tell 로 보내야 실행됨 → ‘NPC와 AI 확장’ 페이지의 NPC 슬라이드 참고).
EVENTS 범주의 블록·게임플레이·아이템 이벤트 (00:26)
EVENTS 범주의 블록·게임플레이·아이템 이벤트 (00:26)

활동 가이드: 이럴 땐 이렇게

  1. 에이전트를 없애고 싶어요: /kill @c 로 없앨 수 있지만, 코드작성기를 열면 다시 나타남 → 플레이어 아래 100칸으로 보내기 /tp @c ~0 ~-100 ~0
  2. 코드작성기가 늦게 열려요: 처음 실행할 때는 오래 걸릴 수 있음 / 강제 닫기 후 다시 열기 / 그래도 안 되면 초기화 또는 편집기 다시 선택
  3. 코드가 실행되지 않아요: 운영자 권한·치트가 켜져 있나? / ▶ 시작 버튼을 눌러 게임으로 돌아왔나? / 채팅명령어를 정확히 입력했나? 같은 이벤트가 겹치지 않나? / 명령을 연달아 입력하지 말고 천천히
  4. 평면 맵에서 일부 명령만 안 돼요: 만들 범위가 지면 4칸 아래 기반암에 걸렸는지 확인 → 조금 위로 올라가서 실행
에이전트
에이전트

평면 맵 주의: 기반암에 걸리면 실행 안 됨

채팅명령어 블록(화면 기준) 기반암 아래·걸칠 때
1 · 3 에이전트를 플레이어에게 텔레포트 · 다음 좌표로 텔레포트 ~0 ~-10 ~0 됨(에이전트는 팔다리를 휘젓는 모습)
2 블록 채우기 시작 ~0 ~0 ~0 끝 ~10 ~-10 ~10 교체하기 범위가 걸리면 아예 안 만들어짐
4 빌더 텔레포트 ~0 ~0 ~0 → 빌더 위치마크 생성 → 빌더 이동 방향 down 거리 10 → 빌더 위치마크부터 이동한 경로에 블록 놓기 경로가 걸리면 안 됨
5 원 모양 만들기 중심 ~0 ~0 ~0 반지름 10 방향 x 좌표(동쪽/서쪽) 교체하기 기반암 위쪽만 만들어짐
- 평면 맵은 지면 4칸쯤 아래에 기반암이 있고 그 아래는 빈 공간 → 코드가 안 되면 **범위가 기반암에 걸렸는지** 먼저 확인
① 실험한 채팅명령어 1~6 — 예전 코드 커넥션 화면 (02:17)
① 실험한 채팅명령어 1~6 — 예전 코드 커넥션 화면 (02:17)
② 기반암 아래로는 만들어지지 않은 원 (06:51)
② 기반암 아래로는 만들어지지 않은 원 (06:51)
교사용 메모 · 예전 버전(코드 커넥션)에서 코드가 안 될 때
  • 예전에는 코드 커넥션(Code Connection) 프로그램을 따로 열어 연결했습니다. 지금은 C키로 코드작성기를 엽니다(‘코드작성기 열기’ 페이지).
  • 연결: 채팅창에 /code (“코드 커넥션 실행 및 연결을 시도합니다”). 더 예전 베타에서는 /connect 를 입력하고 MakeCode·Scratch·Tynker 중에서 골랐습니다.
  • 안 될 때 4가지: ① 메이크코드 창을 닫았다(창을 열어 둔 채 Alt+Tab으로 게임에 가기) ② 실행 버튼이 초록 ▶(정지 상태) — 빨간 ■ 모양일 때가 실행 중 ③ 명령을 한꺼번에 많이 입력했다(기다렸다가 천천히) ④ 월드를 끄면 연결도 끊김 → 새 월드에서 다시 연결.
  • 베타 시절 영문 블록 ‘on chat command’는 스크래치의 ‘시작 버튼을 클릭했을 때’와 같은 역할이라고 소개했습니다(예: on chat command "chicken" → 100번 반복 → 머리 위 ~0 ~10 ~0 에 닭 소환).
① 채팅창에 /code 입력 (01:09)
① 채팅창에 /code 입력 (01:09)
② 빨간 ■ = 코드 실행 중, 초록 ▶ = 실행 중 아님 (03:15)
② 빨간 ■ = 코드 실행 중, 초록 ▶ = 실행 중 아님 (03:15)
③ 베타 시절 on chat command 블록 (03:54)
③ 베타 시절 on chat command 블록 (03:54)

관련 영상

관련 공식 자료

함께 보기

출처

  • 스티브코딩 유튜브 「마인크래프트의 거의 모든 이벤트를 감지! (예제 코드 제공)」(2025-11-05)
  • 유튜브 「마인크래프트 코딩 튜토리얼 4편 / 가장 많이 쓰는 기본 명령! 플레이어 명령 카테코리」(2019-08-10)