Instantly share code, notes, and snippets.

Embed
What would you like to do?
Minecraft Java Edition 1.13 changes
advancement grant <targets> everything
advancement grant <targets> from <advancement>
advancement grant <targets> only <advancement>
advancement grant <targets> only <advancement> <criterion>
advancement grant <targets> through <advancement>
advancement grant <targets> until <advancement>
advancement revoke <targets> everything
advancement revoke <targets> from <advancement>
advancement revoke <targets> only <advancement>
advancement revoke <targets> only <advancement> <criterion>
advancement revoke <targets> through <advancement>
advancement revoke <targets> until <advancement>
ban <targets>
ban <targets> <reason>
ban-ip <target>
ban-ip <target> <reason>
banlist
banlist ips
banlist players
blockdata <pos>
blockdata <pos> <nbt>
clear
clear <targets>
clear <targets> <item>
clear <targets> <item> <maxCount>
clone <begin> <end> <destination>
clone <begin> <end> <destination> filtered <filter>
clone <begin> <end> <destination> filtered <filter> force
clone <begin> <end> <destination> filtered <filter> move
clone <begin> <end> <destination> filtered <filter> normal
clone <begin> <end> <destination> masked
clone <begin> <end> <destination> masked force
clone <begin> <end> <destination> masked move
clone <begin> <end> <destination> masked normal
clone <begin> <end> <destination> replace
clone <begin> <end> <destination> replace force
clone <begin> <end> <destination> replace move
clone <begin> <end> <destination> replace normal
data get block <pos>
data get block <pos> <path>
data get block <pos> <path> <scale>
data get entity <target>
data get entity <target> <path>
data get entity <target> <path> <scale>
data merge block <pos> <nbt>
data merge entity <target> <nbt>
data remove block <pos> <path>
data remove entity <target> <path>
datapack disable <name>
datapack enable <name>
datapack enable <name> after <existing>
datapack enable <name> before <existing>
datapack enable <name> first
datapack enable <name> last
datapack list
datapack list available
datapack list enabled
debug start
debug stop
defaultgamemode adventure
defaultgamemode creative
defaultgamemode spectator
defaultgamemode survival
deop <targets>
difficulty
difficulty easy
difficulty hard
difficulty normal
difficulty peaceful
effect clear <targets>
effect clear <targets> <effect>
effect give <targets> <effect>
effect give <targets> <effect> <seconds>
effect give <targets> <effect> <seconds> <amplifier>
effect give <targets> <effect> <seconds> <amplifier> <hideParticles>
execute align <axes> -> execute
execute as <targets> -> execute
execute at <targets> -> execute
execute if block <pos> <block> -> execute
execute if blocks <start> <end> <destination> all
execute if blocks <start> <end> <destination> all -> execute
execute if blocks <start> <end> <destination> masked
execute if blocks <start> <end> <destination> masked -> execute
execute if entity <entities>
execute if entity <entities> -> execute
execute if score <target> <targetObjective> < <source> <sourceObjective>
execute if score <target> <targetObjective> < <source> <sourceObjective> -> execute
execute if score <target> <targetObjective> <= <source> <sourceObjective>
execute if score <target> <targetObjective> <= <source> <sourceObjective> -> execute
execute if score <target> <targetObjective> = <source> <sourceObjective>
execute if score <target> <targetObjective> = <source> <sourceObjective> -> execute
execute if score <target> <targetObjective> > <source> <sourceObjective>
execute if score <target> <targetObjective> > <source> <sourceObjective> -> execute
execute if score <target> <targetObjective> >= <source> <sourceObjective>
execute if score <target> <targetObjective> >= <source> <sourceObjective> -> execute
execute offset <pos> -> execute
execute run ...
execute store result block <pos> <path> byte <scale> -> execute
execute store result block <pos> <path> double <scale> -> execute
execute store result block <pos> <path> float <scale> -> execute
execute store result block <pos> <path> int <scale> -> execute
execute store result block <pos> <path> long <scale> -> execute
execute store result block <pos> <path> short <scale> -> execute
execute store result entity <target> <path> byte <scale> -> execute
execute store result entity <target> <path> double <scale> -> execute
execute store result entity <target> <path> float <scale> -> execute
execute store result entity <target> <path> int <scale> -> execute
execute store result entity <target> <path> long <scale> -> execute
execute store result entity <target> <path> short <scale> -> execute
execute store result score <targets> <objective> -> execute
execute store success block <pos> <path> byte <scale> -> execute
execute store success block <pos> <path> double <scale> -> execute
execute store success block <pos> <path> float <scale> -> execute
execute store success block <pos> <path> int <scale> -> execute
execute store success block <pos> <path> long <scale> -> execute
execute store success block <pos> <path> short <scale> -> execute
execute store success entity <target> <path> byte <scale> -> execute
execute store success entity <target> <path> double <scale> -> execute
execute store success entity <target> <path> float <scale> -> execute
execute store success entity <target> <path> int <scale> -> execute
execute store success entity <target> <path> long <scale> -> execute
execute store success entity <target> <path> short <scale> -> execute
execute store success score <targets> <objective> -> execute
execute unless block <pos> <block> -> execute
execute unless blocks <start> <end> <destination> all
execute unless blocks <start> <end> <destination> all -> execute
execute unless blocks <start> <end> <destination> masked
execute unless blocks <start> <end> <destination> masked -> execute
execute unless entity <entities>
execute unless entity <entities> -> execute
execute unless score <target> <targetObjective> < <source> <sourceObjective>
execute unless score <target> <targetObjective> < <source> <sourceObjective> -> execute
execute unless score <target> <targetObjective> <= <source> <sourceObjective>
execute unless score <target> <targetObjective> <= <source> <sourceObjective> -> execute
execute unless score <target> <targetObjective> = <source> <sourceObjective>
execute unless score <target> <targetObjective> = <source> <sourceObjective> -> execute
execute unless score <target> <targetObjective> > <source> <sourceObjective>
execute unless score <target> <targetObjective> > <source> <sourceObjective> -> execute
execute unless score <target> <targetObjective> >= <source> <sourceObjective>
execute unless score <target> <targetObjective> >= <source> <sourceObjective> -> execute
experience add <targets> <amount>
experience add <targets> <amount> levels
experience add <targets> <amount> points
experience query <targets> levels
experience query <targets> points
experience set <targets> <amount>
experience set <targets> <amount> levels
experience set <targets> <amount> points
fill <from> <to> <block>
fill <from> <to> <block> destroy
fill <from> <to> <block> hollow
fill <from> <to> <block> keep
fill <from> <to> <block> outline
fill <from> <to> <block> replace
fill <from> <to> <block> replace <filter>
function <name>
gamemode adventure
gamemode adventure <target>
gamemode creative
gamemode creative <target>
gamemode spectator
gamemode spectator <target>
gamemode survival
gamemode survival <target>
gamerule announceAdvancements
gamerule announceAdvancements <value>
gamerule commandBlockOutput
gamerule commandBlockOutput <value>
gamerule disableElytraMovementCheck
gamerule disableElytraMovementCheck <value>
gamerule doDaylightCycle
gamerule doDaylightCycle <value>
gamerule doEntityDrops
gamerule doEntityDrops <value>
gamerule doFireTick
gamerule doFireTick <value>
gamerule doLimitedCrafting
gamerule doLimitedCrafting <value>
gamerule doMobLoot
gamerule doMobLoot <value>
gamerule doMobSpawning
gamerule doMobSpawning <value>
gamerule doTileDrops
gamerule doTileDrops <value>
gamerule doWeatherCycle
gamerule doWeatherCycle <value>
gamerule gameLoopFunction
gamerule gameLoopFunction <value>
gamerule keepInventory
gamerule keepInventory <value>
gamerule logAdminCommands
gamerule logAdminCommands <value>
gamerule maxCommandChainLength
gamerule maxCommandChainLength <value>
gamerule maxEntityCramming
gamerule maxEntityCramming <value>
gamerule mobGriefing
gamerule mobGriefing <value>
gamerule naturalRegeneration
gamerule naturalRegeneration <value>
gamerule randomTickSpeed
gamerule randomTickSpeed <value>
gamerule reducedDebugInfo
gamerule reducedDebugInfo <value>
gamerule sendCommandFeedback
gamerule sendCommandFeedback <value>
gamerule showDeathMessages
gamerule showDeathMessages <value>
gamerule spawnRadius
gamerule spawnRadius <value>
gamerule spectatorsGenerateChunks
gamerule spectatorsGenerateChunks <value>
give <targets> <item>
give <targets> <item> <count>
help
help <command>
kick <targets>
kick <targets> <reason>
kill <targets>
list
locate EndCity
locate Fortress
locate Mansion
locate Mineshaft
locate Monument
locate Stronghold
locate Temple
locate Village
me <action>
msg <targets> <message>
op <targets>
pardon <targets>
pardon-ip <target>
particle <name>
particle <name> <pos> <delta> <speed> <count>
particle <name> <pos> <delta> <speed> <count> force
particle <name> <pos> <delta> <speed> <count> force <viewers>
particle <name> <pos> <delta> <speed> <count> normal
particle <name> <pos> <delta> <speed> <count> normal <viewers>
playsound <sound> ambient <targets>
playsound <sound> ambient <targets> <pos>
playsound <sound> ambient <targets> <pos> <volume>
playsound <sound> ambient <targets> <pos> <volume> <pitch>
playsound <sound> ambient <targets> <pos> <volume> <pitch> <minVolume>
playsound <sound> block <targets>
playsound <sound> block <targets> <pos>
playsound <sound> block <targets> <pos> <volume>
playsound <sound> block <targets> <pos> <volume> <pitch>
playsound <sound> block <targets> <pos> <volume> <pitch> <minVolume>
playsound <sound> hostile <targets>
playsound <sound> hostile <targets> <pos>
playsound <sound> hostile <targets> <pos> <volume>
playsound <sound> hostile <targets> <pos> <volume> <pitch>
playsound <sound> hostile <targets> <pos> <volume> <pitch> <minVolume>
playsound <sound> master <targets>
playsound <sound> master <targets> <pos>
playsound <sound> master <targets> <pos> <volume>
playsound <sound> master <targets> <pos> <volume> <pitch>
playsound <sound> master <targets> <pos> <volume> <pitch> <minVolume>
playsound <sound> music <targets>
playsound <sound> music <targets> <pos>
playsound <sound> music <targets> <pos> <volume>
playsound <sound> music <targets> <pos> <volume> <pitch>
playsound <sound> music <targets> <pos> <volume> <pitch> <minVolume>
playsound <sound> neutral <targets>
playsound <sound> neutral <targets> <pos>
playsound <sound> neutral <targets> <pos> <volume>
playsound <sound> neutral <targets> <pos> <volume> <pitch>
playsound <sound> neutral <targets> <pos> <volume> <pitch> <minVolume>
playsound <sound> player <targets>
playsound <sound> player <targets> <pos>
playsound <sound> player <targets> <pos> <volume>
playsound <sound> player <targets> <pos> <volume> <pitch>
playsound <sound> player <targets> <pos> <volume> <pitch> <minVolume>
playsound <sound> record <targets>
playsound <sound> record <targets> <pos>
playsound <sound> record <targets> <pos> <volume>
playsound <sound> record <targets> <pos> <volume> <pitch>
playsound <sound> record <targets> <pos> <volume> <pitch> <minVolume>
playsound <sound> voice <targets>
playsound <sound> voice <targets> <pos>
playsound <sound> voice <targets> <pos> <volume>
playsound <sound> voice <targets> <pos> <volume> <pitch>
playsound <sound> voice <targets> <pos> <volume> <pitch> <minVolume>
playsound <sound> weather <targets>
playsound <sound> weather <targets> <pos>
playsound <sound> weather <targets> <pos> <volume>
playsound <sound> weather <targets> <pos> <volume> <pitch>
playsound <sound> weather <targets> <pos> <volume> <pitch> <minVolume>
publish
publish <port>
recipe give <targets> *
recipe give <targets> <recipe>
recipe take <targets> *
recipe take <targets> <recipe>
reload
replaceitem block <pos> <slot> <item>
replaceitem block <pos> <slot> <item> <count>
replaceitem entity <targets> <slot> <item>
replaceitem entity <targets> <slot> <item> <count>
save-all
save-all flush
save-off
save-on
say <message>
scoreboard objectives add <objective> <criteria>
scoreboard objectives add <objective> <criteria> <displayName>
scoreboard objectives list
scoreboard objectives remove <objective>
scoreboard objectives setdisplay <slot>
scoreboard objectives setdisplay <slot> <objective>
scoreboard players add <targets> <objective> <score>
scoreboard players enable <targets> <objective>
scoreboard players get <target> <objective>
scoreboard players list
scoreboard players list <target>
scoreboard players operation <targets> <targetObjective> <operation> <source> <sourceObjective>
scoreboard players remove <targets> <objective> <score>
scoreboard players reset <targets>
scoreboard players reset <targets> <objective>
scoreboard players set <targets> <objective> <score>
seed
setblock <pos> <block>
setblock <pos> <block> destroy
setblock <pos> <block> keep
setblock <pos> <block> replace
setidletimeout <seconds>
setworldspawn
setworldspawn <pos>
spawnpoint
spawnpoint <targets>
spawnpoint <targets> <pos>
spreadplayers <center> <spreadDistance> <maxRange> <respectTeams> <targets>
stop
stopsound <targets>
stopsound <targets> * <sound>
stopsound <targets> ambient
stopsound <targets> ambient <sound>
stopsound <targets> block
stopsound <targets> block <sound>
stopsound <targets> hostile
stopsound <targets> hostile <sound>
stopsound <targets> master
stopsound <targets> master <sound>
stopsound <targets> music
stopsound <targets> music <sound>
stopsound <targets> neutral
stopsound <targets> neutral <sound>
stopsound <targets> player
stopsound <targets> player <sound>
stopsound <targets> record
stopsound <targets> record <sound>
stopsound <targets> voice
stopsound <targets> voice <sound>
stopsound <targets> weather
stopsound <targets> weather <sound>
summon <entity>
summon <entity> <pos>
summon <entity> <pos> <nbt>
tag <targets> add <name>
tag <targets> list
tag <targets> remove <name>
team add <team>
team add <team> <displayName>
team empty <team>
team join <team>
team join <team> <members>
team leave <members>
team list
team list <team>
team option <team> collisionRule always
team option <team> collisionRule never
team option <team> collisionRule pushOtherTeams
team option <team> collisionRule pushOwnTeam
team option <team> color <value>
team option <team> deathMessageVisibility always
team option <team> deathMessageVisibility hideForOtherTeams
team option <team> deathMessageVisibility hideForOwnTeam
team option <team> deathMessageVisibility never
team option <team> friendlyfire <allowed>
team option <team> nametagVisibility always
team option <team> nametagVisibility hideForOtherTeams
team option <team> nametagVisibility hideForOwnTeam
team option <team> nametagVisibility never
team option <team> seeFriendlyInvisibles <allowed>
team remove <team>
teleport <destination>
teleport <location>
teleport <location> <rotation>
teleport <targets> <destination>
teleport <targets> <location>
teleport <targets> <location> <rotation>
tell -> msg
tellraw <targets> <message>
time add <time>
time query day
time query daytime
time query gametime
time set day
time set night
time set <time>
title <targets> actionbar <title>
title <targets> clear
title <targets> reset
title <targets> subtitle <title>
title <targets> times <fadeIn> <stay> <fadeOut>
title <targets> title <title>
tp -> teleport
trigger <objective>
trigger <objective> add <value>
trigger <objective> set <value>
w -> msg
weather clear
weather clear <duration>
weather rain
weather rain <duration>
weather thunder
weather thunder <duration>
whitelist add <targets>
whitelist list
whitelist off
whitelist on
whitelist reload
whitelist remove <targets>
worldborder add <distance>
worldborder add <distance> <time>
worldborder center <pos>
worldborder damage amount <damagePerBlock>
worldborder damage buffer <distance>
worldborder get
worldborder set <distance>
worldborder set <distance> <time>
worldborder warning distance <distance>
worldborder warning time <time>
xp -> experience

