Skip to main content

Minecraft Snapshot 17w45b

Minecraft Snapshot 17w45b
Rate this post

In 1.13 we are completely redesigning the command system to be easier to use, faster to run, and allow for much cooler things than were possible before. Todays snapshot introduces the first kinda-workable build of that command system!

CHANGES IN 17W45A

  • New horse model! Hurrah!
  • Lots of bug fixes! Especially crash fixes on Mac OS.
  • New command library! Details below.
  • Added new GUI scaling options! 4k users rejoice, you can see a few more pixels now ūüėČ

CHANGES IN 17W45B

  • Merged¬†/entitydata¬†and¬†/blockdata¬†into¬†/data
  • Reworked¬†/execute store
  • Made command-function loading much faster
  • Made¬†/execute if <..>¬†return values if used on their own
  • Fixed bug¬†MC-121623¬†– “Cannot use namespace in type= for selectors”
  • Fixed bug¬†MC-121627¬†– “@s fails to build valid commands”
  • Fixed bug¬†MC-121635¬†– “Incorrect failed /fill result message”
  • Fixed bug¬†MC-121637¬†– “Incorrect result message when teleporting a single entity”
  • Fixed bug¬†MC-121642¬†– “”Optional” commands following conditional execute chain succeed/fail strangely”
  • Fixed bug¬†MC-121650¬†– “Tab auto-completion is case-sensitive”
  • Fixed bug¬†MC-121655¬†– “Incorrect message when teleporting single entity”
  • Fixed bug¬†MC-121656¬†– “Some creative commands are available by a survival player with cheats disabled”
  • Fixed bug¬†MC-121660¬†– “distance argument can’t find players with @a, @p or @e[type=player]”
  • Fixed bug¬†MC-121663¬†– “Gamerules are copying from other worlds”
  • Fixed bug¬†MC-121674¬†– “Execute doesn’t work in Functions”
  • Fixed bug¬†MC-121683¬†– “-= isn’t a valid operation in scoreboard players operation”
  • Fixed bug¬†MC-121686¬†– “Execute unless always fails on entities”
  • Fixed bug¬†MC-121691¬†– “/teleport with rotation does not work”
  • Fixed bug¬†MC-121695¬†– “Tellraw only supports 1 target”
  • Fixed bug¬†MC-121711¬†– “@a or @s doesn’t include dead player”
  • Fixed bug¬†MC-121727¬†– “execute on multiple entites cancels, once one command fails”
  • Fixed bug¬†MC-121728¬†– “The order, in which execute runs the command for each entity, is in reverse”
  • Fixed bug¬†MC-121749¬†– “/entitydata does not apply modified NBT data”
  • Fixed bug¬†MC-121765¬†– “Removing n scoreboard points adds them instead”

BUG FIXES

  • MC-121281¬†– Scrollbar in the creative and server menu isn’t working with mouse
  • MC-121282¬†– Server Icons erased on loading multiplayer menu
  • 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-121433¬†– Non english letters are lowercase in controls setting, while English are upper.
  • MC-121456¬†– Chunks disappearing after switching windows in fullscreen mode
  • MC-121468¬†– Statistics can no longer be ordered by clicking icons
  • MC-121517¬†– Fullscreen button will not make game fullscreen
  • A lot of bugs related to commands because we rewrote the entire system ¬Į\(„ÉĄ)/¬Į

COMMANDS

CAVEATS

  • It doesn’t work in multiplayer yet. You can type out commands as usual, you just won’t get tabcompletions or any UI for it yet.
  • Tabcompletions of any kind are a work in progress, and only absolute basic values will be hinted.
  • It really isn’t complete, and there are a lot of parts that just aren’t implemented yet or might behave a little unexpectedly. Please feel free to report these to the bug tracker so we can keep track of them!
  • If we feel that it’s too incomplete/broken (it really might be), we will revert it until it’s had more development. This is a preview, it is not final.
  • Some changes might not make sense until a later snapshot, for example data values still technically exist right now but will be removed very soon.
  • The new commands are not translated in any way. They are designed to be easier to translate than the current engine, but it’s not there yet.
  • The UI for typing out commands is a really really rough mockup. It will probably be super cool at some point.

