Skip to content

Instantly share code, notes, and snippets.

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

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-09-27

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/structures/(namespace)/(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.

Commands

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
  • Yes, it's incomplete. It's a list of commands that have so far been written into the new parser.
  • 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

Specific commands

/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

/defaultgamemode, /gamemode

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

/difficulty

  • /difficulty now only accepts string IDs, not shorthand or numeric
  • /difficulty 2 -> /difficulty normal
  • /difficulty p -> /difficulty peaceful

/effect

  • The syntax of /effect has changed, to avoid ambiguity.
  • /effect <entity> <effect> -> /effect give <entity> <effect>
  • /effect <entity> clear -> /effect clear <entity> [<effect>]

/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>
  • 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)
  • As replacement for /stats, a new subcommand store lets you store the result 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 you don'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
  • We will try to make it clear somewhere what the expected result of each command is
  • You can chain all subcommands together
  • After every subcommand you need to write another subcommand
  • When you're done with chaining subcommands, then lets you write the actual command to be executed
  • /execute as somebody at somebody then say hi
  • Example of old commands:
  • /execute @e ~ ~ ~ detect ~ ~ ~ stone 0 say Stone! -> /execute as @e at @s if block ~ ~ ~ stone then say Stone!
  • /execute @e ~ ~ ~ detect ~ ~ ~ grass summon pig -> /execute at @e if block ~ ~ ~ grass then summon pig
  • /execute @e ~ ~ ~ say Hello! -> /execute as @e then 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] then 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

/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

/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

/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

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 default and current behaviour (except for @r)
  • 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, which is useful if you're optimising commands and don't need sorting

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.

Copy link

commented Jul 21, 2017

xp <experience: int> <entities: entities>

Should this not be <players: players> instead?

@pca006132

This comment has been minimized.

Copy link

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.

Copy link

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.

Copy link

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.

Copy link

commented Aug 3, 2017

Is this still being updated?

@FVbico

This comment has been minimized.

Copy link

commented Aug 7, 2017

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

@ivancr72

This comment has been minimized.

Copy link

commented Aug 9, 2017

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

@tryashtar

This comment has been minimized.

Copy link

commented Aug 9, 2017

Server commands, perhaps some of the oldest ones

@liach

This comment has been minimized.

Copy link

commented Aug 18, 2017

So are recipes going to be meta aware or not?

@duuuuudehpk

This comment has been minimized.

Copy link

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.

Copy link

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.

Copy link

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.

Copy link

commented Sep 10, 2017

Don't think there is a differnece @tryashtar

@ghost

This comment has been minimized.

Copy link

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.

Copy link

commented Sep 11, 2017

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

@MrYurihi

This comment has been minimized.

Copy link

commented Sep 11, 2017

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

@MrYurihi

This comment has been minimized.

Copy link

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.

Copy link

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.

Copy link

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.

Copy link

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.

Copy link

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.

Copy link

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.

Copy link

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.

Copy link

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.

Copy link

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.

Copy link

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.

Copy link

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.

Copy link

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.

Copy link

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.

Copy link

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.

Copy link

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.

Copy link

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.

Copy link

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

@SilveryStar

This comment has been minimized.

Copy link

commented Aug 6, 2018

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

@sazaxiv

This comment has been minimized.

Copy link

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
You can’t perform that action at this time.