This isn't finished and I will update this occasionally, as new things appear.

No change is final and we will continue to go through your feedback and suggestions to figure out the best solution for commands. I have also not yet finished porting every command to the new system, so some parts may be incomplete until I get to it.

Last updated: 2017-11-15

Files

Moved files

  • Files in (world)/data/advancements/(namespace)/(file) will need to be moved to inside data pack as data/(namespace)/advancements/(file)
  • Files in (world)/data/functions/namespace)/(file) will need to be moved to inside a data pack as data/(namespace)/functions/(file)
  • Files in (world)/data/loot_tables/(namespace)/(file) will need to be moved to inside a data pack as data/(namespace)/loot_tables/(file)
  • Files in (world)/structures/(file) will need to be moved to inside a data pack as data/(namespace)/structures/(file)

Data Packs

  • Data packs are zips or folders with a pack.mcmeta in the root. See http://minecraft.gamepedia.com/Tutorials/Creating_a_resource_pack#pack.mcmeta
  • Multiple data packs can be loaded at the same time, or none at all (disable vanilla for a boring game!)
  • Structures are now namespaced. Please use your own namespace for all custom structures in the future. Default namespace is always minecraft, which will cause conflicts later.
  • Structures are saved to (world)/generated/(namespace)/structures/(file).nbt. They will also load from here before checking data packs. However, you should not use this to distribute structures and instead move them from out of here and into data packs.
  • See this blog post for more information

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

