From Minecraft Wiki
(Redirected from Command)
Jump to: navigation, search
Java Edition.pngMclogo.svgEducation Edition.svg

Commands are advanced features activated by typing certain strings of text.


In the client, commands are entered via the chat window, which is displayed by pressing the T key (default) or / key. Using the / key will also enter the forward slash that commands require as a prefix, so it is a useful shortcut. The and key can be used to view previously entered text, including all previously executed commands. Pressing Tab ↹ while entering commands cycles through possible commands or arguments, and can be used to auto-enter the coordinates of the block looked at before entering chat.

Commands may also be entered in a multiplayer server's console, but are not preceded by a / when entered this way. A server admin running commands in this way is often referred to as "ghosting".


The majority of commands are only available in the following situations:

  • In a multiplayer game, entered by an operator or command block.

Some player commands are also available in singleplayer even when cheats are not enabled.

Note: In singleplayer worlds where cheats were not enabled at creation, they can be enabled on a temporary basis by opening the current game session to LAN play ( Esc → "Open to LAN", then "Allow Cheats" button and "Start LAN World"). You do not actually need to be on a LAN or have others join. This is not permanent, but will allow the use of commands until you quit the world, and changes you make via commands (items spawned, etc.) will be saved with the world. You can do this each time you start playing the world again. Note that this will disable game pausing for the duration, so while open to LAN, you should get somewhere safe or reload your world before using the Game Menu. Remember that you can disable your LAN world by reloading the world.

Tilde and Caret notation[edit]

Many commands allow relative coordinates to be specified using tildes (~) or carets (^). A number following a tilde or caret specifies an offset from a certain origin rather than a coordinate. The origin depends on the command. For example, in /tp the offset is from the target's starting position. Other common offsets include from the position of the command's execution or from another coordinate specified by the command.

For the tilde, the offsets are in the directions of the world coordinate axes. For the caret, they are along axes originating in the center of the target's head and pointing to the left, forward, and upward, respectively, with respect to the head's tilt angle. For either, the sign of the offset specifies whether the offset is in the positive or negative direction along that axis. A single tilde or caret by itself is shorthand for ~0 or ^0, meaning no offset in that direction.

For example, /tp 0 64 0 will teleport the user to the coordinate (0, 64, 0), while /tp ~3 ~ ~-3 will teleport the user to a position +3 blocks in the "x" direction (i.e., east), keep their current height, and -3 blocks in the "z" direction (i.e., north) and /tp ^ ^ ^3 will teleport the user to a position +3 forwards in the direction the player is looking.

Usually absolute coordinates can be mixed with relative coordinates. For example, /tp ~ 64 ~ will keep the user's "x" and "z" coordinates the same, but teleport them to absolute height of 64. Similarly, /tp ^-5 ^ ^ will teleport the player 5 blocks to the right, based on the tilt of their head.

Target selectors in Java Edition[edit]

This section needs updating.
Description: Does not account for differences between Java 1.13 and Bedrock

In most commands where a player may be specified as an argument, it is possible to "target" one or more players satisfying certain conditions instead of specifying players by name. To target players by condition, choose a target selector variable and, optionally, one or more target selector arguments to modify the conditions to be satisfied.

For example, to change the game mode of all players on team Red to creative mode, instead of specifying them by name individually:

/gamemode creative @a[team=Red]

Target selector variables[edit]

Summary of target selector variables
Variable Function
@p nearest player
@r random player
@a all players
@e all entities
@s the entity executing the command
@c your agent
@v all agents

A target selector variable identifies the broad category of targets to select. There are five variables:

Targets the nearest player. When run by the console, the origin of selection will be at (0, 0, 0). If there are multiple nearest players, caused by them being precisely the same distance away, the player who most recently joined the server is selected.
Target selector arguments may be used to reduce the set of players from which the nearest player will be selected. For example, @p[team=Red] will target the nearest player on team Red even if there are other players closer.
The c[Bedrock Edition only] or limit[Java Edition only] target selector argument can be used to increase the number of nearest players targeted (for example, @p[c=3][Bedrock Edition only] or @p[limit=3][Java Edition only] will target the three nearest players).
Targets a random player.
Target selector arguments may be used to reduce the set of players from which a random player will be targeted. For example, @r[team=Red] will only target a random player from team Red.
The limit target selector argument can be used to increase the number of random players targeted. For example, @r[limit=3] will target three random players.
The type argument is not allowed on @r. To select a random entity, use @e[sort=random,limit=1] instead.
Targets all players, including dead players. No other selector will find dead players, except @s.
Target selector arguments may be used to reduce the set of players targeted. For example, @a[team=Red] will only target players on team Red.
Targets all entities (including players).
Target selector arguments may be used to reduce the set of entities targeted. For example, @e[type=cow] will only target cows.
Targets only one entity—the entity that executed the command, including dead players. If the executor was not an entity, for instance if the executor was a command block or a server console, this selector will find nothing.
Target selector arguments may be used to specify whether the executor is actually eligible to be targeted. For example, @s[type=cow,team=Red] will only target the executor of the command if the executor was a cow on team Red.
Targets your agent only. limit[Education Edition only]
Target selector arguments may be used to target your agent. For example, /tp @c 50 60 40 will teleport your agent only to specified location.
Targets all agents. limit[Education Edition only]
Target selector arguments may be used to target all agents. For example, /remove @v will remove all agents.

Target selector arguments[edit]

