Minecraft Wiki

The Minecraft Wiki is no longer considered as official by Microsoft and therefore several changes are required to be made, including to the wiki's logo. Please read this announcement for more information.


Minecraft Wiki
Minecraft Wiki
Minecraft 17w45a
Java Edition 17w45a.png

Java Edition



Release date

November 8, 2017

Snapshot for



Client (.json)

Protocol version


Data version


17w45a[1] is the third snapshot released for Java Edition 1.13, which completely overhauled the command system.


Command format[]

  • A command UI when typing commands in the chat.
    • Different components of commands will be displayed in different colors.
    • Errors will be displayed in red without having to run the command.
  • An nbt argument in target selectors.
  • A new command parsing library called Brigadier.



White Horse Revision 2.png Horses
  • The model has been simplified to be more consistent with other mobs.
  • Some animations like opening its mouth when grazing has been removed from the model as well, and the saddle animation is changed slightly.

Command format[]

  • Commands and functions are much faster and more efficient.
  • Most commands are now more case-sensitive. Lowercase is preferable wherever possible.
    • For example, this is no longer allowed: /scoreboard ObJeCtIvEs ...
  • The output signal of a command block used to be its "success count", but now is its "result".
  • Wherever a <block>, optionally [<data>] and optionally [<nbt>] was required, it is now a single <block> argument that looks like this:
    • stone
    • minecraft:redstone_wire[power=15,north=up,south=side]
    • minecraft:jukebox{RecordItem:{...}}
    • minecraft:furnace[facing=north]{BurnTime:200}
  • ID is required (though just as before, if namespace isn't set it defaults to minecraft:).
  • States are inside [], comma-separated and must be properties/values supported by the blocks. They are optional.
    • minecraft:stone[doesntexist=purpleberry] is a syntax error, because stone does not have doesntexist.
    • minecraft:redstone_wire[power=tuesday] is a syntax error, because redstone_wire's power is a number between 0 and 15.
  • An optional NBT tag is inside {}, and works just like the player would expect.
  • In the context of "conditions"/testing for blocks, only the states the player provided will be tested.
    • If the player tests redstone_wire[power=15], it only checks power but ignores other states such as north.
  • In the context of setting blocks, any states the player provided will be set but anything missed out will default depending on the block.
    • If the player set redstone_wire[power=15], it will set power to 15 but north will be a default value (in this case, set to none).
  • There is no such thing as block data value in 1.13, but either a different block or a state.
  • Removed /advancement test in favor of entity selectors.
  • The syntax of /clear has changed.
    • /clear [<target>] [<item>] [<data>] [<count>] [<nbt>] will become /clear [<target>] [<item>] [<count>].
    • See the item argument type for more details.
    • [<data>] has been removed in preparation for the flattening, item data will no longer be a thing and item damage values will be moved into NBT.
  • The syntax of /clone has been changed.
    • /clone <begin> <end> <destination> filtered [force|move|normal] [<block>] [<data>] will become /clone <begin> <end> <destination> filtered [<block>] [force|move|normal].
    • /clone <begin> <end> <destination> [replace|masked] [force|move|normal] [<block>] [<data>] will become /clone <begin> <end> <destination> [replace|masked] [force|move|normal].
/defaultgamemode and /gamemode
  • The syntax of /effect has been split off, to avoid ambiguity.
    • /effect <entity> <effect> is now /effect give <entity> <effect>.
    • /effect <entity> clear is now /effect clear <entity> [<effect>].
  • Giving an effect will now fail if it didn't actually do anything.
    • Some mobs are immune (for example an ender dragon).
    • Stronger existing effects prevent new weaker ones.
  • Removed in favor of /modifyitem (later reverted in 18w06a).
  • The syntax of /execute has been split off.
    • Modifier sub-commands can change how the command is ran:
      • /execute as <entity> <chained command> executes a command using the entity <entity> (but doesn't change position).
      • /execute at <entity> <chained command> executes a command using the position of <entity> (but doesn't change entity).
      • /execute offset <pos> <chained command> executes a command using the position of <pos>.
      • /execute align <axes> <chained command> executes a command after aligning the current position to the block grid (rounding down), <axes> is any combination of x y and z (for example: x,xz,zyx and yz).
        • Examples:
          • x=-1.8,y=2.3,z=5.9 using x will become x=-2,y=2.3,z=5.9.
          • x=2.4,y=-1.1,z=3.8 using yxz will become x=2,y=-2,z=3.
    • Conditional sub-commands can let the player prevent the command from running at all:
      • /execute (if|unless) block <pos> <block> <chained command> executes a command if (or unless) <pos> matches <block>.
      • /execute (if|unless) blocks <begin> <end> <destination> (all|masked) <chained command> executes a command if (or unless) the region between <start> and <end> matches <destination>.
      • /execute (if|unless) entity <entity> <chained command> executes a command if (or unless) <entity> exists (returns 1 or more entities).
      • /execute (if|unless) score <target> <targetObjective> (<|<=|=|>=|>) <source> <sourceObjective> <chained command> executes a command if (or unless) <target>'s score relates to <source>'s score based on the chosen criterion.
    • As replacement for /stats, a new sub-command store lets the player store the result or success of a command somewhere:
      • /execute store (result|success) <name> <objective> <chained command>.
      • result is the result of a command, which replaces these old stats: AffectedBlocks, AffectedEntities, AffectedItems, QueryResult.
      • success is how many times the command was successful. This is usually 0 or 1, but if the command split up (for example as @a) then it may be more than 1. This replaces SuccessCount.
      • The value is stored into the scoreboard under <name> and <objective>.
      • The objective must exist, but unlike with /stats, the player doesn't need to set an initial value for <name>.
      • The value will be stored when the full command has finished executing.
      • If a command isn't successful (success is 0), result will always be set to 0.
      • It will be made clear what the expected result of each command is.
    • The player can chain all sub-commands together.
      • After every sub-command, the player needs to write another sub-command.
      • When the player is done with chaining sub-commands, run lets players write the actual command to be executed.
        • / is no longer allowed before the command.
      • /execute as somebody at somebody run say hi.
    • Example of old commands:
      • /execute @e ~ ~ ~ detect ~ ~ ~ stone 0 say Stone! is now /execute as @e at @s if block ~ ~ ~ stone run say Stone!
      • /execute @e ~ ~ ~ detect ~ ~ ~ grass 0 summon pig is now /execute at @e if block ~ ~ ~ grass run summon pig.
      • /execute @e ~ ~ ~ say Hello! is now /execute as @e run say Hello!
  • /xp is now an alias for /experience.
  • Split up into 3 different subcommands:
    • /experience add <players> <amount> [points|levels]
      • Adds <amount> of either points or levels to the target <players> (defaults to points).
      • Adding points can cause players to level up, as usual.
      • Negative numbers are supported, to subtract points instead.
      • Subtracting points can cause players to level down.
    • /experience set <players> <amount> [points|levels].
      • Sets <amount> of either points or levels on the target <players> (defaults to points).
      • The player cannot set more points than their current level allows.
      • When changing levels, the points will stay at the same percentage as the previous level.
    • /experience query <player> (points|levels).
      • Returns either the number of points or levels on the given <player>.
  • The syntax of /fill has been changed.
    • /fill <x y z> <xt yt zt> <block> <data> replace [<replaceBlock>] [<replaceData>] is now /fill <x y z> <xt yt zt> <block> replace [<filter>].
    • /fill <x y z> <xt yt zt> <block> [<data>] [destroy|hollow|keep|outline|replace] [<nbt>] is now /fill <x y z> <xt yt zt> <block> [destroy|hollow|keep|outline|replace].
  • /function no longer accepts [if|unless] <entity> arguments.
  • /gamerule no longer accepts unknown rules ("custom gamerules").
    • The player can use functions or scoreboards as replacements, with no loss of functionality.
    • Existing custom gamerules will just not be accessible. Only built-in rules will be available.
  • Values to /gamerule are now type checked (giving a string if it wants an int is a very obvious error).
  • The syntax of /give has changed.
    • /give <players> <item> [<count>] [<data>] [<nbt>] is now /give <players> <item> [<count>].
    • See the item argument type for more details.
    • [<data>] has been removed in preparation for the flattening, item data will no longer be a thing and item damage values will be moved into NBT.
  • A target is now mandatory.
  • The y-coordinate is now returned as 64 instead of ?.
  • The result of the command, used by /execute store, will be the absolute distance to the structure.
  • Now allows target selectors besides names.
  • The <params> argument has been removed, instead the parameters for particles like blockcrack can be specified right after the <name> argument using the new block argument.
    • /particle blockcrack stone [variant=smooth_granite] ~ ~ ~ 0 0 0 0 1.
  • The particle names have been converted to lowercase and optionally have a namespace.
  • Added an optional port argument.
  • The syntax of /replaceitem has changed.
    • /replaceitem block <pos> <slot> <item> [<count>] [<data>] [<nbt>] is now /replaceitem block <pos> <slot> <item> [<count>].
    • /replaceitem entity <target> <slot> <item> [<count>] [<data>] [<nbt>] is now /replaceitem entity <target> <slot> <item> [<count>].
    • See the item argument type for more details.
    • [<data>] has been removed in preparation for the flattening, item data will no longer be a thing and item damage values will be moved into NBT.
  • The slot argument no longer requires slot..
    • For example, slot.hotbar.1 now is hotbar.1.
  • /scoreboard had [<dataTag>] removed from its commands in favor of the nbt argument in entity selectors.
  • /scoreboard players tag and /scoreboard teams removed. Replaced by /tag and /team respectively.
  • /scoreboard players test removed in favor of /execute (if|unless) score, entity selectors and /scoreboard players get <target> <objective>.
  • The syntax of /setblock has changed.
    • /setblock <pos> <block> [<data>] [<mode>] [<nbt>] is now /setblock <pos> <block> [<mode>].
    • See the block argument type for more details.
  • Removed. Now part of /execute.
  • The new /execute one is not a direct replacement, the behavior has changed:
    • It is now per-command, instead of per-entity or per-block.
    • There's only result and success, which covers all the old stat types.
  • * can now be used instead of source to stop all sounds with a certain name, across all sources.
  • Replaces /scoreboard players tag.
  • Keeps the same syntax.
    • /tag <players> add <tag> to add <tag> to <players>.
    • /tag <players> remove <tag> to remove <tag> from <players>.
    • /tag <players> list to list all tags on players.
  • Replaces /scoreboard teams.
  • Keeps the same syntax.
    • /team add <team> [<displayname>]
    • /team empty <team>
    • /team join <team> [<members>]
    • /team leave [<members>]
    • /team list [<team>]
    • /team option <team> <option> <value>
/testfor, /testforblock and /testforblocks
/tp and /teleport
  • /tp is now an alias of /teleport (much like /w, /msg and /tell).
  • Coordinates are now relative to the executor, as with all other commands.
  • The syntax of /tp remains, but with the behavior of /teleport.
  • /trigger <objective> is a new syntax as a shortcut for /trigger <objective> add 1.
  • If the player doesn't specify a time, it now defaults to 5 minutes (previously random).

  • Wherever an <item>, optionally [<data>] and optionally [<nbt>] was required, it is now a single <item> argument that looks like this:
    • stone
    • minecraft:stick{display:{Name:"Stick of Untruths"}}
  • ID is required (though just as before, if namespace isn't set it defaults to minecraft:).
  • An optional NBT tag is inside {}, and works just like the player would expect.
    • Any other information is either a separate item or a property in nbt.
Target selectors
  • More error handling has been introduced.
  • Arguments may now be quoted.
    • Things like limit=0, level=-10, gamemode=purple are not allowed.
  • There's no longer a "min" and "max" separate values, we instead support ranges.
    • level=10 is level 10.
    • level=10..12 is level 10, 11 or 12.
    • level=5.. is anything level 5 or above.
    • level=..15 is anything level 15 or below.
  • The arcane shorthand names have been renamed.
    • m -> gamemode
    • l or lm -> level
    • r or rm -> distance
    • rx or rxm -> x_rotation
    • ry or rym -> y_rotation
    • c -> limit
  • x, y, z, distance, x_rotation, y_rotation are now doubles and allow values like 12.34.
    • x and z are no longer center-corrected.
      • This means x=0 no longer equates to x=0.5.
  • gamemode (previously m) no longer allows numerical or shorthand IDs.
  • limit (was c) No longer allows negative values.
    • Use sort=furthest instead.
  • The name argument now supports spaces (as long as it is quoted).
  • Multiple of the same argument in target selectors is now possible.
    • tag=foo,tag=bar,tag=!baz matches someone with foo, bar and not baz.
    • type=!cow,type=!chicken matches something that isn't a cow and isn't a chicken.
    • type=cow,type=chicken isn't allowed, because something cannot both be a cow and chicken.
  • The player can specify the sorting.
    • sort=nearest is the old default, sorting by distance (default for @p).
    • sort=furthest is the reverse of that (previously the player would use c=-5 for this).
    • sort=random for random sorting (default for @r).
    • sort=arbitrary is a new option to not sort the result (default for @e, @a).
  • Specifying scores now looks like scores={foo=1,bar=1..5}.
  • The player can test for advancements with advancements={foo=true,bar=false,custom:something={criterion=true}}.
    • true for "they completed the advancement", false for "they have not completed the advancement".
    • Alternatively, pass a block of specific criteria to test for (again, true/false).


38 issues fixed
From released versions before 1.13
  • MC-32972/summon accepts arguments that it will ignore.
  • MC-59511/tellraw has an incomplete error message when key determining text to display is missing.
  • MC-69042/summon coordinate syntax should be different.
  • MC-80856 – Command syntax inconsistencies.
  • MC-80893 – Sender bias (c=1) applies when sender is not the closest entity to specified x/y/z origin.
  • MC-80928 – Player sits too ahead when riding a (skeleton/zombie) horse/donkey/mule.
  • MC-85394 – Spawning 'crit' particle with speed >100 causes an extreme lag spike.
  • MC-87365 – Incorrect syntax for scoreboard players tag.
  • MC-87559/gamerule missing indicator for affected gamerule.
  • MC-91459/setblock at Y=256 shows unique message compared to using other outside-world setblock commands/Using /setblock at Y>256 says max building height is 256.
  • MC-101113/playsound command is not validating arguments correctly.
  • MC-101135 – Confusing error message for relative coordinates with too high numbers.
  • MC-102682 – Horseshoes and horse leg separated.
  • MC-105820 – Relative decimal coordinates with block related commands are inconsistent.
  • MC-115957 – Advancements, loot tables, resource packs and world folders don't require lower case.
  • MC-116045/banlist command treats any non "ips" argument as "players".
  • MC-118308 – Narrator is toggled when typing in some text fields.
  • MC-118565 – Four negative signs in a selector which only has the potential to select one entity will attempt to parse as a UUID and fail.
  • MC-119142 – You can't use multiple tags in a selector.
  • MC-122085 – Generating server icon leaks encoded data buffer.
  • MC-128561CommandBase.commandListener retains old server reference, preventing garbage collection.
From the 1.13 development versions
  • MC-121281 – Scrollbar in the creative and server menu isn't working with mouse.
  • MC-121283 – Underwater and in lava overlay is missing.
  • MC-121284 – Resource pack and world folder buttons don't work.
  • MC-121288 – Cinematic camera doesn't work properly.
  • MC-121302 – "Direct connect" button enabled/disabled at wrong times.
  • MC-121314 – Video settings slider text "FS Resolution" doesn't fit.
  • MC-121328 – GUI scales incorrectly.
  • MC-121329 – Pressing "chat" key no longer selects search in creative inventory/recipe book.
  • MC-121334 – [1-9] in creative inventory search tab sends additional keypress to search bar.
  • MC-121396 – WASD keys in a weird order.
  • MC-121418 – Crash when trying to paste non-string clipboard content.
  • MC-121419 – Click and hover events are offset in chat.
  • MC-121421 – Pressing enter in the name or seed field on the create world dialog no longer creates the world.
  • MC-121456 – Chunks disappearing after switching windows in fullscreen mode.
  • MC-121468 – Statistics can no longer be ordered by clicking icons.
From the previous development version
  • MC-121517 – Fullscreen button will not make game fullscreen.
  • MC-121587/reload feedback says it reloaded loot tables, advancements and functions instead of just saying data packs.


Video made by slicedlime:


  1. "Minecraft Snapshot 17w45a" – Minecraft.net, November 8, 2017