/datapack

  • New command to control loaded data packs
  • Has the following subcommands:
  • enable <name> - will enable the specific pack
  • disable <name> - will disable the specific pack
  • list [available|enabled] - will list all data packs, or only the available/enabled ones
  • Data packs are enabled by default, but if you disable it you can reenable it with these commands:
  • enable <name> - will enable the specific pack, putting it in its default position
  • enable <name> first - will enable the specific pack, putting it before any other pack (lowest priority)
  • enable <name> last - will enable the specific pack, putting it after any other pack (highest priority)
  • enable <name> before <existing> - will enable the specific pack, putting it before (lower priority) <existing> pack
  • enable <name> after <existing> - will enable the specific pack, putting it after (higher priority) <existing> pack

/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
@tryashtar

This comment has been minimized.

tryashtar commented Jul 21, 2017

xp <experience: int> <entities: entities>

Should this not be <players: players> instead?

@pca006132

This comment has been minimized.

pca006132 commented Jul 21, 2017

First, shouldn't those <target: entities> in those scoreboard commands be either player names and entities? As the system should support what so called fake players as well.

Also, for the scoreboard players test

scoreboard players test <target: entities> <objective: string> <min: int> <max: int>

The <min: int> can be * to neglect the min value.

@tryashtar

This comment has been minimized.