GENERAL

  • Most commands are even more case sensitive than before. Lowercase is preferable wherever possible.
  • For example, this is no longer allowed:¬†/scoreboard ObJeCtIvEs ...
  • They will be so much more faster and efficient. Especially functions. Oh man.
  • Functions will be completely parsed & cached on load. This means if there’s any command that isn’t correct for whatever reason, you will know about it on load.
  • This means to check if a map works in 1.17.banana, you simple open your world in 1.17.banana. If there’s errors, they’ll be in your log. If there’s no errors, it’s probably fine!
  • Here’s a list of every single executable command so-far: https://gist.github.com/Dinnerbone/943fbcd763c19be188ed6b72a12d7e65
  • It’s very verbose, because each line is its own command.¬†[optionals]and¬†(conditionals|ors)¬†are separated out.
  • ...¬†is where another command is required
  • -> foo¬†means an alias to foo
  • The new command library is called “Brigadier”. That’s not relevant in any way, I just really like the name.

SPECIFIC COMMANDS

If a command isn’t listed, it’s probably because nothing exciting happened to it and it works as it did before. These are only notable changes.

/advancement

  • Removed¬†/advancement test¬†as it will be part of entity selectors

/blockdata

  • Removed in favour of¬†/data

/clear

  • The syntax of¬†/clear¬†has changed
  • /clear [<target>] [<item>] [<data>] [<count>] [<nbt>]¬†->¬†/clear [<target>] [<item>] [<count>]
  • See the item argument type for more details

/clone

  • The syntax of¬†/clone¬†has changed
  • /clone <x1 y1 z1> <x2 y2 z2> <xt yt zt> filtered [force|move|normal] [<block>] [<data>]¬†->¬†/clone <x1 y1 z1> <x2 y2 z2> <xt yt zt> filtered [<block>] [force|move|normal]
  • /clone <x1 y1 z1> <x2 y2 z2> <xt yt zt> [replace|masked] [force|move|normal] [<block>] [<data>]¬†->¬†/clone <x1 y1 z1> <x2 y2 z2> <xt yt zt> [replace|masked] [force|move|normal]
  • See the block argument type for more details

/data

  • New command that replaces¬†/entitydata¬†and¬†/blockdata
  • Has the following subcommands:
  • merge <target> <nbt>¬†acts the same as¬†/entitydata//blockdata¬†used to. Merges new NBT onto the target.
  • get <target>¬†prints the full data for the target
  • get <target> <path> [scale]¬†returns the numeric value of a tag at the specified¬†<path>, after multiplying with¬†[scale]¬†(default 1)
  • Data paths look like this:¬†foo.bar[0]."A [crazy name]".baz
  • foo.bar¬†means¬†foo‘s child called¬†bar
  • foo[0]¬†means element¬†0¬†of¬†foo
  • "quoted strings"¬†may be used if a name of a key needs to be escaped

/defaultgamemode, /gamemode

  • Now only accepts string IDs, not shorthand or numeric
  • /gamemode 2¬†->¬†/gamemode adventure
  • /defaultgamemode sp¬†->¬†/defaultgamemode spectator

/difficulty

  • /difficulty <value>¬†now only accepts string IDs, not shorthand or numeric
  • /difficulty 2¬†->¬†/difficulty normal
  • /difficulty p¬†->¬†/difficulty peaceful
  • You can query for the current difficulty by using¬†/difficulty¬†without any arguments

/effect

  • The syntax of¬†/effect¬†has changed, to avoid ambiguity.
  • /effect <entity> <effect>¬†->¬†/effect give <entity> <effect>
  • /effect <entity> clear¬†->¬†/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

/enchant

  • Removed in favour of¬†/modifyitem

/entitydata

  • Removed in favour of¬†/data

