You have seen them on other servers — floating kill counters in the sidebar, race timers above player heads, PvP leaderboards that update in real time. Maybe you assumed those required expensive plugins or datapack wizardry. They do not.
All of that comes from one built-in Minecraft feature: the scoreboard system. It has been in the game since Java Edition 1.5, and it does far more than most server admins realize. With nothing but vanilla commands, you can track player kills, deaths, items crafted, blocks mined, and custom values of your own design. You can display them on the sidebar, under player names, or in the tab list. And you can let players interact with scores themselves through triggers.
This guide covers the entire scoreboard system — from basic objectives to practical builds like death counters, PvP leaderboards, and timed parkour challenges.
The Three Core Scoreboard Commands
Before you build anything, you need to understand the command structure. Every scoreboard operation uses one of these three commands:
| Command | Purpose |
|---|---|
/scoreboard objectives | Create, remove, and configure objectives (the things you are tracking) |
/scoreboard players | View and modify individual player scores |
/scoreboard teams | Create teams, assign players, and configure team settings |
An objective is a named stat container. "Kills" could be an objective. "DeathCount" could be another. Each objective has a criteria that determines how scores update — automatically from gameplay events, or manually from commands.
A score is a player's current value in an objective. Player "Steve" might have a score of 7 in the "Kills" objective.
That is the entire conceptual model. Everything else builds on these pieces.
Creating Objectives
To create an objective, use:
/scoreboard objectives add <name> <criteria> [displayName]
The name is the internal identifier (no spaces, used in commands). The displayName is what players see in the UI (can include spaces, colors, formatting). If you omit displayName, the objective uses the name.
/scoreboard objectives add deaths deathCount "Deaths"
This creates an objective called deaths that automatically increments whenever a player dies. The display name shows as "Deaths" in the sidebar.
To remove an objective:
/scoreboard objectives remove deaths
To list all objectives:
/scoreboard objectives list
Built-in Criteria (What Minecraft Tracks Automatically)
Here is where scoreboards become powerful. Minecraft can automatically track dozens of player actions without any manual updating. The server watches for these events and increments scores in real time.
Combat Criteria
| Criteria | What It Tracks |
|---|---|
deathCount | How many times the player has died |
playerKillCount | Players killed |
totalKillCount | All mobs killed (including players) |
health | Current health (heart units x2, so 20 = full health) |
xp | Current XP level |
level | Same as xp (alias) |
food | Current food level (20 = full hunger bar) |
air | Air supply while underwater |
armor | Armor points |
Stat Criteria
The minecraft. criteria family tracks nearly everything from the statistics screen. The format is:
minecraft.<type>:<stat>
Common examples:
| Criteria | What It Tracks |
|---|---|
minecraft.mined:minecraft.diamond_ore | Diamond ore blocks mined |
minecraft.crafted:minecraft.diamond_sword | Diamond swords crafted |
minecraft.used:minecraft.fishing_rod | Fishing rod uses |
minecraft.broken:minecraft.diamond_pickaxe | Diamond picks broken |
minecraft.killed:minecraft.zombie | Zombies killed |
minecraft.killed_by:minecraft.creeper | Deaths to creepers |
minecraft.picked_up:minecraft.arrow | Arrows picked up |
minecraft.dropped:minecraft.diamond | Diamonds dropped |
minecraft.custom:minecraft.jump | Total jumps |
minecraft.custom:minecraft.walk_one_cm | Distance walked (in cm) |
minecraft.custom:minecraft.play_time | Total ticks played |
The full list runs into hundreds of trackable stats — essentially anything on the Statistics screen can become a scoreboard objective. For a comprehensive list, see the server console commands reference or check the Minecraft Wiki.
Dummy Criteria
The dummy criteria creates a score that never updates automatically. You control it entirely through commands. This is what you use for custom game mechanics.
/scoreboard objectives add points dummy "Points"
/scoreboard players set Steve points 100
Nobody but commands (or datapacks) can change a dummy score. Perfect for tracking quest progress, custom currency, or manual awards.
Modifying Player Scores
The /scoreboard players subcommands let you read and write individual scores:
/scoreboard players set <player> <objective> <value>
/scoreboard players add <player> <objective> <value>
/scoreboard players remove <player> <objective> <value>
/scoreboard players reset <player> [objective]
/scoreboard players get <player> <objective>
/scoreboard players list [player]
Examples:
/scoreboard players set Steve kills 5
/scoreboard players add Steve kills 1
/scoreboard players remove Steve kills 2
/scoreboard players reset Steve kills
The reset command clears a score entirely — the player will no longer appear on that scoreboard. This differs from setting the score to 0, which still displays the player with a 0.
You can also use selectors instead of player names:
/scoreboard players add @a deaths 0
This does not add 0 — it initializes the objective for all players so they appear on the scoreboard even if they have not died yet.
Display Slots
Objectives exist silently until you assign them to a display slot. There are three:
| Slot | Where It Appears |
|---|---|
sidebar | Right side of the screen, always visible |
list | Tab player list, next to each name |
belowName | Under each player's nameplate in the world |
To set a display slot:
/scoreboard objectives setdisplay sidebar deaths
/scoreboard objectives setdisplay belowName health
/scoreboard objectives setdisplay list kills
To clear a display slot:
/scoreboard objectives setdisplay sidebar
(Leave the objective blank to clear.)
Only one objective can occupy each slot at a time. Assigning a new objective to a slot replaces the previous one.
Team-Colored Sidebars
For team-based games, Minecraft provides 16 additional sidebar slots — one for each color. Players assigned to a team of that color see that specific sidebar.
/scoreboard objectives setdisplay sidebar.team.red redTeamStats
/scoreboard objectives setdisplay sidebar.team.blue blueTeamStats
This requires setting up teams first (covered below).
Teams
Teams let you group players for shared settings, name colors, and friendly fire rules. They also enable those team-colored sidebars.
Creating Teams
/team add <name> [displayName]
/team remove <name>
/team list [team]
Example:
/team add red "Red Team"
/team add blue "Blue Team"
Adding Players
/team join red Steve
/team join blue Alex
/team leave Steve
Or use selectors:
/team join red @a[distance=..5]
Team Options
Teams have several configurable settings:
| Option | Values | Effect |
|---|---|---|
friendlyFire | true/false | Can teammates damage each other |
seeFriendlyInvisibles | true/false | Can teammates see each other when invisible |
nametagVisibility | always/hideForOtherTeams/hideForOwnTeam/never | Who sees player nametags |
deathMessageVisibility | always/hideForOtherTeams/hideForOwnTeam/never | Who sees death messages |
collisionRule | always/pushOtherTeams/pushOwnTeam/never | Entity collision behavior |
color | Any Minecraft color | Team name color |
prefix / suffix | JSON text | Text before/after player names |
/team modify red color red
/team modify red friendlyFire false
/team modify red prefix {"text":"[RED] ","color":"red"}
Teams combined with scoreboards enable full minigame infrastructure — PvP arenas, capture-the-flag, team deathmatch — all without plugins.
Trigger Objectives
Regular objectives are read-only for players. Only ops and command blocks can modify them. Triggers change that.
A trigger objective uses the trigger criteria:
/scoreboard objectives add vote trigger "Vote"
Players can modify their own trigger score using:
/trigger vote set 1
/trigger vote add 1
But there is a catch: triggers are disabled by default. You must enable a trigger for each player before they can use it:
/scoreboard players enable Steve vote
Once enabled, the player can /trigger vote once. After triggering, it disables again — you must re-enable for repeated use.
Why Triggers Matter
Triggers let non-op players interact with command systems. Combine them with command blocks or datapacks and you can build:
- Voting systems (players vote for map changes)
- Shop menus (trigger different values for different purchases)
- Teleport requests (trigger to request a TP, command block reads the value)
- Ability activation (players trigger their special move)
For more complex trigger-based mechanics, consider pairing scoreboards with datapacks — they can watch for trigger changes and run logic every tick.
Practical Examples
Here are four real setups you can copy directly.
Death Counter (Sidebar)
Track deaths and display them prominently:
/scoreboard objectives add deaths deathCount "Deaths"
/scoreboard objectives setdisplay sidebar deaths
Done. Every player who dies appears on the sidebar with their death count.
PvP Kill Leaderboard
Track player kills and show the top killers:
/scoreboard objectives add pvpKills playerKillCount {"text":"PvP Kills","color":"gold"}
/scoreboard objectives setdisplay sidebar pvpKills
The sidebar automatically sorts by score, highest first. Your top killers are always visible.
Health Under Names
Show each player's current health below their nameplate:
/scoreboard objectives add hp health {"text":"HP","color":"red"}
/scoreboard objectives setdisplay belowName hp
Players now see each other's health at a glance — useful for PvP servers or hardcore survival.
Timed Parkour
For a parkour course with a timer, use the minecraft.custom:minecraft.play_time stat combined with manual control:
/scoreboard objectives add parkourTime dummy "Time"
/scoreboard objectives setdisplay sidebar parkourTime
At the start line (pressure plate triggering command block):
/scoreboard players set @p parkourTime 0
In a repeating command block (running every tick while player is in the course):
/scoreboard players add @a[tag=inParkour] parkourTime 1
At the finish line:
/tag @p remove inParkour
/tellraw @p [{"text":"Your time: "},{"score":{"name":"@p","objective":"parkourTime"}}]
This counts ticks (20 per second). Divide by 20 for seconds if you want cleaner display — or use a datapack to format the output.
Team Score Tracker
For a two-team minigame:
/team add red "Red Team"
/team add blue "Blue Team"
/team modify red color red
/team modify blue color blue
/scoreboard objectives add teamScore dummy "Score"
/scoreboard players set RedTeam teamScore 0
/scoreboard players set BlueTeam teamScore 0
/scoreboard objectives setdisplay sidebar teamScore
When red scores a point:
/scoreboard players add RedTeam teamScore 1
Note: "RedTeam" and "BlueTeam" here are fake player names — they do not need to be real players. Any string works as a scoreboard entry.
Combining Scoreboards with Permissions
On a server with multiple admins or staff, you probably want to restrict who can run scoreboard commands. Scoreboards themselves have no built-in permission system, but your permission plugin handles this.
With LuckPerms, you can grant or deny minecraft.command.scoreboard to specific groups. Default players cannot use /scoreboard commands at all — they can only view displays and use enabled triggers.
For more on structuring ranks and permissions, see the LuckPerms permissions guide.
Common Pitfalls
Objective names vs display names: The internal name cannot have spaces. The display name can. Do not confuse them in commands.
Score of 0 vs no score: Setting a player's score to 0 shows them on the leaderboard with 0. Resetting removes them entirely. Use whichever behavior fits your design.
Trigger re-enable: Triggers disable after one use. If you want players to trigger repeatedly, your command block chain must re-enable the trigger after reading it.
Display slot limits: Only one objective per slot. If your sidebar shows kills, it cannot simultaneously show deaths. Use multiple objectives with a datapack timer to cycle them, or just pick one.
Large objective names: Extremely long display names can clip in the sidebar. Keep them concise.
Quick Reference
| Task | Command |
|---|---|
| Create objective | /scoreboard objectives add <name> <criteria> [displayName] |
| Remove objective | /scoreboard objectives remove <name> |
| List objectives | /scoreboard objectives list |
| Set display | /scoreboard objectives setdisplay <slot> [objective] |
| Set score | /scoreboard players set <player> <objective> <value> |
| Add to score | /scoreboard players add <player> <objective> <value> |
| Reset score | /scoreboard players reset <player> [objective] |
| Create team | /team add <name> [displayName] |
| Join team | /team join <team> <player> |
| Team option | /team modify <team> <option> <value> |
| Enable trigger | /scoreboard players enable <player> <objective> |
| Use trigger | /trigger <objective> set/add <value> |
Common criteria: deathCount, playerKillCount, totalKillCount, health, dummy, trigger, minecraft.mined:<block>, minecraft.killed:<mob>, minecraft.custom:minecraft.play_time
Related Guides
-
Minecraft Server Console Commands Cheat Sheet — Every admin command organized by category, including scoreboard commands with additional examples.
-
How to Create Custom Items on Your Minecraft Server — Build custom weapons and gear using /give syntax — pairs well with scoreboard rewards.
-
How to Set Up Permissions on Your Minecraft Server — Control who can modify scoreboards and restrict commands to staff.
-
How to Install and Use Datapacks on Your Minecraft Server — Extend scoreboard mechanics with tick functions and custom logic.
-
Minecraft server.properties Explained — Every server setting you can configure, including enable-command-block for scoreboard automation.
-
How to Fix Minecraft Server Lag — If your scoreboard command blocks are causing tick lag, this guide covers entity and redstone optimization.