tryashtar commented Jul 22, 2017

Also, max is optional at the moment (and can also be *, which does the same as leaving it off)

@FVbico

This comment has been minimized.

FVbico commented Jul 24, 2017

Aside from the things mentioned above;
Didn't you add an effect argument for clear?
effect clear <entities: entities> <effect: id>
also you're missing 2 variants of /scoreboard objectives:
scoreboard objectives add <objective: string> <criteria: id>
scoreboard objectives setdisplay <slot: id> <objective: string>

@MrYurihi

This comment has been minimized.

MrYurihi commented Aug 3, 2017

Is this still being updated?

@FVbico

This comment has been minimized.

FVbico commented Aug 7, 2017

you seem to accidentally(?) have removed the reload command

@ivancr72

This comment has been minimized.

ivancr72 commented Aug 9, 2017

What's save-all, /save-all flush, /save-off and /save-on?

@tryashtar

This comment has been minimized.

tryashtar commented Aug 9, 2017

Server commands, perhaps some of the oldest ones

@liach

This comment has been minimized.

liach commented Aug 18, 2017

So are recipes going to be meta aware or not?

@duuuuudehpk

This comment has been minimized.

duuuuudehpk commented Aug 19, 2017

I don't think you should remove the functionality of /tp
I think you should do something like this:
/teleport target should tp relative to the target.
/teleport executor should tp relative to the executor (this should be default if not specified)
Otherwise, you'd have to go /execute at then teleport @s , which I think is needlessly complicated
That's just my opinion though.

