{{Infobox version | title = Minecraft 17w45a | edition = Java | image = 17w45a.png | image2 = Java Edition 17w45a.png | type = Snapshot | date = November 8, 2017 | parent = 1.13 | clienthash = 42c93d04a82371094d9a4a844c932b8db45d3a40 | jsonhash = c3a0cc0ba68d054095dc52010b7b71a35b9ab17f | serverhash = 471b2dfa12e4df234057159ce5ee8320da3c84c1 | prevparent = 1.12.2 | prev = 17w43b | next = 17w45b | nextparent = 1.13.1 }} '''17w45a''' is the third [[snapshot]] for [[Java Edition 1.13]], released on November 8, 2017{{snap|17w45a|November 8, 2017}}, which completely overhauled the command system. == Additions == === Command format === ; General * A command UI when typing commands in the chat. ** Different components of commands are displayed in different colors. ** Errors are displayed in red without having to run the command. * An nbt argument in target selectors. * A new command parsing library called [[Brigadier]]. == Changes == === Mobs === ; [[Horse]]s [[File:Black Horse Revision 2.gif|48px]] [[File:Brown Horse Revision 2.gif|48px]] [[File:Chestnut Horse Revision 2.gif|48px]] [[File:Creamy Horse Revision 2.gif|48px]] [[File:Darkbrown Horse Revision 2.gif|48px]] [[File:Gray Horse Revision 2.gif|48px]] [[File:White Horse Revision 2.gif|48px]]
[[File:Baby Black Horse Revision 2.gif|48px]] [[File:Baby Brown Horse Revision 2.gif|48px]] [[File:Baby Chestnut Horse Revision 2.gif|48px]] [[File:Baby Creamy Horse Revision 2.gif|48px]] [[File:Baby Darkbrown Horse Revision 2.gif|48px]] [[File:Baby Gray Horse Revision 2.gif|48px]] [[File:Baby White Horse Revision 2.gif|48px]] * 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 === ; General * 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: {{cmd|scoreboard ObJeCtIvEs ...}} * The output signal of a command block used to be its "success count", but now is its "result". ; [[Argument types#minecraft:block_state|Block argument type]] * Wherever a , optionally [] and optionally [] was required, it is now a single 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 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 are 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 are set but anything missed out defaults depending on the block. ** If the player set redstone_wire[power=15], it sets power to 15 but north is 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. === Commands === ; {{cmd|?}} * Removed in favor of {{cmd|help}}. ; {{cmd|advancement}} * Removed {{cmd|advancement test}} in favor of entity selectors. ; {{cmd|clear}} * The syntax of {{cmd|clear}} has changed. ** {{cmd|clear [] [] [] [] []}} becomes {{cmd|clear [] [] []}}. ** See the item argument type for more details. ** [] has been removed in preparation for the [[1.13/Flattening|flattening]], item data is no longer a thing and item damage values are moved into NBT. ; {{cmd|clone}} * The syntax of {{cmd|clone}} has been changed. ** {{cmd|clone filtered [force{{!}}move{{!}}normal] [] []}} becomes {{cmd|clone filtered [] [force{{!}}move{{!}}normal]}}. ** {{cmd|clone [replace{{!}}masked] [force{{!}}move{{!}}normal] [] []}} becomes {{cmd|clone [replace{{!}}masked] [force{{!}}move{{!}}normal]}}. ; {{cmd|defaultgamemode}} and {{cmd|gamemode}} * Now only accepts string IDs, not shorthand or numeric. ** {{cmd|gamemode 2}} becomes {{cmd|gamemode adventure}}. ** {{cmd|defaultgamemode sp}} is now {{cmd|defaultgamemode spectator}}. ; {{cmd|difficulty}} * {{cmd|difficulty []}} now only accepts string IDs, not shorthand or numeric. ** {{cmd|difficulty 2}} is now {{cmd|difficulty normal}}. ** {{cmd|difficulty p}} is now {{cmd|difficulty peaceful}}. * The player can now query for the current difficulty by using {{cmd|difficulty}} without any arguments. ; {{cmd|effect}} * The syntax of {{cmd|effect}} has been split off, to avoid ambiguity. ** {{cmd|effect }} is now {{cmd|effect give }}. ** {{cmd|effect clear}} is now {{cmd|effect clear []}}. * Giving an effect now fails if it didn't actually do anything. ** Some mobs are immune (for example an [[ender dragon]]). ** Stronger existing effects prevent new weaker ones. ; {{cmd|enchant}} * Removed from the game, in order to be replaced by the planned {{cmd|modifyitem|link=Commands/item#History}} command (later reverted in [[18w06a]]). ; {{cmd|execute}} * The syntax of {{cmd|execute}} has been split off. ** Modifier sub-commands can change how the command is ran: *** {{cmd|execute as }} executes a command using the entity (but doesn't change position). *** {{cmd|execute at }} executes a command using the position of (but doesn't change entity). *** {{cmd|execute offset }} executes a command using the position of . *** {{cmd|execute align }} executes a command after aligning the current position to the block grid (rounding down), 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 becomes x=-2,y=2.3,z=5.9. ***** x=2.4,y=-1.1,z=3.8 using yxz becomes x=2,y=-2,z=3. ** Conditional sub-commands can let the player prevent the command from running at all: *** {{cmd|execute (if{{!}}unless) block }} executes a command if (or unless) matches . *** {{cmd|execute (if{{!}}unless) blocks (all{{!}}masked) }} executes a command if (or unless) the region between and matches . *** {{cmd|execute (if{{!}}unless) entity }} executes a command if (or unless) exists (returns 1 or more entities). *** {{cmd|execute (if{{!}}unless) score (<|<=|=|>=|>) }} executes a command if (or unless) 's score relates to 's score based on the chosen criterion. ** As replacement for {{cmd|stats}}, a new sub-command store lets the player store the result or success of a command somewhere: *** {{cmd|execute store (result{{!}}success) }}. *** 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 and . *** The objective must exist, but unlike with {{cmd|stats}}, the player doesn't need to set an initial value for . *** The value is stored when the full command has finished executing. *** If a command isn't successful (success is 0), result is always set to 0. *** It is 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. *** {{cmd|execute as somebody at somebody run say hi}}. ** Example of old commands: *** {{cmd|execute @e ~ ~ ~ detect ~ ~ ~ stone 0 say Stone!}} is now {{cmd|execute as @e at @s if block ~ ~ ~ stone run say Stone!}} *** {{cmd|execute @e ~ ~ ~ detect ~ ~ ~ grass 0 summon pig}} is now {{cmd|execute at @e if block ~ ~ ~ grass run summon pig}}. *** {{cmd|execute @e ~ ~ ~ say Hello!}} is now {{cmd|execute as @e run say Hello!}} ; {{cmd|experience}} * {{cmd|xp}} is now an alias for {{cmd|experience}}. * Split up into 3 different subcommands: ** {{cmd|experience add [points{{!}}levels]}} *** Adds of either points or levels to the target (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. ** {{cmd|experience set [points{{!}}levels]}}. *** Sets of either points or levels on the target (defaults to points). *** The player cannot set more points than their current level allows. *** When changing levels, the points stay at the same percentage as the previous level. ** {{cmd|experience query (points{{!}}levels)}}. *** Returns either the number of points or levels on the given . ; {{cmd|fill}} * The syntax of {{cmd|fill}} has been changed. ** {{cmd|fill replace [] []}} is now {{cmd|fill replace []}}. ** {{cmd|fill [] [destroy{{!}}hollow{{!}}keep{{!}}outline{{!}}replace] []}} is now {{cmd|/fill [destroy{{!}}hollow{{!}}keep{{!}}outline{{!}}replace]}}. ; {{cmd|function}} * {{cmd|function}} no longer accepts [if|unless] arguments. ** This has been moved into {{cmd|execute}}. ** {{cmd|function foo if @e}} is now {{cmd|execute if entity @e run function foo}}. ; {{cmd|gamerule}} * {{cmd|gamerule}} no longer accepts unknown rules ("custom gamerules"). ** The player can use [[Function (Java Edition)|function]]s or [[scoreboard]]s as replacements, with no loss of functionality. ** Existing custom gamerules are not accessible. Only built-in rules are available. * Values to {{cmd|gamerule}} are now type checked (giving a string if it wants an int is a very obvious error). ; {{cmd|give}} * The syntax of {{cmd|give}} has changed. ** {{cmd|give [] [] []}} is now {{cmd|give []}}. ** See the item argument type for more details. ** [] has been removed in preparation for the [[1.13/Flattening|flattening]], item data is no longer a thing and item damage values are moved into NBT. ; {{cmd|kill}} * A target is now mandatory. ; {{cmd|locate}} * The y-coordinate is now returned as 64 instead of ?. * The result of the command, used by {{cmd|execute store}}, is the absolute distance to the structure. ; {{cmd|op}} * Now allows target selectors besides names. ; {{cmd|particle}} * The argument has been removed, instead the parameters for particles like blockcrack can be specified right after the argument using the new block argument. ** {{cmd|particle blockcrack stone [variant=smooth_granite] ~ ~ ~ 0 0 0 0 1}}. * The particle names have been converted to lowercase and optionally have a namespace. ; {{cmd|publish}} * Added an optional port argument. ; {{cmd|replaceitem}} * The syntax of {{cmd|replaceitem}} has changed. ** {{cmd|replaceitem block [] [] []}} is now {{cmd|replaceitem block []}}. ** {{cmd|replaceitem entity [] [] []}} is now {{cmd|replaceitem entity []}}. ** See the item argument type for more details. ** [] has been removed in preparation for the [[1.13/Flattening|flattening]], item data is no longer a thing and item damage values are moved into NBT. * The slot argument no longer requires slot.. ** For example, slot.hotbar.1 now is hotbar.1. ; {{cmd|scoreboard}} * {{cmd|scoreboard}} had [] removed from its commands in favor of the nbt argument in entity selectors. * {{cmd|scoreboard players tag}} and {{cmd|scoreboard teams}} removed. Replaced by {{cmd|tag}} and {{cmd|team}} respectively. * {{cmd|scoreboard players test}} removed in favor of {{cmd|execute (if{{!}}unless) score}}, entity selectors and {{cmd|scoreboard players get }}. ; {{cmd|setblock}} * The syntax of {{cmd|setblock}} has changed. ** {{cmd|setblock [] [] []}} is now {{cmd|setblock []}}. ** See the block argument type changes above for more details. ; {{cmd|stats}} * Removed. Now part of {{cmd|execute}}. * The new {{cmd|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. ; {{cmd|stopsound}} * * can now be used instead of source to stop all sounds with a certain name, across all sources. ; {{cmd|tag}} * Replaces {{cmd|scoreboard players tag}}. * Keeps the same syntax. ** {{cmd|tag add }} to add to . ** {{cmd|tag remove }} to remove from . ** {{cmd|tag list}} to list all tags on players. ; {{cmd|team}} * Replaces {{cmd|scoreboard teams}}. * Keeps the same syntax. ** {{cmd|team add []}} ** {{cmd|team empty }} ** {{cmd|team join []}} ** {{cmd|team leave []}} ** {{cmd|team list []}} ** {{cmd|team option
== Video == Video made by [[slicedlime]]: {{yt|-lWtt3gooB4}} == References == {{reflist}} == Navigation == {{Navbox Java Edition versions|1.1x}} [[de:17w45a]] [[es:Java Edition 17w45a]] [[fr:Édition Java 17w45a]] [[ja:Java Edition 17w45a]] [[nl:17w45a]] [[pt:Edição Java 17w45a]] [[ru:17w45a (Java Edition)]] [[zh:17w45a]]