마인크래프트 /give /summon /effect 명령어 만드는 법

/give 문법은 Java 1.20.5부터 진짜로 바뀌었다. 예전에는 잘 돌아가던 NBT 명령어가 지금은 구문 오류를 뱉는다. 옛날 영상에서 명령어를 그대로 복사했는데 안 돌아간다면, 이게 원인이다.
같은 검, 세 가지 문법
네더라이트 검, 이름은 "공허의 칼날"(진보라색), 파괴 불가, 날카로움 V.
Bedrock
/give @p minecraft:netherite_sword 1
Bedrock은 /give에서 커스텀 이름, 인챈트, NBT를 직접 받지 않는다. 명령어 책이나 별도의 NBT 에디터를 거쳐야 한다.
Java 1.20.5 이후 (컴포넌트)
/give @p minecraft:netherite_sword[custom_name='{"text":"공허의 칼날","color":"dark_purple","italic":false}',unbreakable={},enchantments={levels:{"minecraft:sharpness":5}}] 1
구버전 Java (NBT, 1.20.4까지)
/give @p minecraft:netherite_sword{display:{Name:'{"text":"공허의 칼날","color":"dark_purple","italic":false}'},Unbreakable:1b,Enchantments:[{id:"minecraft:sharpness",lvl:5s}]} 1
단순히 대괄호를 중괄호로 바꾼 게 아니다. unbreakable={}와 Unbreakable:1b는 아예 다른 개념이다(컴포넌트 대 NBT 태그). 하나가 다른 하나 자리에 들어갈 수 없다.
장비를 갖춘 /summon
금 투구를 쓰고, 빛나고, AI가 없는(걷지도 공격하지도 않는) 스켈레톤을 소환한다.
/summon minecraft:skeleton ~ ~ ~ {NoAI:1b,Glowing:1b,ArmorItems:[{},{},{},{id:"minecraft:golden_helmet",Count:1b}],HandItems:[{},{}]}
ArmorItems는 항상 발-다리-몸통-머리 순서다. 이 순서를 뒤집는 게 손으로 짤 때 가장 흔한 실수다.
/effect와 amplifier 함정
거의 모두가 한 번은 걸리는 부분이다. 게임 화면에 뜨는 "레벨"(예: 신속 II)은 명령어에 넣는 숫자와 같지 않다. 명령어는 amplifier를 쓰는데, 이건 레벨에서 1을 뺀 값이다.
| 게임 내 레벨 | 명령어 amplifier | |---|---| | I | 0 | | II | 1 | | III | 2 | | V | 4 |
60초 동안 신속 II를 주는 명령어.
/effect give @p minecraft:speed 60 1 false
레벨 II를 기대하고 2를 넣으면, 모르는 사이에 레벨 III이 걸린다.
생성기 사용법
- 탭을 고른다 — give, summon, effect.
- 버전을 고른다 — Bedrock, 최신 Java, 구버전 Java. 이 선택이 문법 전체를 결정한다. 그냥 취향 문제가 아니다.
- 항목을 채운다 — 아이템, 이름, 인챈트, 장비. 완성된 명령어가 선택한 버전에 맞는 형식 그대로 복사하기 좋게 나온다.
- 게임 채팅창이나 명령 블록에 붙여넣는다.
명령어 생성기가 위 세 문법을 자동으로 만들어준다. 중괄호와 대괄호, 따옴표가 어디 들어가는지 외울 필요가 없다.
자주 묻는 질문
튜토리얼에서 명령어를 그대로 복사했는데 /give에서 "Incorrect argument" 오류가 난다. 대부분 버전이 안 맞는 문법 때문이다. 중괄호 {} NBT 명령어를 Java 1.20.5 이상에서 돌리면, 게임은 대괄호 [] 컴포넌트를 기대하고 있어서 걸린다.
신속 레벨 2를 넣었는데 예상보다 강하게 걸렸다. amplifier는 게임 내 레벨에서 1을 뺀 값이다. 명령어에서 "레벨 2"는 신속 III이지 II가 아니다.
소환한 몹이 설정한 장비 없이 나왔다. ArmorItems 순서를 확인해라. 항상 발-다리-몸통-머리다. 아이템 하나가 순서에서 어긋나면 엉뚱한 부위에 장착되거나 아예 장착이 안 된다.
give와 summon을 명령어 하나로 합칠 수 있나? 직접적으로는 안 된다. 둘은 별개 명령어다. 몹이 특정 아이템을 손에 쥔 채로 나오게 하려면, 그 아이템은 /give가 아니라 /summon 안의 HandItems로 들어가야 한다.
플러그인이 있는 서버에서도 똑같이 작동하나? 바닐라 문법이면 그렇다. Bukkit/Spigot이나 Paper 서버는 권한 설정으로 커스텀 NBT를 막아두는 경우가 있다. 문법이 맞는데도 명령어가 안 먹는다면 명령어 문제가 아니라 서버 쪽 제한일 가능성이 크다.