此特性為Java版獨有。
給予或移除玩家的進度。
語法[]
advancement (grant|revoke) <targets> everything
advancement (grant|revoke) <targets> only <advancement> [<criterion>]
advancement (grant|revoke) <targets> (from|through|until) <advancement>
參數[]
grant|revoke
- 要執行的動作,授予(grant)或移除(revoke)指定的進度。
<targets>
:entity
- 指定一個或多個玩家。必須為玩家名或目標選擇器。
- 不允許除了玩家以外的實體。
everything
- 操作玩家的全部已載入進度。
from
- 操作玩家的指定進度及其全部下游進度。
- 進度的遍歷順序是
指定進度 > 下游進度 > 下游進度的下游進度 > ……
,以DFS遍歷(即優先列舉節點的子節點,而後才列舉節點的兄弟節點)。 - 由於具體的進度樹取決於操作系統讀取檔案的方式,因此在不同操作系統上具體的遍歷順序不盡相同。
only
- 僅操作玩家的指定進度。
through
- 操作玩家的指定進度及其全部上游和下游進度。
- 進度的遍歷順序是
until
和from
的結合,首先進行until
,然後進行from
,即上游進度 > 上游進度的上游進度 > …… > 根進度 > 指定進度 > 下游進度 > 下游進度的下游進度 > ……
。
until
- 操作玩家的指定進度及其全部上游進度。
- 進度的遍歷順序是
上游進度 > 上游進度的上游進度 > …… > 根進度 > 指定進度
。
<advancement>
:resource_location
- 指定要給予、移除或檢測的進度。必須是有效進度識別符。
<criterion>
:string
- 指定要操作的進度的條件。必須是有效進度條件識別符。
- 預設是所有進度。
- 若指定,指令只會遵循該完成條件,而不是全部進度。
效果[]
指令 | 觸發條件 | Java版 |
---|---|---|
任意 | 參數不正確 | 無法解析 |
<targets> 未能解析出至少一個線上玩家 | 執行失敗 | |
沒有從任何玩家授予或移除進度或條件 | 執行出錯 | |
... only <advancement> <criterion> | 指定的<criterion> 對<advancement> 不可用 | |
任意 | 執行成功時 | 從玩家加入授予或移除進度或條件 |
輸出[]
指令 | 版本 | 條件 | 成功次數 | /execute store success ... | /execute store result ... |
---|---|---|---|---|---|
任意 | Java版 | 出錯時 | 0 | 不改變 | 不改變 |
失敗時 | 0 | 0 | 0 | ||
成功時 | 1 | 1 | 從每個玩家授予或移除的進度或條件總數 |
示例[]
- 授予自己「用鑽石包覆我」進度:
advancement grant @s only minecraft:story/shiny_gear
- 授予所有玩家所有進度:
advancement grant @a everything
歷史[]
Java版 | |||||
---|---|---|---|---|---|
1.12 | 17w13a | 加入了/advancement 指令。 | |||
1.13 | 17w45a | 移除了/advancement test 的用法,以應對實體選擇器的修改。 |
參見[]
語言