@kaenganxt

This comment has been minimized.

kaenganxt commented Aug 24, 2017

I kinda agree with duuuuudehpk. The /tp command is such an old one, where really everyone knows how it works, so i think the difference between /teleport and /tp should be kept like it is just to avoid confusion (Mainly in the custom server community).

@tryashtar

This comment has been minimized.

tryashtar commented Aug 31, 2017

Can I get some insight on the technical difference between target and victim? As you said the syntax string is generated automatically, there has to be some kind of distinction.

@MrYurihi

This comment has been minimized.

MrYurihi commented Sep 10, 2017

Don't think there is a differnece @tryashtar

@ghost

This comment has been minimized.

ghost commented Sep 11, 2017

Can we have a way to give potion effects for a number of ticks rather than seconds. It can be painful to try and give an effect depending on a condition if the player or entity has the effect for a second after it doesn't need it.

Also could we have a way to add custom game rules for our data packs maybe using pack.mcmeta
and or being able to specify a scoreboard in a function.

e.g.
function myfunction <criteria1: int> <criteria2: int> ...

values written in criteria1 and criteria2 would be saved in scoreboards

So a running function myfunction 7 99
would be the same as running

scoreboard players set @s criteria1 7
scoreboard players set @s criteria2 99
function myfunction
@MrYurihi

