1. 개요
<colbgcolor=#47A0FF> scoreboard | |
scoreboard <objectives|players> ... | |
<colcolor=#fff> 역사 | JE | [ruby(1.5,ruby=추가)] / [ruby(1.13, ruby=변경)] / [ruby(1.20.3, ruby=변경)] BE | [ruby(Bata 1.7.0.2,ruby=추가)] EE | ? |
기능 | 스코어보드를 관리한다. |
관련 명령어 | trigger | team |
단축 명령어 | - |
기본값 | - |
<rowcolor=#fff> 싱글 사용 | 권한 |
가능 | 2(JE), 1(BE) |
scoreboard players ...
문법은 스코어보드의 점수를 조작할 때 사용하는 명령어이며, scoreboard objectives ...
문법은 점수가 아닌 스코어보드 자체를 조작할 때 사용하는 명령어이다. execute와 함께 명령어의 양대산맥이다.[1]2. JE
문법은 크게 두가지로 나눈다. 점수는유형이므로 -2,147,483,648 ~ 2,147,483,647 값만 사용할 수 있다.
2.1. objectives(목표)
모든 문법은/scoreboard objectives ...
로 시작한다.... add <목표> <기준> [보이는 목표(JSON)]
<목표>
를<기준>
에 따라 추가한다.<기준>
에 대한 설명은 기준 문단에 따로 설명한다.... list
- 생성된 모든 스코어보드를 채팅창에 표시한다.
... modify <목표> ...
... <displayautoupdate> <값>
- 점수가 업데이트될 때마다 표시 이름이 자동으로 업데이트되는지 여부. 기본값은
false
이다. ... <displayname> <JSON>
- 보이는 목표를 설정한다. raw JSON 형식으로 작성한다.
... <numberformat> [blank|fixed|styled]
- 빨간색 숫자의 표시를 결정한다.
[blank|fixed|styled]
을 생략하면styled {"color":"red"}
로 지정한다. [blank]
- 모든 숫자를 숨긴다.
[fixed] <JSON>
- 모든 숫자를 고정한다. raw JSON 형식으로 작성한다.
[styled] <JSON>
- 모든 숫자를 스타일에 따라 작성한다. text JSON 형식으로 작성한다.
... <rendertype> <hearts|integer>
... setdisplay list <이름>
으로 설정할 경우 상태가 변한다. 그렇지 않을 경우 아무 일도 일어나지 않는다.hearts
로 할 경우 플레이어 리스트에 하트가 보이게 하고,integer
로 할 경우 숫자로 보여지게 한다.... remove <목표>
<목표>
스코어보드를 삭제한다. 삭제하려는 스코어보드가 있어야 한다.... setdisplay <슬롯> [목표]
[목표]
를 해당<슬롯>
에 보이게 한다.[목표]
를 비워두면 슬롯을 숨기게 된다.
2.1.1. 기준
- dummy
- 명령어로만 변경할 수 있다.
- trigger
- 명령어와
trigger
명령어로만 변경할 수 있다. - air
- 모든 플레이어의 숨을 참고 있는 시간(
Air
)을 반영한다. - armor
- 모든 플레이어의 방어력 수치를 반영한다.
- deathCount
- 플레이어가 사망할 때마다 1씩 증가한다.
- food
- 모든 플레이어의 허기 수치(
foodLevel
)를 반영한다. - health
- 모든 플레이어의 체력(
Health
)과 흡수(AbsorptionAmount
)를 더해 반영한다. - killedByTeam.<색>
- 같은 팀에게 살해당했을 때 증가한다. 즉 팀킬당한 횟수이다.
- level
- 모든 플레이어의 레벨 수치(
XpLevel
)를 반영한다. - minecraft.<기준>:minecraft.<하위 기준>
- <기준>
- broken:
<하위 기준>
아이템이 파괴될 때마다 값이 증가한다.<하위 기준>
아이템은 모든 아이템에 사용할 수 있으나 실질적으로 내구도가 있는 모든 아이템만 가능하다. - crafted:
<하위 기준>
아이템이 제작, 재련, 주민 거래로 얻을 때마다 값이 증가한다. - custom:
<하위 기준>
은 통계에 있는 어떠한 행동에 따라 값이 증가한다. - dropped:
<하위 기준>
아이템이 버릴 때마다 값이 증가한다. - killed:
<하위 기준>
개체가 죽일 때마다 값이 증가한다. - killed_by:
<하위 기준>
개체에 의해 사망할 때마다 값이 증가한다. - mined:
<하위 기준>
블록을 파괴될 때마다 값이 증가한다. 크리에이티브 모드인 플레이어는 이 값이 절대로 증가하지 않는다. - picked_up:
<하위 기준>
아이템을 주울 때마다 값이 증가한다. - used:
<하위 기준>
아이템이 사용될 때마다 값이 증가한다. - playerKillCount
- 플레이어가 다른 플레이어를 처치할 때마다 값이 증가한다.
- teamkill.<색>
- 각각의 색을 가진 팀원이 다른 팀원을 죽이면 값이 증가한다.
- xp
- 플레이어가 마지막 사망 이후 총 획득한 경험치(즉, 사망할 때 나오는 점수)를 반영한다.
2.1.2. 슬롯
마인크래프트 화면 상에<목표>
을 표시할 곳(슬롯)은 3곳이 있다.- below_name
- 플레이어 위에 있는 이름 밑에 점수가 표시된다. 플레이어가 10칸 너머에 있거나, 은신(웅크리기)할 시 보이지 않는다.
- list
- Tab을 누르면 나오는 리스트. 플레이어 이름 오른쪽에 노란 글씨로 숫자가 표시 된다.
- sidebar
- 화면 오른쪽에 표시된다. 플레이어가 오프라인이라도 표시된다.
- sidebar.team.<색>
- sidebar와 같지만 색깔 별로 정해진 팀을 표시한다. 예를 들어
sidebar.team.red
라 쓰면 red 팀에 소속된 플레이어들의 점수가 표시된다.
2.2. players(플레이어)
모든 문법은/scoreboard players ...
로 시작한다.... get <대상> <목표>
<목표>
에 있는<대상>
의 점수를 확인한다.... add <대상> <목표> <수>
<목표>
에 있는<대상>
의 점수를<수>
만큼 증가시킨다.... set <대상> <목표> <수>
<목표>
에 있는<대상>
의 점수를<수>
로 설정한다.... remove <대상> <목표> <수>
<목표>
에 있는<대상>
의 점수를<수>
만큼 감소시킨다.... enable <대상> <기준이_trigger로_설정된_목표>
<대상>
이trigger
명령을 통해 점수를 수정할 수 있도록 한번 허락한다.... list [대상]
- 스코어보드에 의해 영향을 받는 개체를 모두 표시한다.
[대상]
을 쓰면 특정[대상]
의 점수를 확인할 수 있다. ... reset <대상> [목표]
<대상>
의 모든 점수를 삭제한다.[목표]
를 쓰면 그[목표]
의 점수만 삭제한다. 0으로 만드는 것이 아니다.... operation <대상이름> <대상목표> <연산> <선택자> <목표>
<목표>
에 있는<선택자>
의 점수를 이용해서,<대상목표>
에 있는<대상이름>
의 점수에 대해<연산>
을 실행시킨다.<연산>
은 아래와 같다.- "+=": 선택자의 점수를 대상의 점수에 더한다.
- "-=": 뺀다.
- "*=": 곱한다.
- "/=": 나눈다. 나머지는 버린다.
- "%=": 나눗셈 결과의 나머지를 대상의 점수로 한다.
- "=": 대상의 점수를 선택자의 점수와 같게 한다.
- "<": 만약 선택자의 점수가 대상보다 작으면, 대상의 점수를 선택자 점수로 만든다.
- ">": 만약 선택자의 점수가 대상보다 크면, 대상의 점수를 선택자 점수로 만든다.
- "><": 대상과 선택자의 점수를 바꾼다.
... display <name|numberformat> ...
... name <대상> <목표> [이름]
<목표>
에 있는<대상>
의 이름을[이름]
으로 설정한다. JSON 형식으로 작성한다.[이름]
을 비워두면 되돌린다.... numberformat <대상> <목표> [blank|fixed|styled] ...
<목표>
에 있는<대상>
의 숫자 표시를 수정한다.[blank|fixed|styled]
을 생략하면/scoreboard objectives modify <목표> numberformat
에 지정된 값으로 되돌린다.[blank]
<대상>
의 숫자를 숨긴다.[fixed] <JSON>
<대상>
의 숫자를 고정한다. raw JSON 형식으로 작성한다.[styled] <JSON>
<대상>
의 숫자를 스타일에 따라 작성한다. text JSON 형식으로 작성한다.
2.3. 예시
2.3.1. 체력 표시
플레이어의 이름 밑에 체력을 표시한다. 멀티 플레이 시 상대방 체력을 확인할 수 있게 만들 수 있으며,[2] 전투 서버라면 팀끼리만 보이고 적은 보이지 않게 추가적으로 설정할 수도 있다./scoreboard objectives add <이름> health
/scoreboard objectives setdisplay below_name <이름>
2.3.2. 살인 횟수
호전적인 플레이어를 시스템적으로 가려낼 수 있다. 플레이어 외의 다른 동물들을 기준으로 하면 얼마나 사냥을 열심히 했는지 지표로 사용할 수 있다. 아래 명령어는 탭(Tab) 키를 눌렀을 때 나오는 리스트에 숫자가 표시되게 하였으나, 기준만 만들고 나서 필요할 때만 불러올 수도 있다.[3] 아예 리스트가 번갈아 나오게 할 수도 있다./scoreboard objectives add <이름> playerKillCount
/scoreboard objectives setdisplay list <이름>
모든 플레이어의 수치를 초기화할 시
/scoreboard players reset @a
[4] <이름>
[5]2.3.3. 사망 횟수
사망 횟수를 사용해 죽을 시 관전자 모드가 되게 하거나 죽은 횟수를 볼 수 있다./scoreboard objectives add <이름> deathCount
관전자 모드로 변경할 시:
/gamemode spectator @a[scores={<이름>=1}]
모든 플레이어의 수치를 초기화할 시
/scoreboard players reset @a <이름>
2.3.4. 당근 낚싯대로 텔레포트
당근 낚싯대를 우클릭했을 시 점수가 올라간다. 이것을 이용해서 지정된 장소로 텔레포트할 수 있다./scoreboard objectives add <이름> minecraft.used:minecraft.carrot_on_a_stick
/execute as @a[scores={<이름>=1..}] at @s run tp @s <좌표>
/scoreboard players set @a[scores={<이름>=1..}] <이름> 0
[6]좌표에 ^ ^ ^15를 넣을 시 자신이 바라보는 방향으로 15칸 이동해 먼 거리를 편하게 이동할 수 있다.
3. BE
3.1. objectives(목표)
모든 문법은/scoreboard objectives ...
로 시작한다.... add <목표> dummy [보이는 목표(JSON)]
<목표>
를 추가한다.... remove <목표>
<목표>
스코어보드를 삭제한다. 삭제하려는 스코어보드가 있어야 한다.... setdisplay <list|sidebar> [목표] [ascending|descending]
<리스트|사이드바>로 표시하고, [오름차순|내림차순]으로 [목표]를 표시한다.
... setdisplay belowname [목표]
3.2. players(플레이어)
모든 문법은/scoreboard players ...
로 시작한다.... add <대상> <목표> <수>
<목표>
에 있는<대상>
의 점수를<수>
만큼 증가시킨다.... set <대상> <목표> <수>
<목표>
에 있는<대상>
의 점수를<수>
로 설정한다.... remove <대상> <목표> <수>
<목표>
에 있는<대상>
의 점수를<수>
만큼 감소시킨다.... random <대상> <목표> <최소값> <최대값>
<목표>
에 있는<대상>
의 점수를<최소값>
과<최대값>
(둘 다 포함) 사이의 임의의 숫자로 설정한다.... list [대상]
- 스코어보드에 의해 영향을 받는 개체를 모두 표시한다.
[대상]
을 쓰면 특정[대상]
의 점수를 확인할 수 있다.
3.3. team(팀)
3.4. 예시
3.4.1. 임의의 좌표에 다이아몬드 광석 배치하기
/scoreboard players random
을 이용해 갑옷 거치대를 임의의 좌표로 이동시킨 다음, 해당 위치에 다이아몬드 광석을 배치한다. 단, BE에서는 NBT 태그를 다룰 수 없으므로, 갑옷 거치대를 이동시키는데 약간의 노가다가 필요하다.먼저
random
의 결과를 저장할 목표 하나를 생성한다. /scoreboard objectives add r dummy
그 다음, 갑옷 거치대를 원하는 위치에 소환한 후
random
을 실행하고 그 결과에 따라 갑옷 거치대를 텔레포트시키는 과정을 반복한다. /summon armor_stand <spawnPos: x y z>
/scoreboard players @e[type=armor_stand] random r 0 1
/execute as @e[type=armor_stand, scores={r=1}] at @s run tp ~1 ~ ~
/scoreboard players @e[type=armor_stand] random r 0 1
/execute as @e[type=armor_stand, scores={r=1}] at @s run tp ~2 ~ ~
/scoreboard players @e[type=armor_stand] random r 0 1
/execute as @e[type=armor_stand, scores={r=1}] at @s run tp ~4 ~ ~
/scoreboard players @e[type=armor_stand] random r 0 1
/execute as @e[type=armor_stand, scores={r=1}] at @s run tp ~8 ~ ~
/scoreboard players @e[type=armor_stand] random r 0 1
/execute as @e[type=armor_stand, scores={r=1}] at @s run tp ~ ~1 ~
/scoreboard players @e[type=armor_stand] random r 0 1
/execute as @e[type=armor_stand, scores={r=1}] at @s run tp ~ ~2 ~
/scoreboard players @e[type=armor_stand] random r 0 1
/execute as @e[type=armor_stand, scores={r=1}] at @s run tp ~ ~4 ~
/scoreboard players @e[type=armor_stand] random r 0 1
/execute as @e[type=armor_stand, scores={r=1}] at @s run tp ~ ~8 ~
/scoreboard players @e[type=armor_stand] random r 0 1
/execute as @e[type=armor_stand, scores={r=1}] at @s run tp ~ ~ ~1
/scoreboard players @e[type=armor_stand] random r 0 1
/execute as @e[type=armor_stand, scores={r=1}] at @s run tp ~ ~ ~2
/scoreboard players @e[type=armor_stand] random r 0 1
/execute as @e[type=armor_stand, scores={r=1}] at @s run tp ~ ~ ~4
/scoreboard players @e[type=armor_stand] random r 0 1
/execute as @e[type=armor_stand, scores={r=1}] at @s run tp ~ ~ ~8
다이아몬드 광석을 놓을 범위에 따라
/scoreboard players random
과 /execute tp
를 반복 실행한다. 한 번 실행할 때마다 범위가 2배가 된다.마지막으로 해당 위치에 다이아몬드 광석을 놓고 갑옷 거치대를 없앤다.
/fill
의 [replace]
옵션을 이용해 심층암 다이아몬드 광석도 생성하거나, /structure
의 [integrity]
옵션을 이용해 다이아몬드 원석의 개수를 조절할 수 있다./execute as @e[type=armor_stand] at @s run fill ~ ~ ~ ~1 ~1 ~1 diamond_ore
/kill @e[type=armor_stand]
[1] 과장이 아니라, scoreboard 하나 만으로도 점수, 아이템 수, 죽은 횟수, 타이머 등 유동수치와 관련된 모든 것들을 구현할 수 있다.[2] 은신(웅크리기, 기본 키는 Shift 키) 시 숨겨진다.[3] 혹은 tellraw, title 명령어와 혼합하여 더 깔끔하게 만들 수도 있지만 그건 커맨드에 숙련되지 않고서는 힘들다.[4] 특정 플레이어 수치만 초기화시키려면 플레이어 닉네임을 쓰면 된다.[5] 단순히 0으로만 만들 것이라면 /scoreboard players set @a <이름> 0 으로 해도 된다.[6] 연쇄, 무조건적. 이 커맨드가 빠질 시 재사용이 불가하다.