This feature is exclusive to Java Edition.
Gives or takes an advancement from one or more players.
advancement (grant|revoke) <targets> everything
- Adds or removes all loaded advancements.
advancement (grant|revoke) <targets> only <advancement> [<criterion>]
- Adds or removes a single advancement or criterion.
advancement (grant|revoke) <targets> from <advancement>
- Adds or removes an advancement and all its children advancements.
- Think of specifying everything from that advancement to the end.
- The exact order the operation is carried out in is
specified advancement > child > child's child > ...When it operates on a child that branches, it iterates through all its children before continuing.
advancement (grant|revoke) <targets> through <advancement>
- Specifies an advancement, and adds or removes all its parent advancements, and all its children advancements.
- Think of specifying everything through the specified advancement, going both backwards and forwards.
- The exact order the operation is as if the command were executed with "until" specified, then with "from" specified:
parent > parent's parent > ... > root > specified advancement > child > child's child > ...
advancement (grant|revoke) <targets> until <advancement>
- Adds or removes an advancement and all its parent advancements until the root for addition/removal.
- Think of specifying everything from the start until that advancement.
- The exact order the operation is carried out in is:
parent > parent's parent > ... > root > specified advancement.
- Specifies whether to add or remove the to-be-specified advancement(s).
- Specifies one player or more.
- Must be a player name, a target selector or a UUID. And the target selector must be of player type.
- Specifies a valid namespaced id of the advancement to target.
- Must be a resource location.
- Specifies a valid criterion of the advancement to manipulate.
- The command defaults to the entire advancement.
- If specified, the command refers to merely the criterion and not the entire advancement.
- Must be a string. And it is a greedy phrase (taking the rest of the command as the string argument).
|any||the arguments are not specified correctly||Unparseable|
|there's no advancement/criterion added to/remove from any player||Error|
|any||On success||grants or removes the specified advancement(s) or criterion(s) to the player(s).|
|any||Java Edition||On error||0||unchanged||unchanged|
|On success||1||1||the total number of advancements/criterions added to/removed from each player.|
- To grant the "Cover Me With Diamonds" advancement to your player, execute the command
/advancement grant @s only minecraft:story/shiny_gear.
- To grant all advancements to every player, execute
/advancement grant @a everything.