Summary of target selector arguments
Selection by Position
Argument(s) Selection criteria
x, y, z coordinate
distance[Java Edition only]
r, rm[Bedrock Edition only]
dx, dy, dz volume dimensions
Selection by Scoreboard Values
Argument(s) Selection criteria
scores scores
tag scoreboard tag
team team name
Selection by Traits
Argument(s) Selection criteria
limit,sort[Java Edition only]
c[Bedrock Edition only]
level[Java Edition only]
l,lm[Bedrock Edition only]
experience level
gamemode[Java Edition only]
m[Bedrock Edition only]
game mode
name entity name
x_rotation[Java Edition only]
rx,rxm[Bedrock Edition only]
vertical rotation
y_rotation[Java Edition only]
ry,rym[Bedrock Edition only]
horizontal rotation
type entity type
nbt[Java Edition only] nbt
advancements[Java Edition only] advancements

After a target selector, optional arguments can be used to modify the set of targets selected. When used with @a or @e, arguments narrow down the number of targets from the full list to a specific few. When used with @p or @r, arguments narrow the number of targets down from the full list to a smaller set from which the nearest or random player is selected. When used with @s, the command user will only be targeted if all arguments pass, otherwise the command will fail.

Add argument-value pairs as a comma-separated list contained within square brackets after the target selector variable:


Arguments and values are case-sensitive. Spaces are allowed around the brackets, equal signs, and commas, except in between the target variable and the first bracket. Commas must be used to separate argument-value pairs.

Selecting targets by coordinate
[x=X,y=Y,z=Z] — Selects targets based on distance to that exact position. Combine with selecting by distance to select only targets within a certain distance of that specific position, or combine with volume dimensions to select only targets within a certain cubic volume. If it's combined with neither distance nor volume dimensions, the whole world will be selected.
The coordinates are doubles and allow values like 12.34, and are not center-corrected, meaning x=0 is no longer corrected to x=0.5 - tilde notation is available for selector argument coordinates‌[Bedrock Edition only].
Selecting targets by distance
[distance=DISTANCE] — Selects only targets exactly DISTANCE blocks from the command's execution. If DISTANCE is a range, selects only targets whose distance falls within that range. Only non-negative values are allowed.
If a coordinate (above) and either or both radius/i are both defined, the radius/i will center on the coordinate rather than the postion of the command's execution.
Ranges are supported to allow for only certain distances.
  • @e[distance=10] — targets only entities exactly 10 blocks away
  • @e[distance=10..12] — targets only entities more than 10 blocks but less than 12 blocks away (inclusive)
  • @e[distance=5..] — targets only entities more than 5 blocks away (inclusive)
  • @e[distance=..15] — targets only entities less than 15 blocks away (inclusive)
Selecting targets by volume
Selects only targets within the volume defined as starting from the location where the command was executed and extending DX blocks in the "x" direction (i.e., east/west), DY blocks in the "y" direction (i.e., upwards/downwards), and DZ blocks in the "z" direction (i.e., north/south). If an initial coordinate is specified with the x, y, and z arguments, that will be used instead of the position of the command's execution for the lower northwestern corner (dx, dy, and dz still specify distances from that coordinate; they do not specify a separate coordinate). All values are allowed, including negative and partial values.
  • @e[x=1,y=2,z=3,dx=4,dy=5,dz=6] — targets only entities whose hitbox collects with the block region (1~5, 2~7,3~9) (or coordinates {(x,y,z)|x∈[1,6),y∈[2,8),z∈[3,10)}).
  • @e[x=1,y=2,z=3,dx=0,dy=0,dz=0] — targets only entities whose hitbox collects with the block region (1,2,3).