This comment has been minimized.

MrYurihi commented Sep 11, 2017

or you could acess the values bye using %1 or something like that

@MrYurihi

This comment has been minimized.

MrYurihi commented Sep 11, 2017

You missed scoreboard objectives setdisplay <slot: id> <objective: string>

@MrYurihi

This comment has been minimized.

MrYurihi commented Sep 12, 2017

the teleport command should be split like so:

teleport <pos: x y z> -> tp block <pos: x y z>
teleport <pos: x y z> <rotation: x y> -> tp block <pos: x y z> <rotation: x y>
teleport <target: entity> -> tp entity <target: entity>
teleport <victims: entities> <pos: x y z> -> teleport block <victims: entities> <pos: x y z>
teleport <victims: entities> <pos: x y z> <rotation: x y> -> teleport block <victims: entities> <pos: x y z> <rotation: x y>
teleport <victims: entities> <target: entity> -> teleport entity <victims: entities> <target: entity>

so tp would teleport the executor, and teleport would teleport the specified entity

@FVbico

This comment has been minimized.

FVbico commented Sep 22, 2017

MrYurihi, kaenganxt, duuuuudehpk, that is not going to happen, the way most people use it is just

tp player

and

tp player player2

which will still work like before; tp is the only inconsistent command in the game right now with it's relativeness to the target, and since 1.13 will mess up everything technical for everybody anyway, this is FINALLY (should have happened back in 1.10) been made consistent with all other commands. want relative to the target, use /execute.

@MrYurihi

This comment has been minimized.

MrYurihi commented Nov 8, 2017

It would be good if the names of the arguments would be consistent, like sometimes coords are called pos, whereas sometimes they are called x y z

@M4GNV5