/execute

  • /execute¬†has been completely reworked
  • Modifier subcommands 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 <x y z> <chained command>¬†executes a command using the position of¬†<x y z>
  • /execute align <axes> <chained command>¬†executes a command after aligning the current position to the block grid (axes¬†is any combination of¬†x¬†y¬†and¬†z)
  • Conditional subcommands can let you prevent the command from running at all:
  • /execute (if|unless) block <x y z> <block> <chained command>executes a command if (or unless)¬†<x y z>¬†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 matches¬†<source>‘s score
  • As replacement for¬†/stats, a new subcommand¬†store¬†lets you store the result of a command somewhere:
  • /execute store (result|success) (score|entity|block) ...
  • 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 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
  • We will try to make it clear somewhere what the expected result of each command is
  • For¬†store (result|success) score, the remaining syntax is:¬†<name> <objective> <chained command>
  • The value is stored into the scoreboard under¬†<name>¬†and¬†<objective>
  • The objective must exist, but unlike with¬†/stats¬†you don’t need to set an initial value for¬†<name>
  • For¬†store (result|success) block, the remaining syntax is:¬†<xyz> <path> (byte|double|float|int|long|short) <scale> <chained command>
  • The value is stored into the block at¬†<xyz>, into the nbt tag at¬†<path>after multiplying by¬†<scale>
  • For¬†store (result|success) entity, the remaining syntax is:¬†<target> <path> (byte|double|float|int|long|short) <scale> <chained command>
  • The value is stored into the entity¬†<target>, into the nbt tag at¬†<path>after multiplying by¬†<scale>
  • Does not work on players
  • You can chain all subcommands together
  • After every subcommand you need to write another subcommand
  • When you’re done with chaining subcommands,¬†run¬†lets you write the actual command to be executed
  • /execute as somebody at somebody run say hi
  • Example of old commands:
  • /execute @e ~ ~ ~ detect ~ ~ ~ stone 0 say Stone!¬†->¬†/execute as @e at @s if block ~ ~ ~ stone run say Stone!
  • /execute @e ~ ~ ~ detect ~ ~ ~ grass summon pig¬†->¬†/execute at @e if block ~ ~ ~ grass run summon pig
  • /execute @e ~ ~ ~ say Hello!¬†->¬†/execute as @e run say Hello!

/experience

  • /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)
  • You 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>

/fill

  • The syntax of¬†/fill¬†has changed
  • /fill <x y z> <xt yt zt> <block> <data> replace [<replaceBlock>] [<replaceData>]¬†->¬†/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>]¬†->¬†/fill <x y z> <xt yt zt> <block> [destroy|hollow|keep|outline|replace]
  • See the block argument type for more details

/function

  • No longer has optional¬†(if|unless) <entity>¬†arguments.
  • This has been moved into¬†/execute
  • /function foo if @e[tag=bar]¬†->¬†/execute if entity @e[tag=bar] run function foo

/gamerule

  • /gamerule¬†no longer accepts unknown rules (“custom gamerules”)
  • It was causing more problems than it was worth, with people mistyping rules and it looks official
  • It was very error-prone and difficult to use
  • You can use functions or scoreboards as replacements, with no loss of functionality (actually – more!)
  • 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)

/give

  • The syntax of¬†/give¬†has changed
  • /give <players> <item> [<count>] [<data>] [<nbt>]¬†->¬†/give <players> <item> [<count>]
  • See the item argument type for more details

/modifyitem

  • This is a new command that replaces¬†/enchant
  • We don’t know how it looks yet.

/replaceitem

  • The syntax of¬†/replaceitem¬†has changed
  • /replaceitem block <pos> <slot> <item> [<count>] [<data>] [<nbt>]¬†->¬†/replaceitem block <pos> <slot> <item> [<count>]
  • /replaceitem entity <target> <slot> <item> [<count>] [<data>] [<nbt>]¬†->¬†/replaceitem entity <target> <slot> <item> [<count>]
  • See the item argument type for more details

/scoreboard

  • /scoreboard¬†had¬†[<dataTag>]¬†removed from its commands, as they’re no longer needed
  • See the entity selector argument type for more details
  • /scoreboard team¬†is now¬†/team
  • /scoreboard players tag¬†is now¬†/tag
  • /scoreboard players test¬†is removed in favourite of entity selectors
  • There is a new¬†/scoreboard players get <target> <objective>¬†to query for specific scores

