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
  • 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