This comment has been minimized.

M4GNV5 commented Nov 8, 2017

Please add bitwise operations to scoreboard players operation. Namely and, or, xor, shift left, shift right and arithmetic shift. pow would be great too.

Thanks!

@StupidSancho

This comment has been minimized.

StupidSancho commented Nov 10, 2017

i need to /give diamond_sword but with NBT tag Damage:5 - i tried "/give @p diamond_sword{Damage:5} 1" - but it's still none damaged. what i must do?
2017-11-10_21-18-48
2017-11-10_21-18-55

@Teixon

This comment has been minimized.

Teixon commented Nov 11, 2017

@StupidSancho I think the only way right now is to summon an item and set its damage in its NBT-Data.
Ex: /summon item ~ ~ ~ {Item:{id:"planks",Damage:1}}

@liach

This comment has been minimized.

liach commented Nov 30, 2017

@Dinnerbone Will there be immutable item stacks? People are often confused if a returned item stack is already a copy or if it is an original one that can be modified.

@swssqewe12

This comment has been minimized.

swssqewe12 commented Dec 22, 2017

Since /xp query <player> (points|levels) is now available, there is no need for the xp criteria anymore for scoreboards.

@Kukushenok

This comment has been minimized.

Kukushenok commented Mar 31, 2018

PLZ add /data merge ACCESSIBLE FOR PLAYERS (edit nbt data of player)!!! THAT WILL BE SO COOL! (i thing now /execute is the best command ever)

@mattcarter11

This comment has been minimized.

mattcarter11 commented Apr 8, 2018

I think the now taht you have changed the whay you detect nbt tags on players, you can't no longer detec if it has an item in the inventory.

I have tryed:
/scoreboard players set @A[nbt={Inventory:[{Slot:9b,tag:{display:{Name:"Blazing Orb"}}}]}] blazing.orb 1
/execute as @A[nbt={Inventory:[{Slot:9b,tag:{display:{Name:"Blazing Orb"}}}]}] and says it doesn't found any entity.
Since I've found a post on the internet saying taht this works. (I might also be doing something wrong).

@akoimeexx

This comment has been minimized.

akoimeexx commented May 22, 2018

/data - "merge acts the same as /entitydata//blockdata used to. Merges new NBT onto the target."

No, it doesn't. If the specified is more than one it fails. Could not silence groups of zombies while testing in a creative world using /data merge @e[type=minecraft:zombie] {Silent:1}

Edit: To further clarify, /entitydata @e[type=minecraft:zombie] {Silent:1} would silence all zombies found. Usually combined this with a selector like r to only hit a specific group. My understanding is distance is the new replacement for r, but I still get a "more than one target" error, which is just frustrating.

@MiniGalexy

This comment has been minimized.

MiniGalexy commented Jul 5, 2018

I have to say I wouldn't call it the Aquatic Update
I call it the Command Update

@Nightfury181

This comment has been minimized.

Nightfury181 commented Jul 16, 2018

Now what if i want to test if an item is undamaged ie in floor crafting i need it to make sure if a player drops an item that is damaged it wont work but if it is undamaged it will. in 1.12 i'd use Damage:0 but that doesn't work anymore.. any ideas/ fixes/ workarounds?????
this is the command
/execute at @e[type=item,nbt={Item:{id:"minecraft:tnt",Count:16b}}] run execute at @e[type=item,nbt={Item:{id:"minecraft:bow",Count:1b,tag:{Damage:0}}}] run summon item ~ ~2.5 ~ {Item:{id:"minecraft:bow",Count:1b,tag:{display:{Name:"{"text":"TNT Bow"}",Lore:["Eplosive Arrow Shooter"]},Tnt:1b}}}
it just cant find the bow with a Damage:0 value

@Loquos

This comment has been minimized.

Loquos commented Jul 19, 2018

According to the above notes, I should be able to take this command