It is possible to combine selection by distance and selection by volume, in which case the command will only select targets within the overlap of both regions (within certain radius/i of the volume's lower northwest corner and not outside the defined volume).
Selecting targets by scores
[scores={OBJECTIVE1=SCORE1,OBJECTIVE2=SCORE2,...}] — Selects only targets with a score in objective OBJECTIVE1 of SCORE1, and a score in objective OBJECTIVE2 of SCORE2.
All tested objectives are in a single tag, with a list of individual score selectors between braces afterwards. The selectors inside the braces support ranges.
  • @e[scores={myscore=10}] — Selects only entities with a score in objective myscore of exactly 10.
  • @e[scores={myscore=10..12}] — Selects only entities with a score in objective myscore of between 10 and 12.
  • @e[scores={myscore=5..}] — Selects only entities with a score in objective myscore of 5 or greater.
  • @e[scores={myscore=..15}] — Selects only entities with a score in objective myscore of 15 or less.
  • @e[scores={foo=10,bar=1..5}] — Selects only entities with a score in objective foo of exactly 10, and a score in objective bar of between 1 and 5.
Selecting targets by tag
[tag=TAG] — Selects only targets that have the tag TAG.
[tag=!TAG] — Selects only targets that do not have the tag TAG.
[tag=TAG1,tag=TAG2] — Selects only targets that have both tag TAG1 and TAG2.
[tag=!TAG1,tag=!TAG2] — Selects only targets that have neither tag TAG1 nor the tag TAG2.
[tag=TAG1,tag=!TAG2] — Selects only targets that have tag TAG1 but not the tag TAG2.
[tag=] — Selects only targets without any tags.
[tag=!] — Selects only targets with any tags.
  • @e[tag=a,tag=b,tag=!c] — Selects only entities with tag a with tag b without tag c.
  • @r[tag=a] — Selects only one random player among players with tag a.
Selecting targets by team
[team=TEAM] — Selects only targets on team TEAM.
[team=!TEAM] — Selects only targets not on team TEAM.
[team=] — Selects only targets not on any team.
[team=!] — Selects only targets on any team.
Selecting targets with a limit
[limit=LIMIT] — Selects only the specified number of targets at maximum.
When used with @p or @r, this argument defaults to 1, so using a higher limit will increase the number of nearest or random targets returned. When used with @a or @e, this argument returns only a limited number of targets.
Using an additional argument sort, one can specify how the targets are chosen and limited.
  • sort=nearest — sorting by distance, nearest first (default for @p)
  • sort=furthest — sorting by distance, farthest first
  • sort=random — sorting randomly (default for @r)
  • sort=arbitrary — no sorting (default for @e@a)
Selecting targets by experience level
[level=L] — Selects only targets with L experience levels.
This automatically filters out all non-player targets.
This selector supports ranges.
  • @a[level=10] — Selects only players with level 10
  • @a[level=10..12] — Selects only players with level 10, 11, or 12
  • @a[level=5..] — Selects only players with level 5 or above
  • @a[level=..15] — Selects only players with level 15 or below
Selecting targets by game mode
[gamemode=GAMEMODE] — Selects only targets in the specified game mode.
[gamemode=!GAMEMODE] — Selects only targets that are not on the specified game mode.
Permitted values for GAMEMODE are:
  • survival: survival mode
  • creative: creative mode
  • adventure: adventure mode
  • spectator: spectator mode‌[Java Edition only]
This automatically filters out all non-player targets.
Selecting targets by name
[name=NAME] — Selects only targets named NAME.
[name=!NAME] — Selects only targets not named NAME.
If quotes are used around NAME, then spaces are allowed. NAME can only be a simple string, not a JSON text compound.
Selecting targets by vertical rotation
[x_rotation=X_ROTATION] — Selects only targets with vertical rotation of X_ROTATION.
Vertical rotation values vary from -90 facing straight up, increasing to 0 at horizontal, increasing to 90 facing straight down (thus vertical rotation values increase with rotation downwards).
This selector supports ranges.
  • @e[x_rotation=10] — Selects entities with vertical rotation of exactly 10
  • @e[x_rotation=10..12] — Selects entities within vertical rotation from 10 to 12 (inclusive)
  • @e[x_rotation=5..] — Selects entities within vertical rotation of 5 or above
  • @e[x_rotation=..15] — Selects entities with vertical rotation of 15 or below
Selecting targets by horizontal rotation
[y_rotation=Y_ROTATION] — Selects only targets with a horizontal rotation of Y_ROTATION.
Horizontal rotation values vary from -180/180 (facing due north), to -90 (facing due east), to 0 (facing due south), to 90 (facing due west), to -180/180 again. This argument supports ranges.
  • @a[y_rotation=10] — Selects entities with horizontal rotation of exactly 10
  • @a[y_rotation=10..12] — Selects entities within horizontal rotation from 10 to 12 (inclusive)
  • @a[y_rotation=5..] — Select entities within horizontal rotation of 5 or above
  • @a[y_rotation=..15] — Selects entities within horizontal rotation of 15 or below
Selecting targets by type
[type=TYPE] — Selects only targets of the specific entity type.
[type=!TYPE] — Selects only targets not of the specific entity type.
TYPE must be an entity ID or tags used to identify different types of entities internally (for example, creeper for creepers, minecart for regular minecarts, tnt for primed TNT, etc. Namespaces is acceptable, it can be left out if the namespace is default minecraft:). Entity IDs or tags are case-sensitive and invalid entity IDs will cause the command to fail. One may use type=player or type=!player to selected entities which are or are not players, respectively.
When used with @r, can change its normal behavior of targeting only players to target other entities.
  • @e[type=creeper] — Selects all creepers.
  • @e[type=!chicken,type=!cow] — Selects all entities except chickens and cows.
  • @e[type=chicken,type=cow] is invalid.
  • @e[type=#skeletons] — Selects skeletons, wither skeletons and strays.
Selecting targets by nbt‌[Java Edition only]
[nbt=NBT] — Selects only targets with the specified NBT. The NBT is written in its command definition.
For example:
  • @a[nbt={OnGround:1b}] or @a[nbt={OnGround:true}] — Selects players on ground.
  • @e[nbt={Tags:[a,b]}] is the same as @e[tag=a,tag=b]. The former is not recommended as it imposes extra load to the game.
  • @e[nbt={Color:0b},type=sheep] — Selects sheep dyed white.
  • @e[nbt={Item:{id:"minecraft:slime_ball"}},type=item] — Selects all slime ball drops.
Note: When matching string form of namespaced IDs within a tag, the reference to the ID must be in its full form (i.e. cannot omit minecraft namespace).
Hence @e[nbt={Item:{id:slime_ball}},type=item] cannot find any drop as the  id field always contains a namespaced ID-converted string.
Selecting targets by advancements‌[Java Edition only]
This section needs expanding
Since 1.13, target selector uses advancements in place of /advancement test. The argument name is the advancement id (namespace can be left out when namespaced minecraft). The value is true, false or so.
  • @a[advancements={story/form_obsidian=true}] — Selects players who have achieved the advancement minecraft:story/from_obsidian.
  • @a[advancements={story/form_obsidian=false}] — Selects players who haven't achieved the advancement minecraft:story/from_obsidian.
  • @a[advancements={story/obtain_armor={iron_helmet=true}}] — Selects players who had armored with iron helmet. The selected players needn't be wearing iron helmet when selected, and needn't have achieved the advancement minecraft:story/obtain_armor.
  • @a[advancements={story/follow_ender_eye=true}] is the same as @a[advancements={story/follow_ender_eye={in_stronghold=true}}].

Data tags[edit]

A data tag is a sequence of text which describes a data structure using attribute-value pairs. Data tags are used in Java Edition commands to specify complex data for players, entities, and some blocks.

A data tag consists of zero or more attribute-value pairs separated by commas and delineated by curly brackets. Each attribute-value pair consists of an attribute name and the attribute's value, separated by a colon. Some values, however, may themselves contain attribute-value pairs, allowing a data tag to describe a hierarchical data structure.

Example: {name1:123,name2:"sometext",name3:{subname1:456,subname2:789}}

The data structures that data tags describe are the same ones used in Minecraft's save files. These data structures are described in other articles and commands expect data tags to use the same attribute names (which are case-sensitive):

Data Structure Specification Links
Objects Examples
Block entities chests, furnaces, command blocks, mob spawners, signs, etc.
Items items in inventories (includes specifications for enchantments, lore, custom names, etc.)
Item entities items on the ground
Mobs creepers, cows, villagers, etc.
Projectiles arrows, fireballs, thrown potions, etc.
Vehicles boats, minecarts, etc.
Dynamic tiles primed TNT, falling sand/gravel/anvils
Other entities firework rockets, paintings, and item frames

The defined data structures also expect the values to be of the correct type.

Data Tags Value Types
Type Description
 Byte An integer between -128 and 127 (inclusive).
 Short An integer between -32,768 and 32,767 (inclusive).
 Int An integer between -2,147,483,648 and 2,147,483,647 (inclusive).
 Long An integer between -9,223,372,036,854,775,808 and 9,223,372,036,854,775,807 (inclusive).
Float - 32-bit single-precision floating point, Example: 3.1415926

Double - 64-bit double-precision floating point, Example: 3.141592653589793

See IEEE floating point for details.

 String A sequence of text, optionally delineated with double quotes.

Double quotes must be used if the String contains commas, curly brackets, or square brackets. To include a double quote inside a String, add a backslash before the double quote.

Example: "Call me \"Ishmael\""
 List A sequence of values, separated by commas and delineated with square brackets. The values must be of the same type, which is dictated by the first value in the sequence.
Example: [3.2,64.5,129.5]
 Byte Array A sequence of integers between -128 and 127 (inclusive), separated by commas, delineated with square brackets, and prefixed with B;.
Example: [B;1b,2b,3b]
 Int Array A sequence of integers between -2,147,483,648 and 2,147,483,647 (inclusive), separated by commas, delineated with square brackets, and prefixed with I;.
Example: [I;1,2,3]
 Long Array A sequence of integers between -9,223,372,036,854,775,808 and 9,223,372,036,854,775,807 (inclusive), separated by commas, delineated with square brackets, and prefixed with L;.
Example: [L;1l,2l,3l]
 Compound A sequence of attribute-value pairs, separated by commas and delineated with curly brackets.
Example: {X:3,Y:64,Z:129}

Every data tag argument is itself a Compound.

 Boolean A value, expressed as "true" or "false". This is only seen in JSON formatting, as a  Byte tag is usually used in NBT data to determine a boolean value as 0 (for false) and 1 (for true).
Example: {doFoo:true}

Some commands may require that a number's type be specified by adding a letter (B, S, L, F, D) to the end of the value. For example, 3s for a short, 3.2f for a float, etc. (This doesn't work with I for int.) The letter can be uppercase or lowercase. When no letter is used and Minecraft can't tell the type from context, it assumes double (if there's a decimal point), int (if there's no decimal point and the number is small enough to store as an int), or string (if neither is true). A square-bracketed literal is assumed to be a list unless an identifier is used: [I;1,2,3] for an int array and [L;1L,2L,3L] for a long array.

When commands such as /testfor, /testforblock, and /clear are used to match data tags, they only check for the presence of the provided tags in the target entity/block/item. This means that the entity/block/item may have additional tags and will still match. This is true even for lists and arrays: the order of a list is not acknowledged, and as long as every requested element is in the list, it will match even if there are additional elements.

The format used for data tags is a lenient form of JSON.

Raw JSON text[edit]

The /tellraw and /title commands use strict JSON syntax.

Scores and target selectors are evaluated for a Sign when it is placed or edited and for a Written Book when it is "resolved" (opened for the first time after signing). They won't update after that, and they won't work if edited onto an existing sign with an NBT editor, or onto a book that's already marked resolved. There's no way to wrap text onto the next line of a sign or the next page of a book during resolution; instead, the extra text will simply disappear.

The format of raw JSON text is a JSON string, a JSON array, or a JSON Object which supports the following (mostly optional) elements:

  • A string representing raw text to display directly in chat. Same as only having a  text tag in the base object.
  • Same as having all elements except the first in this array appended to the end of the  extra array of the first chat component in this array. Each element repeats this raw JSON text structure.
  • The base chat component object.
    •  text: A string representing raw text to display directly in chat. Note that selectors such as "@a" and "@p" are not translated into player names; use selector instead. Can use escape characters, such as \n for newline (enter), \t for tab, etc.
    •  translate: The translation identifier of text to be displayed using the player's selected language. This identifier is the same as the identifiers found in lang files from assets or resource packs. Ignored when  text exist in the root object.
    •  score: A player's score in an objective. Displays nothing if the player is not tracked in the given objective. Ignored when any of the previous fields exist in the root object.
      •  name: The name of the player whose score should be displayed. Selectors (such as @p) can be used, in addition to "fake" player names created by the scoreboard system. In addition, if the name is "*", it will show the reader's own score (for example, /tellraw @a {"score":{"name":"*","objective":"obj"}} will show every online player their own score in the "obj" objective).
      •  value: Optional. If present, this value is used regardless of what the score would have been.
    •  selector: A string containing a selector (@p,@a,@r,@e or @s) and, optionally, selector arguments. Unlike text, the selector will be translated into the correct player/entity names. If more than one player/entity is detected by the selector, it will be displayed in a form such as 'Name1 and Name2' or 'Name1, Name2, Name3, and Name4'. Ignored when any of the previous fields exist in the root object. Clicking a player's name inserted into a /tellraw command this way will suggest a command to whisper to that player. Shift-clicking a player's name will insert that name into chat. Shift-clicking a non-player entity's name will insert its UUID into chat.
    •  keybind: A string that can be used to display the key needed to preform a certain action. An example is key.inventory which will always display "E" unless the player has set a different key for opening their inventory. Ignored when any of the previous fields exist in the root object.
    •  nbt: A string indicating the NBT path used for looking up NBT values from an entity or a block entity. Ignored when any of the previous fields exist in the root object.
    •  with: A list of chat component arguments and/or string arguments to be used by  translate. Useless otherwise.
      • The arguments are text corresponding to the arguments used by the translation string in the current language, in order (for example, the first list element corresponds to "%1$s" in a translation string). Argument structure repeats this raw JSON text structure.
    •  interpret: A boolean to indicate whether the game should interpret the SNBT value at the path indicated by  nbt as a raw JSON text (according to this raw JSON text structure). Useless otherwise.
    •  block: A string specifying the coordinates of the block entity from which the NBT value is obtained. The coordinates can be absolute or relative. Useless if  nbt is absent.
    •  entity: A string specifying the target selector for the entity from with the NBT value is obtained. Useless if  nbt is absent.
      • A list element whose structure repeats this raw JSON text structure. Note that all properties of this object are inherited by children except for text, extra, translate, with, and score. This means that children will retain the same formatting and events as this object unless they explicitly override them.
      •  action: The action to perform when clicked. Valid values are "open_url" (opens value as a URL in the player's default web browser), "open_file" (opens the value file on the user's computer), "run_command" (has value entered in chat as though the player typed it themselves. This can be used to run commands, but the command will fail if the player does not have the required permissions to use it), "change_page" (can only be used in written books) changes to page value if that page exists, and "suggest_command" (similar to "run_command" but it cannot be used in a written book, the text only appears in the player's chat input and it is not automatically entered. Unlike insertion, this will replace the existing contents of the chat input). "open_file" is used in messages automatically generated by the game (e.g. on taking a screenshot) and cannot be used in commands or signs.
      •  value: The URL, file, chat, command or book page used by the specified action. Note that commands must be prefixed with the usual "/" slash.
      •  action: The type of tooltip to show. Valid values are "show_text" (shows raw JSON text), "show_item" (shows the tooltip of an item which can have NBT tags), and "show_entity" (shows an entity's name, possibly its type, and its UUID).

Due to the extra tag, the above format may be recursively nested to produce very complex and functional text strings. However, a raw json text doesn't have to be complicated at all: virtually all properties are optional and may be left out.

To be valid, each object must have at least either text, translate, score, selector or keybind (everything else is optional). As a matter of shorthand, however, the entire Object may be substituted with a String. In this case, that string will be considered the value of the text property. For example, "This is raw text" is equivalent to {"text":"This is raw text"}. This shorthand substitution is valid anywhere a raw text object is required (including the base <raw json message> argument of /tellraw, the elements of the extra list, and the value of a "show_text" hover_event).

/tellraw also accepts an array of objects and/or strings; they are concatenated. It even accepts a tree of nested arrays; they are traversed depth-first. For example:

/tellraw @a ["Hello there, ",{"selector":"@p"},"."]
/tellraw @a [[[["The "],[["quick ","brown "],[{"selector":"@p"}," jumps "],"over "],"the "],["lazy ","dog."]]]


External links
Skylinerw's JSON Text Component
Tellraw Generator
List of all Keybinds

Block/item/entity... names[edit]

Many commands have arguments that identify particular types of blocks, items, entities, advancements, bossbars, effects, enchantments and so on. In the command syntax below, these typically appear as elements named <block>, <item>, or the like which are replaced with identifiers such as minecraft:stone in the examples. These IDs all have namespaces. All original Minecraft contents are namespaced minecraft while contents from mods or data packs have other namespaces. Namespace prefix of IDs namespaced minecraft can be omitted for most situations; however, in certain cases, such as NBT data tag matching, full namespaced ids are required.

List and Summary of commands[edit]

The table below summarizes all commands, including upcoming ones. Click a column heading to sort by that column. Click the link in the first unit of each row to get detailed usage of each command.

Summary of Commands
Command Description BE EE JE OP level MP Only
/ability Grants or revokes a player ability. Yes Yes 2
/advancement Gives, removes, or checks player advancements. Yes 2
/ban Adds player to banlist. Yes 3 MP
/ban-ip Adds IP address to banlist. Yes 3 MP
/banlist Displays banlist. Yes 3 MP
/bossbar Creates and modifies bossbars. Yes 2
/classroommode Ability to edit restricted blocks. Yes 3
/clear Clears items from player inventory. Yes Yes Yes 2
/clone Copies blocks from one place to another. Yes Yes Yes 2
/data Gets, merges, modifies and removes block entity and entity NBT data. Yes 2
/datapack Controls loaded data packs. Yes 2
/debug Starts or stops a debugging session. Yes 3
/defaultgamemode Sets the default game mode. Yes 2
/deop Revokes operator status from a player. Yes Yes Yes 3 MP
/difficulty Sets the difficulty level. Yes Yes Yes 2
/effect Add or remove status effects. Yes Yes Yes 2
/enchant Enchants a player item. Yes Yes Yes 2
/execute Executes another command. Yes Yes Yes 2
/experience Adds or removes player experience. Yes Yes Yes 2
/fill Fills a region with a specific block. Yes Yes Yes 2
/forceload Forces chunks to constantly be loaded or not. Yes 2 (query)
4 (others)
/function Runs a function. Yes Yes 2
/gamemode Sets a player's game mode. Yes Yes Yes 2
/gamerule Sets or queries a game rule value. Yes Yes Yes 2
/give Gives an item to a player. Yes Yes Yes 2
/help Provides help for commands. Yes Yes Yes 0
/immutableworld Allows setting immutable state of a world. Yes 3
/kick Kicks a player off a server. Yes 3 MP
/kill Kills entities (players, mobs, items, etc.). Yes Yes Yes 2
/list Lists players on the server. Yes Yes Yes 0
/locate Locates closest structure. Yes Yes Yes 2
/loot Drops items from an inventory slot onto the ground. Yes 2
/me Displays a message about the sender. Yes Yes Yes 0
/mixer Mixer interactivity control. Yes 2
/mobevent Enables/disables a specified mob event. Yes Unknown 2
/msg Displays a private message to other players. Yes Yes Yes 0
/op Grants operator status to a player. Yes Yes Yes 3 MP
/pardon Removes entries from the banlist. Yes 3 MP
/particle Creates particles. Yes Yes 2
/playsound Plays a sound. Yes Yes Yes 2
/publish Opens single-player world to local network. Yes 4 SP only
/recipe Gives or takes player recipes. Yes 2
/reload Reloads loot tables, advancements, and functions from disk. Yes Yes 4
/remove Removing agent. Yes 3
/resupply Resupply villagers. Upcoming 2
/replaceitem Replaces items in inventories. Yes Yes Yes 2
/save Prepares a backup, queries its status, or resumes. BDS only MP
/save-all Saves the server to disk. Yes 4 MP
/save-off Disables automatic server saves. Yes 4 MP
/save-on Enables automatic server saves. Yes 4 MP
/say Displays a message to multiple players. Yes Yes Yes 1
/schedule Delays the execution of a function. Yes 2
/scoreboard Manages objectives, players, teams, and tags. Yes Yes 2
/seed Displays the world seed. Yes 2
/setblock Changes a block to another block. Yes Yes Yes 2
/setidletimeout Sets the time before idle players are kicked. Yes 3 MP
/setmaxplayers Sets the maximum number of players allowed to join. Yes Yes 0
/setworldspawn Sets the world spawn. Yes Yes Yes 2
/spawnpoint Sets the spawn point for a player. Yes Yes Yes 2
/spreadplayers Teleports entities to random locations. Yes Yes Yes 2
/stop Stops a server. Yes 4 MP
/stopsound Stops a sound. Yes Yes Yes 2
/summon Summons an entity. Yes Yes Yes 2
/tag Controls entity tags. Yes Yes 2
/team Controls teams. Yes 2
/teleport Teleports entities. Yes Yes Yes 2
/teammsg Specifies the mesage to send to team. Yes 0
/tell Displays a private message to other players. Yes Yes Yes 0
/tellraw Displays a JSON message to players. Yes Yes 2
/testfor Counts entities matching specified conditions. Yes Yes 2
/testforblock Tests whether a block is in a location. Yes Yes 2
/testforblocks Tests whether the blocks in two regions match. Yes Yes 2
/tickingarea Add, remove, or list ticking areas. Yes Yes 2
/time Changes or queries the world's game time. Yes Yes Yes 2
/title Manages screen titles. Yes Yes Yes 2
/toggledownfall Toggles the weather. Yes Yes 2
/tp Teleports entities. Yes Yes Yes 2
/transferserver Transfer player to a server. Yes Yes 0
/trigger Sets a trigger to be activated. Yes 0
/w Displays a private message to other players. Yes Yes Yes 0
/weather Sets the weather. Yes Yes Yes 2
/whitelist Manages server whitelist. Yes 3 MP
/worldborder Manages the world border. Yes 2
/worldbuilder Ability to edit restricted blocks. Yes 3
/wsserver Connects to a WebSocket server. Yes Yes 0
/xp Adds or removes player experience. Yes Yes Yes 2

Removed commands[edit]

Summary of Commands
Command Description PE EE JE OP level MP Only
/achievement Gives or takes an achievement from a player. Removed 2
/broadcast Broadcasts a message across the entire server. Removed 2
/entitydata Modifies the data tag of an entity. Removed 2
/home Teleports player to the world spawn. Removed 0
/setspawn Sets the current location as the default spawn location for new players. Removed 2
/solid Toggles between placing stone and placing bedrock. Removed 2
/stats Update objectives from command results. Removed 2
/unban Pardons a banned player. Removed 3 MP
/toggledownfall Toggles the weather. Removed 2

Command guide[edit]

If you see… Then
plain text Enter this literally, exactly as shown.
italics Replace this with an appropriate value.
<angle brackets> This is a required argument.
[square brackets] This is an optional argument.

Pick one of the options shown.

Available options are shown separated by vertical bars: |

ellipsis … The argument may consist of multiple words separated by spaces.
x: int The argument consists of numbers.
y: string The argument consists of multiple words which could be separated by spaces.
Success Conditions
A command's Success Conditions must be met in order for the game to consider the command "successful". This is used to determine a variety of things, such as the output of a redstone comparator feeding from command block with a command. Note that not all "successful" commands actually do something, and not all "failed" commands fail to do something useful.
Describes restrictions on who can use the command or in what context.
  • None: The command can be used by any player in any world. The following commands have no restrictions: /help, /me, /tell, and /trigger.
  • Operator: The command may only be used by an operator or in singleplayer mode with cheats enabled. On multiplayer servers, the results of these commands are broadcast to other ops online.
No multiplayer commands permit target selectors in arguments.
Except for /list, multiplayer commands cannot be used in command blocks.


Video made by slicedlime:


It has been suggested that the contents of this page be split into multiple articles named "Move history to each subpage.". Discuss
Java Edition Classic
0.0.15a (Multiplayer Test 3)Added /ban, /banip, /broadcast, /deop, /kick, /op, /tp, and /unban.
0.0.16a_01Changed /broadcast to /say.
0.0.17aAdded /setspawn.
0.0.20aAdded /solid.
Java Edition Indev
0.31Removed all commands.
Java Edition Alpha
v1.0.16Added /ban, /ban-ip, /banlist, /deop, /home, /kick, /op, /pardon, /pardon-ip, /say, and /stop.
v1.0.16_01Added /save-all, /save-on, /save-off and /tp.
v1.0.16_02Added /list and /tell.
v1.2.5Removed /home.
v1.2.6Added /kill.
Java Edition Beta
1.3Added /whitelist.
Java Edition
1.3.112w16aAdded cheats mode and /gamemode, /give, /time, /toggledownfall, and /xp.
12w17aAdded /help.
12w21aAdded /seed.
12w22aAdded /defaultgamemode.
12w24aAdded /publish.
12w27aAdded /debug.
12w30a/gamemode 3 change to /gamemode 0 (survival mode).
1.4.212w32aAdded /difficulty, /gamerule, /spawnpoint, and /weather.
Added target selectors.
12w37aAdded /clear.
12w38aAdded item arguments to /clear.
12w41aThe limit for /xp is now 2,147,483,647 instead of 5,000.
1.4.4preAdded /enchant.
1.513w03aAdded /testfor.
13w04aAdded /scoreboard.
13w09bAdded /effect.
1.6.113w23aAdded /spreadplayers.
Added gamerule naturalRegeneration.
13w24aAdded gamerule doDaylightCycle.
13w24bThe damage dealt by /kill was changed from 1,000 to 3.4×1038.
1.6-preAdded clear argument to /effect.
preAdded /playsound.
1.7.213w36aAdded /summon.
Added /achievement.
Added dataTag argument to /give.
13w37aAdded /setblock, /tellraw, and /testforblock.
13w38aAdded /setidletimeout.
13w43aAdded /setworldspawn.
1.814w02aAdded /blockdata.
Added the @e target selector variable.
Added player|entity argument to /kill.
Added data argument to /clear.
Added dataTag argument to /testfor.
/testfor is no longer exclusive to command blocks.
Added insertion attribute to raw JSON text specification.
14w02cTo fix MC-44371, /kill now directly kills non-living targets, rather than dealing 3.4×1038 void damage.
14w03aAdded rotation arguments to /tp.
Added dx, dy, and dz to target selector arguments.
Added /clone and /fill.
Added gamerule logAdminCommands.
NBT data now supports using string IDs rather than numerical IDs.
Numerical IDs no longer work in other parts of commands, though they still work for NBT data.
14w04aAdded /particle.
14w05aAdded spectator to /gamemode and /defaultgamemode.
14w06aAdded hideParticles argument to /effect.
Added /trigger.
14w07aAdded /execute and /testforblocks.
/testfor can now test for partial NBT tag matches.
14w08aCommands run using /execute now pass their success value back to the command block running them.
14w10aAdded gamerule showDeathMessages.
Added force option to /clone.
14w17aAdded /worldborder.
Added gamerule randomTickSpeed.
14w19aAdded /worldborder damage and /worldborder warning.
14w20aAdded /title.
Added selector attribute to raw JSON text specification.
Added move option to /clone.
14w26aAdded /worldborder add.
Added /replaceitem.
Added gamerule sendCommandFeedback
14w28aAdded /stats.
14w29aAdded /worldborder get.
Added force argument to /particle.
Added /time query.
Added the ability to create dummy gamerules.
Added QueryResults to /stats.
14w30a/summon can now spawn lightning.
14w31a/debug can be run in single player.
Added chunk argument to /debug.
14w32bAdded /entitydata.
/give can no longer make illegal stacks.
1.8.1pre1Added the game rule doEntityDrops.
The game rule doTileDrops no longer affects entities.
1.915w37aAdded gamerule spectatorsGenerateChunks.
15w43a/gamemode now displays in chat the gamemode the player switched to.
15w49a/playsound now accepts Tab to complete.
Added player and params tag to the /particle
15w49b/time query now accepts day as a value.
15w51aAdded gamerule spawnRadius.
16w02aThe m selector now accepts the standard literal gamemode values and abbreviations, such as a and adventure, and these may be negated as well.
/playsound now requires a source parameter, specifying what is the sound's category for volume purposes.
Running /help in a command block will now randomly use one of various different humorous phrases as the previous output.
16w03a/achievement no longer affects statistics.
16w07aAdded gamerule disableElytraMovementCheck.
pre2Added /stopsound.
1.1016w21bThe y-coordinate range of /tp is increased to -4096 to 4096.
pre1Added /teleport, which is like /tp, except that the target parameter is mandatory, the 'teleport to other player' usage is unavailable, and the use of relative coordinates is relative to the executor of the command, rather than relative to the target.
1.1116w32aAdded block state support to /execute, /fill, /setblock and /testforblock.
16w32bAdded ability for /title to display text in the action bar position.
16w38aAdded gamerules doWeatherCycle and maxEntityCramming.
Removed implicit target selectors (for example, @e[167,28,454]).
Invalid target selectors (such as @e[Type=creeper], @e[asdf=nonexistent], and @e[malformed]) now generate an error instead of being silently ignored.
16w39aAdded /locate.
1.1217w13aAdded /recipe and /advancement.
Added gamerule doLimitedCrafting.
Removed /achievement.
17w16bAdded gamerule maxCommandChainLength.
Added the @s target selector variable
17w18aAdded gamerule announceAdvancements.
Added /reload.
pre1Added gamerule gameLoopFunction.
Added /function.
1.1317w45aA new library named Brigadier is now used to parse commands. Different components of commands are displayed in different colors, and errors will be displayed in red without having to run the command. Commands, for the most part, do not allow uppercase letters, and are now much faster and more efficient.
An nbt argument in target selectors.
Changed the syntax for several commands.[more information needed]
Added /tag and /team.
Removed /enchant, /stats, /testfor, /testforblock, /testforblocks and /toggledownfall.
The syntax of /execute has been split off.
/gamerule no longer accepts unknown values ("custom gamerules").
Values to /gamerule are now type checked.
/publish now accepts an optional port argument.
17w45bAdded /data.
Removed /entitydata.
Reworked /execute store.
17w46aAdded /datapack.
The player now has the option to toggle automatic command suggestions.
The command UI has a new prototype, and now works in multiplayer.
17w47aRemoved /blockdata.
Particle names have been changed for the command /particle.
Added an option in chat to toggle automatic command suggestions.
17w48aTweaked the command suggestion UI.
Reworked tab-completion for coordinates.
17w49bRemoved the gameLoopFunction /gamerule.
17w50aLocal coordinates can now be specified in commands using ^.
Tab-completing when not targeting a block will suggest ~ ~ ~.
18w01aAdded facing to /teleport, which will make the target entity face an entity or a location.
Added the options noon and midnight to /time set.
Changed all custom names (blocks, items, entities, block entities) to translatable text components.
Thrower and Owner nbt keys of item entities are no longer strings but are instead compounds with two longs named L and M.
owner nbt keys of snowballs, eggs and ender pearls are no longer strings but are instead compounds with two longs named L and M.
18w02aErrors during a command are now a nicer error message (with a tool tip for more info).
/teleport has been simplified a bit, and players can now teleport to entities in other dimensions.
Added new sub-commands to /execute to allow for more control over commands.
Server commands now run from world spawn in the Overworld, instead of at 0,0,0.
18w03aImproved performance of command parsing and command execution.
Added commands to the profiler (/debug).
/data get with a path now works on non-numeric values.
Added the /particle <name> <pos> shortcut.
18w05aAdded /bossbar
New /execute store subcommand.
Added basic entity selector suggestions in the command UI.
A warning is now logged for ambiguous commands.
18w06aRe-added /enchant.
Added command suggestions for entity selectors.
Whitespaces are now allowed in entity selectors & blockstate arguments.
/locate now accepts different structure names for all structures previously grouped under Temple: Desert_Pyramid, Igloo, Jungle_Pyramid, and Swamp_Hut.
18w08aAdded a clickable teleport link to the /locate command output.
18w19aThe output of the /seed command can now be copied.
18w20aTeams now have a prefix and a suffix.
pre7Added /scoreboard objectives modify <objective> displayname <displayName>.
pre8Added /team modify <team> displayName.
Added /scoreboard objectives modify <objective> rendertype hearts, which makes health bars display as hearts, like this: Heart.svgHeart.svgHeart.svgHeart.svgHeart.svgHeart.svg.
Added /scoreboard objectives modify <objective> rendertype integer, which makes health bars display as yellow numbers.
Team names & objective names are now text components, not raw strings.
/team option is now /team modify.
1.13.118w31a Added /chunk.
pre1Renamed /chunk to /forceload.
September 26, 2018Brigadier open-sourced under the MIT license. (Source code previously was available on the library site, with no license specified).
1.1418w43aAdded /drop and /schedule.
/replaceitem can now be used on item frames.
18w45a/drop renamed to /loot and reworked.
19w02aAdded /teammsg.
Pocket Edition Alpha
0.7.4Added support for commands, though none are implemented yet.
0.16.0build 1Added /clearfixedinv, /clone, /deop, /execute, /fill, /gamemode, /give, /help (with alias /?), /kill, /list, /op, /say, /setblock, /setfixedinvslot, /setworldspawn, /spawnpoint, /summon, /tell (with aliases /msg and /w), /testforblock, /testforblocks, /time, /toggledownfall, /tp (with alias /teleport), /weather, /wsserver and /xp.
Functionality of most commands is equivalent to Java Edition 1.10 usage. Differences include: no support for datatags, /clone cannot use forced cloneMode, /gamemode can only use Creative and Survival modes, the player target is optional in /give, and the entity target is optional in /execute.
build 2Removed /clearfixedinv and /setfixedinvslot, along with other Education Edition - related items.
build 5Added /enchant.
Pocket Edition
1.0.0alpha /locate and /connect.
alpha /locate.
alpha /locate. Only works for strongholds.
1.0.3alpha /transferserver.
1.0.5alpha /clear, /difficulty, /effect, /gamerule, /me, /particle, /playsound, /replaceitem, /spreadplayers, /stopsound, /testfor and /title.
alpha /particle.
The amplifier on /effect can no longer have negative values.
1.1.0alpha canplaceon and candestroy are now supported for /replaceitem.
/locate can now find other structures.
Added the dodaylightcycle, doentitydrops, dofiretick, domobspawning, domobloot, dotiledrops, doweathercycle, keepinventory and mobgriefing gamerules.
?Added /setmaxplayers.
Bedrock Edition
1.2.0beta /tickingarea.
1.6.0beta the doinsomnia gamerule.
1.7.0beta /scoreboard.
Added the commandblocksenabled gamerule.
1.8.0beta /particle.
Added the randomTickSpeed gamerule.
Added /reload.
Added /function.
1.9.0beta /tellraw.
Added the showdeathmessages gamerule.
Added the immediaterespawn gamerule.
1.11.0beta /resupply however this doesn't work.
beta /mobevent.


Issues relating to "Commands" are maintained on the bug tracker. Report issues there.

See also[edit]