/setblock

  • The syntax of¬†/setblock¬†has changed
  • /setblock <pos> <block> [<data>] [<mode>] [<nbt>]¬†->¬†/setblock <pos> <block> [<mode>]
  • See the block argument type for more details

/stats

  • Removed. Now part of¬†/execute
  • The new¬†/execute¬†one isn’t a direct replacement, the behaviour has changed:
  • It’s now per-command, instead of per-entity or per-block
  • There’s only¬†result¬†and¬†success, which covers all the old stat types

/stopsound

  • *¬†can be used instead of source to stop all sounds with a certain name, across all sources

/testfor, /testforblock, /testforblocks

  • Removed. Now part of¬†/execute

/toggledownfall

  • Removed. It was always used to stop the rain, then make you frustrated in a minute when it’s raining again.
  • Use¬†/weather

/tp, /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 behaviour of¬†/teleport

/trigger

  • /trigger <objective>¬†is a new syntax as shortcut for¬†/trigger <objective> add 1

/weather

  • If you don’t specify a time, it now defaults to 5 minutes (previously random)

COMMAND BLOCKS

  • The output signal of a command block used to be it’s “success count”, but now it’s “result”

ARGUMENT TYPES

ENTITY SELECTORS (IE @E[..])

  • More error handling has been introduced to help you find potential bugs. Things like¬†limit=0,¬†level=-10,¬†gamemode=purple¬†aren’t allowed because it makes no sense.
  • 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
  • x¬†&¬†z¬†are no longer center-corrected (x=0¬†isn’t¬†x=0.5¬†anymore). They now support doubles, so use¬†x=0.5¬†if that’s what you wanted.
  • gamemode¬†(previously¬†m) no longer allows numerical or shorthand IDs, which were deprecated years ago.
  • 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
  • limit¬†(was¬†c) No longer allows negative values, instead use¬†sort=furthest
  • x,¬†y,¬†z,¬†distance¬†(was¬†r),¬†x_rotation¬†(was¬†rx) and¬†y_rotation¬†(was¬†ry) are now doubles and allow values like¬†12.34
  • Allow spaces!¬†@e[name="Hello World"]
  • Supports NBT!¬†@e[nbt={Cool:1b},nbt=!{Uncool:1b}]
  • Where sensible, repeat-arguments are allowed
  • 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
  • You can specify the sorting
  • sort=nearest¬†is the old default, sorting by distance (default for¬†@p)
  • sort=furthest¬†is the reverse of that (previously you’d 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}
  • You 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)

BLOCKS

  • Wherever a block, data and optionally nbt was required, it’s 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¬†doesn’t have¬†doesntexist
  • minecraft:redstone_wire[power=tuesday]¬†is a syntax error, because¬†redstone_wire‘s¬†power¬†is a number between 0 and 15
  • NBT tag is inside {}, and works just like you’d expect. It’s optional.
  • In the context of “conditions”/testing for blocks, only the states you provided will be tested.
  • If you test¬†redstone_wire[power=15], it only checks¬†power¬†but ignores other states such as¬†north.
  • In the context of setting blocks, any states you provided will be set but anything missed out will default depending on the block.
  • If you 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. It’s either a different blocks, or a state.

ITEMS

  • Wherever an item and optionally nbt was required, it’s 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:)
  • NBT tag is inside {}, and works just like you’d expect. It’s optional.
  • There is no such thing as¬†item data value¬†or¬†item damage value¬†in 1.13
  • Damage, where applicable, is being moved into nbt
  • Any other information is either a separate item or a property in nbt

INSTALL THE SNAPSHOT

Please report any and all bugs you find in Minecraft to¬†bugs.mojang.com. If nobody reports a bug, we can’t fix it!

To get snapshots, open your launcher and go to the “launch options” tab. Check the box saying “Enable snapshots” and save. To switch between the snapshot and normal version, you can find a new dropdow menu next to the “Play” button. Back up your world first or run the game on in a different folder (In the “launch options” page).

Snapshots can corrupt your world, please backup and/or run them in a different folder from your main worlds.

Cross-platform server jar: Minecraft server jar