최근 수정 시각 : 2024-11-25 15:59:21

마인크래프트/명령어/scoreboard

파일:상위 문서 아이콘.svg   상위 문서: 마인크래프트/명령어
1. 개요2. JE
2.1. objectives(목표)
2.1.1. 기준2.1.2. 슬롯
2.2. players(플레이어)2.3. 예시
2.3.1. 체력 표시2.3.2. 살인 횟수2.3.3. 사망 횟수2.3.4. 당근 낚싯대로 텔레포트
3. BE
3.1. objectives(목표)3.2. players(플레이어)3.3. team(팀)3.4. 예시
3.4.1. 임의의 좌표에 다이아몬드 광석 배치하기

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

문법은 크게 두가지로 나눈다. 점수는
Int
유형이므로 -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 <목표>
    • 존재하는 스코어보드 중에서 <목표> 스코어보드를 삭제한다.[2] 만약 setdisplay를 통해 화면에 스코어보드가 보이는 상태였을 경우, 해당 스코어보드는 더 이상 보이지 않게 된다.[3]
  • ... setdisplay <슬롯> [목표]
    • [목표]를 해당 <슬롯>에 보이게 한다. [목표]를 비워두면 슬롯을 숨기게 된다.

2.1.1. 기준

  • dummy
    • 명령어로만 변경할 수 있다.
  • trigger
    • 명령어와 trigger 명령어로만 변경할 수 있다.
  • air
  • armor
    • 모든 플레이어의 방어력 수치를 반영한다.
  • deathCount
    • 플레이어가 사망할 때마다 1씩 증가한다.
  • food
  • health
  • killedByTeam.<색>
    • 같은 팀에게 살해당했을 때 증가한다. 즉 팀킬당한 횟수이다.
  • level
  • 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. 체력 표시

플레이어의 이름 밑에 체력을 표시한다. 멀티 플레이 시 상대방 체력을 확인할 수 있게 만들 수 있으며,[4] 전투 서버라면 팀끼리만 보이고 적은 보이지 않게 추가적으로 설정할 수도 있다.

/scoreboard objectives add <이름> health
/scoreboard objectives setdisplay below_name <이름>

2.3.2. 살인 횟수

호전적인 플레이어를 시스템적으로 가려낼 수 있다. 플레이어 외의 다른 동물들을 기준으로 하면 얼마나 사냥을 열심히 했는지 지표로 사용할 수 있다. 아래 명령어는 탭(Tab) 키를 눌렀을 때 나오는 리스트에 숫자가 표시되게 하였으나, 기준만 만들고 나서 필요할 때만 불러올 수도 있다.[5] 아예 리스트가 번갈아 나오게 할 수도 있다.

/scoreboard objectives add <이름> playerKillCount
/scoreboard objectives setdisplay list <이름>

모든 플레이어의 수치를 초기화할 시
/scoreboard players reset @a[6] <이름> [7]

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[8]

좌표에 ^ ^ ^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] 해당 스코어보드에 있었던 모든 점수는 다 사라지므로 주의. [3] 해당 스코어보드의 목록이 비어 있게 보이는 게 아니라, 아예 해당 스코어보드 자체가 보이지 않게 된다. [4] 은신(웅크리기, 기본 키는 Shift 키) 시 숨겨진다. [5] 혹은 tellraw, title 명령어와 혼합하여 더 깔끔하게 만들 수도 있지만 그건 커맨드에 숙련되지 않고서는 힘들다. [6] 특정 플레이어 수치만 초기화시키려면 플레이어 닉네임을 쓰면 된다. [7] 단순히 0으로만 만들 것이라면 /scoreboard players set @a <이름> 0 으로 해도 된다. [8] 연쇄, 무조건적. 이 커맨드가 빠질 시 재사용이 불가하다.