/give @p torch 5 0 {display:{Name:"Scared of the Dark”}}

and rewrite it as this

/give @p minecraft:torch{display:{Name:”Scared of the Dark”}} 5

and it should give the nearest player 5 torches with the name "Scared of the Dark". Instead, it gives them 5 torches, unnamed, and the command block doesn't indicate any errors.

What am I doing wrong here?

@Jill-Kitten

This comment has been minimized.

Jill-Kitten commented Jul 22, 2018

Just in my first day messing with the new command structure I keep coming up against these two problems:

1> 'display:{Name:"Whatever"}}' whether I am targeting, reading, or setting seems to have NO EFFECT as though I never specified it.

2> Even when I am trying to target more than one entity/player with "@e", "@A", etc. I always get a "more than one target" error,.. if this is intended then what is the point of these types of selector systems outside of "@p", "@s", etc.?

P.S. I also notice that when I create a horse like this:
summon minecraft:horse ~ ~1 ~ {Variant:4,Tame:1,SaddleItem:{id:saddle,Count:1},ArmorItem:{id:diamond_horse_armor,Count:1},Invulnerable:1b,PersistenceRequired:1b,Glowing:1,Attributes:[{Name:generic.movementSpeed,Base:0.8375},{Name:generic.knockbackResistance,Base:1.0},{Name:horse.jumpStrength,Base:3.0}]}
And then read the data, the data shows things like "Invulnerable" and "PersistenceRequired" to be Zero [0] or some other incorrect value but the behavior is still there as though they are actually set appropriately, except if I try to set 'display:{Name:"Whatever"}}' it does NOT take on the name and of coarse it does not show up in the read data.

@Jill-Kitten

This comment has been minimized.

Jill-Kitten commented Jul 22, 2018

Here's a question,.. the 'Entity Selectors' section states: "
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
"
So the question is then HOW do you select only cows and chickens and not any other entities?
Or say you have a list of entity types [could be large] you want to target while not targeting any other types?
Did everyone forget that there is a difference between 'Exclusive Or' and 'Inclusive Or' operations?
I hope you don't expect that a separate command has to be issued for every single type you want to target as this could become absurd and unless you can guarantee no other commands or events happen between the specified commands, there can also be issues with the fact of there being more than one command for the same operation on the different types.
Please tell me there is a way to target an array of types.... and if so then how so?

@tichoMC

This comment has been minimized.

tichoMC commented Jul 27, 2018

1.8.0 - 1.12.2
/entitydata @e[type=ArmorStand,r=5] {ShowArms:1}
/entitydata @e[type=ArmorStand,r=5] {NoBasePlate:1}
/entitydata @e[type=ArmorStand,r=5] {NoGravity:1}
/entitydata @e[type=ArmorStand,r=5] {Invisible:1}
/entitydata @e[type=ArmorStand,r=5] {Rotation:[0f,0f,0f]}

1.13
/summon minecraft:armor_stand ~ ~ ~ {NoBasePlate:1,ShowArms:1,Pose:{RightArm:[-60f,20f,-15f]},NoGravity:1,Rotation:[300f,50f,50f]}
de nada :D Este Comando les doy Por que Su Amigo Ticho soy Asta la próxima :D

@SilverStarSama

This comment has been minimized.

SilverStarSama commented Aug 6, 2018

Can I use the argument tag like @a[scores={Teleport_min=1}]?

@sazaxiv

This comment has been minimized.

sazaxiv commented Aug 20, 2018

How can I detect an item (in this case a tripwire hook) with a name and lore it in a specific block in adventure mode?

I have been trying to create a command that detects the hook in a chiseled stone brick but that is a hook with name "1" only, and that a "2" or "3" can not be placed in it.

and I've tried /execute if block 10 11 12 tripwire_hook {display: {Name: "1", Lore: ["key piece"]}} run setblock 13 20 42 stone

and the tripwire_hook called 1 with its lore and CanPlaceOn: chiseled_stone_bricks, but none of this works in adventure mode, neither in creative.

Excuse my English, but only speak Spanish, now I've been using a translator

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment