进度定义格式

来自Minecraft Wiki
跳转到导航 跳转到搜索
  提示:本条目的主题不是进度存储格式
本文章所述内容仅适用于Java版

进度(Advancement)是位于数据包中用于定义进度的技术性JSON文件。

文件夹结构[编辑 | 编辑源代码]

在数据包中,每个进度都由一个进度文件定义。以下的文件结构图展示了进度文件在数据包中的位置:

主格式[编辑 | 编辑源代码]

  • *: 若写明了其父字段,则该项是必须的。
  • NBT复合标签/JSON对象根标签
    • NBT复合标签/JSON对象*criteria:此进度的一系列准则。
    • NBT复合标签/JSON对象display:(可选)进度的显示信息
    • 字符串parent:(可选)此进度的上游进度的命名空间ID。若此项不存在,则此进度为根进度。循环引用上游进度将导致加载失败。
    • NBT列表/JSON数组requirements:(可选)定义了以上准则将如何达成。其中包含许多子列表,每一个子列表中都允许包含此进度中的若干准则(在所有的<准则名称>中)。完成或废除一个准则时,如果所有子列表中至少有一个准则达成,则进度达成。默认情况下(即此项不存在),进度达成需要保证每个准则都要达成。
      • NBT列表/JSON数组:在NBT列表/JSON数组requirements中的一个子列表,可包含若干<准则名称>。如果有任何一项子列表为空,则此进度不可达成,除非通过作弊。
        • 字符串:一项准则名称。
    • NBT复合标签/JSON对象rewards:(可选)进度达成后的奖励。
      • 整型experience:(可选,默认为0)完成进度后玩家将获得的经验值
      • 字符串function:(可选)完成进度后执行的函数,不支持函数标签。函数执行的效果与该玩家直接使用命令/function完全相同。
      • NBT列表/JSON数组loot:(可选)完成进度后给予玩家的战利品表
      • NBT列表/JSON数组recipes:(可选)完成进度后玩家将解锁的配方
    • 布尔型sends_telemetry_event:(可选,默认为false)实现此进度时是否应收集遥测数据。
战利品上下文参数 NBT复合标签/JSON对象NBT列表/JSON数组loot
origin 玩家位置
this_entity 玩家

显示[编辑 | 编辑源代码]

显示信息[编辑 | 编辑源代码]

显示信息的数据格式如下:

  • NBT复合标签/JSON对象display:进度的显示信息。
    • 布尔型announce_to_chat:(可选,默认为true)是否在完成此进度时在聊天窗口提示。
    • 字符串background:(可选,仅根进度可用,命名空间ID)进度所使用的背景平铺图片。实际将被解析为资源包文件路径<命名空间>/textures/<命名空间ID路径>.png
    • 字符串NBT复合标签/JSON对象NBT列表/JSON数组*description文本组件,表示该进度在进度界面中显示的描述信息。
    • 字符串frame:(可选,默认为task)图标边框的可选种类。challengegoaltask
    • 布尔型hidden:(可选,默认为false)是否在进度屏幕隐藏此进度以及其所有子进度,直到完成此进度。此项对根进度自身无效,但依然能影响其子进度。
    • NBT复合标签/JSON对象*icon:表示一个物品堆叠,用于显示进度的图标。
    • 布尔型show_toast:(可选,默认为true)是否在完成此进度后显示右上角的提示信息。
    • 字符串NBT复合标签/JSON对象NBT列表/JSON数组*title文本组件,表示该进度在进度界面中显示的标题。

一个进度只有满足以下情况之一才会显示在进度菜单中:

  • 此进度为根进度。
  • 此进度的上游进度已处于显示状态,此进度的NBT复合标签/JSON对象display被有效定义且布尔型hiddenfalse

进度选项卡[编辑 | 编辑源代码]

创建带有显示数据NBT复合标签/JSON对象display的根进度(不含字符串parent的进度)后将自动在进度菜单边缘创建一个选项卡。当游戏加载数据包后,若根进度所在的进度树中有任意进度被某玩家获取,则该根进度以及其选项卡都会显示给该玩家,且根进度和选项卡的图标一致。

根进度的背景图像不会影响选项卡的创建。若根进度未正确从字符串background加载图片,则背景默认显示为丢失纹理。

如果一个根进度成功创建了一个选项卡,它的子进度将会展示在该选项卡中(前提是该子进度拥有显示数据 字符串display)。

定位[编辑 | 编辑源代码]

在从数据包加载进度时,游戏会自动对进度进行排列,确定其位置,并将排列信息发送到客户端。每个进度都有从最近的可见上游进度指向它的箭头(即,如果其相邻的上游进度没有显示数据,则有从上游进度的上游进度指向它的箭头)。根进度出现在最左一列,每个箭头指向下一列中的进度。每一列中的进度基于其文件名排序。

缺省显示[编辑 | 编辑源代码]

有些进度(如原版中由配方解锁的进度)可能会省去显示数据,以便它们利用触发器和奖励来替代过多的命令函数并实现更多功能和更灵活的控制。通过省去NBT复合标签/JSON对象display数据,这些用于逻辑控制的进度不仅能被一般玩家忽略,还有助于获得更好的加载性能。

准则[编辑 | 编辑源代码]

  • *: 若写明了其父字段,则该项是必须的。
  • NBT复合标签/JSON对象<准则名称>:一项准则,此名称必须唯一。
    • 字符串*trigger:该准则的触发器命名空间ID。每种触发器都有其对应的触发情形和可检查条件。
    • NBT复合标签/JSON对象conditions:触发器被触发时,达成此准则需要满足的条件。与具体的触发器有关。
      • NBT复合标签/JSON对象player:一个实体谓词,玩家与谓词匹配后才能达成此准则,此项对于除minecraft:impossible外的触发器均可使用。
      • NBT列表/JSON数组player:“player”的另一种格式,为一个谓词列表。玩家与该列表中的谓词全部匹配后才能达成此准则。此项对于除minecraft:impossible外的触发器均可使用。
      • 其余的附加条件,取决于字符串trigger的值。详见下文
战利品上下文参数 NBT列表/JSON数组player
origin 玩家位置
this_entity 玩家

可用准则触发器[编辑 | 编辑源代码]

在游戏中总共定义了下列准则触发器:

注册名称 触发情形
allay_drop_item_on_block 悦灵确定待投掷的目标方块后,将物品投掷的瞬间对关联的玩家触发。
any_block_use 玩家与方块进行任何交互(包括默认交互,以及玩家不空手使用物品等方式)时触发。
avoid_vibration 振动因其来源玩家处于潜行状态而被忽略时触发。
bee_nest_destroyed 玩家破坏蜂巢(方块)蜂箱时触发。
bred_animals 两个动物繁殖时触发。
brewed_potion 玩家从酿造台中拿出一瓶药水时触发。
changed_dimension 玩家在两个维度间旅行时触发。
channeled_lightning 闪电束由引雷魔咒生成时对使用三叉戟的玩家触发。
construct_beacon 信标检测到基座结构更改时对范围内玩家触发。
consume_item 玩家消耗了带有consumable组件的物品后触发。
crafter_recipe_crafted 合成器将物品以实体形式掷出时对范围内玩家触发。
cured_zombie_villager 僵尸村民被治愈时对喂食其金苹果的玩家触发。
default_block_use 玩家在非潜行状态下空手与方块进行交互时触发。
effects_changed 玩家获得或消除状态效果时触发。
enchanted_item 玩家通过附魔台附魔物品时触发。
enter_block 游戏刻,玩家对与其碰撞箱相交的各个方块分别触发,或者玩家掷出的末影珍珠进入末地折跃门时触发。
entity_hurt_player 玩家受伤,即使伤害并不来源于某个实体时触发[1]
entity_killed_player 实体杀死玩家时触发。
fall_after_explosion 在玩家被爆炸风爆击飞后摔落时触发。
fall_from_height 玩家摔落至地面时触发。
filled_bucket 玩家填充铁桶时触发。
fishing_rod_hooked 玩家成功通过钓鱼获取物品或者使用钓鱼竿拉实体时触发。
hero_of_the_village 一场袭击胜利后对所有在该场袭击中击杀过至少一名袭击者的玩家触发。
impossible 无法触发,但可通过命令/advancement grant直接授予玩家仅包含该准则触发器的进度。
inventory_changed 玩家物品栏变化时触发。
item_durability_changed 玩家物品栏中任何物品以任何形式损害时触发。
item_used_on_block 玩家对方块空手或手持物品时进行某些使用操作时(详见下文)触发。
kill_mob_near_sculk_catalyst 幽匿催发体蔓延时对死亡生物的伤害来源玩家触发。
killed_by_arrow 杀死实体后对发射箭的玩家触发。
levitation 玩家带有飘浮状态效果时每游戏刻触发一次。
lightning_strike 闪电束消失时对范围内玩家触发。
location 所有玩家每20游戏刻(1秒)触发一次。
nether_travel 玩家从主世界进入下界后返回主世界时触发。
placed_block 玩家放置方块时触发。
player_generates_container_loot 玩家与可疑的方块容器交互并使之按照战利品表生成战利品时触发。
player_hurt_entity 玩家伤害实体(包括自己)时触发。
player_interacted_with_entity 玩家与实体交互时触发。
player_killed_entity 玩家杀死实体时触发。
recipe_crafted 玩家使用配方合成时触发。
recipe_unlocked 玩家解锁配方时触发。
ride_entity_in_lava 玩家骑乘位于熔岩上的实体时,每游戏刻触发一次。
shot_crossbow 玩家使用发射弹射物时触发。
slept_in_bed 玩家上睡觉时触发。
slide_down_block 玩家从蜂蜜块上滑下时触发。
started_riding 实体被骑乘时对所有玩家乘客触发。
summoned_entity 玩家召唤铁傀儡雪傀儡凋灵或复活末影龙时触发。
tame_animal 玩家驯服动物时触发。
target_hit 弹射物击中标靶时对发射的玩家触发。
thrown_item_picked_up_by_entity 实体捡起玩家扔出的物品时触发。
thrown_item_picked_up_by_player 玩家捡起实体扔出的物品时触发。
tick 游戏刻对所有玩家触发一次。
used_ender_eye 玩家使用末影之眼定位要塞时触发。
used_totem 玩家使用不死图腾时触发。
using_item 玩家使用“可持续使用”的物品(详见下文)时,每游戏刻触发一次。
villager_trade 玩家成交一项交易时触发。
voluntary_exile 玩家触发一场新的袭击时触发。

准则触发器[编辑 | 编辑源代码]

所有触发器均要求玩家在线,如果不在线,即使其之后重新加入服务器也不会再获得进度。

所有JSON字段默认均可选,除非标注了“*”。

allay_drop_item_on_block[编辑 | 编辑源代码]

悦灵确定待投掷的目标方块后,将物品投掷的瞬间触发。可用条件:

  • NBT复合标签/JSON对象conditions
    • NBT列表/JSON数组location:一个谓词列表,该列表中的谓词全部测试通过后才能达成此准则。
    • NBT复合标签/JSON对象NBT列表/JSON数组player:将要获得进度的玩家。详见上文
战利品上下文参数 NBT列表/JSON数组location
origin 要投掷到的方块的中心位置
this_entity 与悦灵关联的玩家
block_state 要投掷到的方块的方块状态
tool 悦灵所持有的物品

any_block_use[编辑 | 编辑源代码]

玩家与方块进行任何交互(包括默认交互,以及玩家不空手使用物品等方式)时触发。可用条件:

  • NBT复合标签/JSON对象conditions
    • NBT列表/JSON数组location:一个谓词列表,该列表中的谓词全部测试通过后才能达成此准则。
    • NBT复合标签/JSON对象NBT列表/JSON数组player:将要获得进度的玩家。详见上文
战利品上下文参数 NBT列表/JSON数组location
origin 交互的方块的中心位置
this_entity 玩家
block_state 交互的方块的方块状态
tool 交互时所使用的物品

avoid_vibration[编辑 | 编辑源代码]

当振动因其来源玩家处于潜行状态而被忽略时触发。可用条件:

  • NBT复合标签/JSON对象conditions
    • NBT复合标签/JSON对象NBT列表/JSON数组player:将要获得进度的玩家。详见上文

bee_nest_destroyed[编辑 | 编辑源代码]

玩家破坏蜂巢蜂箱时触发。可用条件:

bred_animals[编辑 | 编辑源代码]

两个动物繁殖时触发。可用条件:

  • NBT复合标签/JSON对象conditions
    • NBT复合标签/JSON对象child:繁殖出的动物。
    • NBT列表/JSON数组child:“child”的另一种格式,为一个谓词列表。该列表中的谓词全部测试通过后才能达成此准则。
    • NBT复合标签/JSON对象parent:双亲之一。
    • NBT列表/JSON数组parent:“parent”的另一种格式,为一个谓词列表。该列表中的谓词全部测试通过后才能达成此准则。
    • NBT复合标签/JSON对象partner:配偶,即双亲中的另一位实体。
    • NBT列表/JSON数组partner:“partner”的另一种格式,为一个谓词列表。该列表中的谓词全部测试通过后才能达成此准则。
    • NBT复合标签/JSON对象NBT列表/JSON数组player:将要获得进度的玩家。详见上文
战利品上下文参数 NBT复合标签/JSON对象NBT列表/JSON数组child、parent、partner
origin 玩家位置
this_entity 各条件对应的实体

brewed_potion[编辑 | 编辑源代码]

玩家从酿造台中拿出一瓶药水时触发。可用条件:

  • NBT复合标签/JSON对象conditions
    • 字符串potion:检查拿出的药水ID是否匹配。
    • NBT复合标签/JSON对象NBT列表/JSON数组player:将要获得进度的玩家。详见上文

changed_dimension[编辑 | 编辑源代码]

玩家在传送到另一个维度或死亡后在另一维度重生时触发。可用条件:

  • NBT复合标签/JSON对象conditions
    • 字符串from:实体原所在维度的命名空间ID,原版维度包含minecraft:overworld主世界)、minecraft:the_nether下界)或minecraft:the_end末地)。也可以使用数据包添加的其他维度。
    • 字符串to:实体到达的维度,同上。
    • NBT复合标签/JSON对象NBT列表/JSON数组player:将要获得进度的玩家,玩家位置按照其在目标维度的位置计算。详见上文

channeled_lightning[编辑 | 编辑源代码]

闪电束引雷魔咒生成时触发。可用条件:

  • NBT复合标签/JSON对象conditions
    • NBT列表/JSON数组victims:检查所有被闪电束击中的实体,为一个谓词或谓词列表的列表,列表中所有项都对其中至少一个实体测试通过时才能达成此准则。
    • NBT复合标签/JSON对象NBT列表/JSON数组player:将要获得进度的玩家。详见上文
战利品上下文参数 NBT列表/JSON数组victims
origin 玩家位置
this_entity 被闪电束击中的各个实体

construct_beacon[编辑 | 编辑源代码]

信标检测到基座结构更改时,如果更改后信标处于激活状态,且这个信标上方从第11格起没有任何方块,[2]则对信标中心位置水平切比雪夫距离10格内,垂直距离向上5格,向下9格内的所有玩家触发。可用条件:

consume_item[编辑 | 编辑源代码]

玩家消耗了带有consumable组件的物品后触发。可用条件:

crafter_recipe_crafted[编辑 | 编辑源代码]

合成器将物品以实体形式掷出时,对中心位置切比雪夫距离8.5格内的所有玩家触发。当一次性掷出多个物品时(如合成蛋糕的同时掷出3个铁桶),每1个物品均会触发一次。可用条件:

  • NBT复合标签/JSON对象conditions
    • 字符串*recipe_id:检查合成配方命名空间ID
    • NBT列表/JSON数组ingredients:一个物品谓词列表,检查合成使用的原材料,该列表中的谓词全部测试通过后才能达成此准则。
      每个物品谓词仅需对一个物品测试通过即可,且通过的物品之后不再参与测试,因此一个物品只能满足其中一个谓词。
      此触发器触发时,合成使用的原材料尚未被扣除,但相应的物品实体已经被投掷。
    • NBT复合标签/JSON对象NBT列表/JSON数组player:将要获得进度的玩家。详见上文

cured_zombie_villager[编辑 | 编辑源代码]

僵尸村民被治愈时,对喂食其金苹果的玩家触发。可用条件:

战利品上下文参数 NBT复合标签/JSON对象NBT列表/JSON数组villager NBT复合标签/JSON对象NBT列表/JSON数组zombie
origin 玩家位置 玩家位置
this_entity 转化后的村民 转化瞬间的僵尸村民

default_block_use[编辑 | 编辑源代码]

玩家在非潜行状态下空手与方块进行交互时触发。可用条件:

  • NBT复合标签/JSON对象conditions
    • NBT列表/JSON数组location:一个谓词列表。该列表中的谓词全部测试通过后才能达成此准则。
    • NBT复合标签/JSON对象NBT列表/JSON数组player:将要获得进度的玩家。详见上文
战利品上下文参数 NBT列表/JSON数组location
origin 交互的方块的中心位置
this_entity 玩家
block_state 交互的方块的方块状态

effects_changed[编辑 | 编辑源代码]

玩家获得/消除状态效果时触发。可用条件:

战利品上下文参数 NBT复合标签/JSON对象NBT列表/JSON数组entity
origin 玩家位置
this_entity 状态效果的来源实体,如果状态效果为玩家自己添加或移除的则此项不存在

enchanted_item[编辑 | 编辑源代码]

玩家通过附魔台附魔物品时触发。可用条件:

enter_block[编辑 | 编辑源代码]

游戏刻,玩家对与其碰撞箱相交的各个方块分别触发,或者玩家掷出的末影珍珠进入末地折跃门时对其触发。可用条件:

  • NBT复合标签/JSON对象conditions
    • 字符串block:检查方块的ID。
    • NBT复合标签/JSON对象state:检查方块的方块状态。
      • 字符串NBT复合标签/JSON对象<方块属性>:检查指定方块属性。如果方块不满足条件,那么测试会失败。可以为字符串或以两个数字字符串表示的数值区间。
        • 字符串min:数值的最小允许值。
        • 字符串max:数值的最大允许值。
    • NBT复合标签/JSON对象NBT列表/JSON数组player:将要获得进度的玩家。详见上文

entity_hurt_player[编辑 | 编辑源代码]

当玩家受到伤害,或阻挡所受到的伤害时触发。伤害并不一定来源于某个实体(比如被熔岩伤害)[1]。可用条件:

entity_killed_player[编辑 | 编辑源代码]

实体杀死玩家时触发。可用条件:

战利品上下文参数 NBT复合标签/JSON对象NBT列表/JSON数组entity
origin 玩家位置
this_entity 伤害的直接来源实体

fall_after_explosion[编辑 | 编辑源代码]

在玩家被爆炸风爆击飞后开始摔落时触发。可用条件:

战利品上下文参数 NBT复合标签/JSON对象cause
origin 玩家位置
this_entity 造成爆炸或风爆的实体

fall_from_height[编辑 | 编辑源代码]

玩家摔落至地面时触发。可用条件:

filled_bucket[编辑 | 编辑源代码]

玩家填充桶时触发,从炼药锅填充时不触发。[3]可用条件:

fishing_rod_hooked[编辑 | 编辑源代码]

玩家成功通过钓鱼获取物品或者使用钓鱼竿拉实体时触发。可用条件:

战利品上下文参数 NBT复合标签/JSON对象NBT列表/JSON数组entity
origin 玩家位置
this_entity 被拉的实体或浮漂

hero_of_the_village[编辑 | 编辑源代码]

一场袭击胜利后对所有在该场袭击中击杀过至少一名袭击者的玩家触发,如果玩家当前为旁观模式(通常这发生在极限模式的世界中,例如玩家在袭击中死亡)则不会触发。可用条件:

  • NBT复合标签/JSON对象conditions
    • NBT复合标签/JSON对象NBT列表/JSON数组player:将要获得进度的玩家。详见上文

impossible[编辑 | 编辑源代码]

无验证内容,无可用条件,但可通过命令/advancement grant授予玩家仅包含该准则触发器的进度。

inventory_changed[编辑 | 编辑源代码]

玩家物品栏变化时触发。可用条件:

item_durability_changed[编辑 | 编辑源代码]

物品栏中任何物品以任何形式损害时触发。可用条件:

item_used_on_block[编辑 | 编辑源代码]

玩家对方块空手或手持物品时进行某些使用操作时触发。可用条件:

  • NBT复合标签/JSON对象conditions
    • NBT列表/JSON数组location:一个谓词列表。该列表中的所有谓词均测试通过后才能达成此准则。
    • NBT复合标签/JSON对象NBT列表/JSON数组player:将要获得进度的玩家。详见上文

关于所有可触发此触发器的操作详见MC-259075

战利品上下文参数 NBT列表/JSON数组location
origin 交互的方块的中心位置
this_entity 玩家
block_state 交互的方块的方块状态
tool 交互时所使用的物品

kill_mob_near_sculk_catalyst[编辑 | 编辑源代码]

幽匿催发体蔓延时对死亡生物的伤害来源玩家触发。可用条件:

战利品上下文参数 NBT复合标签/JSON对象NBT列表/JSON数组entity
origin 玩家位置
entity 被杀死的实体

killed_by_arrow[编辑 | 编辑源代码]

杀死实体后对发射箭的玩家触发。可用条件:

  • NBT复合标签/JSON对象conditions
    • 整型NBT复合标签/JSON对象unique_entity_types:检查杀死的不同实体种类的数量。
    • NBT复合标签/JSON对象fired_from_weapon:物品谓词,检查发射箭的物品。
    • NBT列表/JSON数组victims:一个实体谓词或谓词列表的列表,检查所有被杀死的实体,列表中每项仅需对一个实体测试通过即可,且通过的实体之后不再参与测试,因此一个实体只能满足其中一个谓词。
    • NBT复合标签/JSON对象NBT列表/JSON数组player:将要获得进度的玩家。详见上文
战利品上下文参数 NBT列表/JSON数组victims
origin 玩家位置
entity 被杀死的实体

levitation[编辑 | 编辑源代码]

玩家带有飘浮状态效果时每游戏刻触发一次。可用条件:

lightning_strike[编辑 | 编辑源代码]

闪电束消失时对半径256格内的玩家触发。可用条件:

  • NBT复合标签/JSON对象conditions
    • NBT复合标签/JSON对象lightning实体谓词,检查消失的闪电束。
    • NBT列表/JSON数组lightning:“lightning”的另一种格式,为一个谓词列表。该列表中的所有谓词均测试通过后才能达成此准则。
    • NBT复合标签/JSON对象bystander:检查所有没有被闪电束击中,且在其位置水平切比雪夫距离15格内,垂直距离向上21格,向下15格范围内的实体,对其中任意一个实体测试通过即可。
    • NBT列表/JSON数组bystander:“bystander”的另一种格式,为一个谓词列表。该列表中的所有谓词均测试通过后才视为通过。对其中任意一个实体测试通过即可。
    • NBT复合标签/JSON对象NBT列表/JSON数组player:将要获得进度的玩家。详见上文
战利品上下文参数 NBT复合标签/JSON对象NBT列表/JSON数组lightning NBT复合标签/JSON对象NBT列表/JSON数组bystander
origin 玩家位置 玩家位置
entity 消失的闪电束 在范围内未被闪电束击中的实体

location[编辑 | 编辑源代码]

所有玩家每20游戏刻(1秒)触发一次。可用条件:

  • NBT复合标签/JSON对象conditions
    • NBT复合标签/JSON对象NBT列表/JSON数组player:将要获得进度的玩家。详见上文

nether_travel[编辑 | 编辑源代码]

玩家进入下界,然后返回主世界时触发。可用条件:

placed_block[编辑 | 编辑源代码]

玩家放置方块物品熔岩,以及使用打火石时触发,但使用火焰弹点火时不会触发。可用条件:

  • NBT复合标签/JSON对象conditions
    • NBT列表/JSON数组location:一个谓词列表。该列表中的所有谓词均测试通过后才能达成此准则。
    • NBT复合标签/JSON对象NBT列表/JSON数组player:将要获得进度的玩家。详见上文
战利品上下文参数 NBT列表/JSON数组location
origin 放置的方块的中心位置
this_entity 玩家
block_state 放置的方块的方块状态
tool 放置时所使用的物品

player_generates_container_loot[编辑 | 编辑源代码]

玩家与可疑的方块容器交互并使之按照战利品表生成战利品时触发。可用条件:

  • NBT复合标签/JSON对象conditions
    • 字符串*loot_table:检查生成战利品的战利品表的命名空间ID
    • NBT复合标签/JSON对象NBT列表/JSON数组player:将要获得进度的玩家。详见上文

player_hurt_entity[编辑 | 编辑源代码]

玩家伤害实体(包括自己)时触发。可用条件:

战利品上下文参数 NBT复合标签/JSON对象NBT列表/JSON数组entity
origin 玩家位置
entity 被伤害的实体

player_interacted_with_entity[编辑 | 编辑源代码]

玩家与实体交互时触发。可用条件:

战利品上下文参数 NBT复合标签/JSON对象NBT列表/JSON数组entity
origin 玩家位置
entity 交互的实体

player_killed_entity[编辑 | 编辑源代码]

玩家杀死实体时触发。可用条件:

战利品上下文参数 NBT复合标签/JSON对象NBT列表/JSON数组entity
origin 玩家位置
entity 被杀死的实体

recipe_crafted[编辑 | 编辑源代码]

玩家合成配方时触发。可用条件:

  • NBT复合标签/JSON对象conditions
    • 字符串*recipe_id:检查合成配方的命名空间ID
    • NBT列表/JSON数组ingredients:一个物品谓词列表,检查合成使用的原材料,该列表中的谓词全部测试通过后才能达成此准则。
      每个物品谓词仅需对一个物品测试通过即可,且通过的物品之后不再参与测试,因此一个物品只能满足其中一个谓词。
    • NBT复合标签/JSON对象NBT列表/JSON数组player:将要获得进度的玩家。详见上文

recipe_unlocked[编辑 | 编辑源代码]

玩家解锁配方时触发。可用条件:

  • NBT复合标签/JSON对象conditions
    • 字符串*recipe:检查被解锁的配方的命名空间ID
    • NBT复合标签/JSON对象NBT列表/JSON数组player:将要获得进度的玩家。详见上文

ride_entity_in_lava[编辑 | 编辑源代码]

玩家骑乘位于熔岩上的实体时,每游戏刻触发一次。可用条件:

shot_crossbow[编辑 | 编辑源代码]

玩家使用发射弹射物时触发。可用条件:

slept_in_bed[编辑 | 编辑源代码]

玩家上睡觉时触发。可用条件:

  • NBT复合标签/JSON对象conditions
    • NBT复合标签/JSON对象NBT列表/JSON数组player:将要获得进度的玩家。详见上文

slide_down_block[编辑 | 编辑源代码]

玩家从蜂蜜块上滑下时触发。可用条件:

  • NBT复合标签/JSON对象conditions
    • 字符串block:检查玩家所滑下的方块,为honey_block之外的值时不可能通过。
    • NBT复合标签/JSON对象state:检查玩家所滑下的方块的方块状态。蜂蜜块并没有任何方块属性,故此项实际上并不能检查任何条件。
      • 字符串NBT复合标签/JSON对象<方块属性>:(可选)检查指定方块属性。如果方块不满足条件,那么测试会失败。
        • 字符串min:(可选)数值的最小允许值。
        • 字符串max:(可选)数值的最大允许值。
    • NBT复合标签/JSON对象NBT列表/JSON数组player:将要获得进度的玩家。详见上文

started_riding[编辑 | 编辑源代码]

实体被骑乘时对所有玩家乘客触发。可用条件:

  • NBT复合标签/JSON对象conditions
    • NBT复合标签/JSON对象NBT列表/JSON数组player:将要获得进度的玩家。详见上文

summoned_entity[编辑 | 编辑源代码]

可用条件:

  • NBT复合标签/JSON对象conditions
战利品上下文参数 NBT复合标签/JSON对象NBT列表/JSON数组entity
origin 玩家位置
entity 被召唤的实体

tame_animal[编辑 | 编辑源代码]

玩家驯服动物时触发。可用条件:

  • NBT复合标签/JSON对象conditions
战利品上下文参数 NBT复合标签/JSON对象NBT列表/JSON数组entity
origin 玩家位置
entity 被驯服的实体

target_hit[编辑 | 编辑源代码]

玩家射中标靶时触发。可用条件:

战利品上下文参数 NBT复合标签/JSON对象NBT列表/JSON数组projectile
origin 玩家位置
entity 被用来射击标靶的弹射物

thrown_item_picked_up_by_entity[编辑 | 编辑源代码]

实体捡起玩家扔出的物品时对扔出物品的玩家触发。可用条件:

战利品上下文参数 NBT复合标签/JSON对象NBT列表/JSON数组entity
origin 玩家位置
entity 捡起物品的实体

thrown_item_picked_up_by_player[编辑 | 编辑源代码]

玩家捡起实体扔出的物品时触发。可用条件:

战利品上下文参数 NBT复合标签/JSON对象NBT列表/JSON数组entity
origin 玩家位置
entity 扔出物品的实体

tick[编辑 | 编辑源代码]

游戏刻对所有玩家触发一次。可用条件:

  • NBT复合标签/JSON对象conditions
    • NBT复合标签/JSON对象NBT列表/JSON数组player:将要获得进度的玩家。详见上文

used_ender_eye[编辑 | 编辑源代码]

玩家使用末影之眼定位要塞时触发。可用条件:

used_totem[编辑 | 编辑源代码]

玩家使用不死图腾免于死亡时触发。可用条件:

using_item[编辑 | 编辑源代码]

每个游戏刻玩家使用持续使用的物品时触发。可用于蜂蜜瓶奶桶药水盾牌望远镜三叉戟食物物品和末影之眼。大多数点击一次即可激活的物品,如钓鱼竿,不受此触发器影响。可用的条件:

villager_trade[编辑 | 编辑源代码]

玩家成交一项交易时触发。可用条件:

战利品上下文参数 NBT复合标签/JSON对象NBT列表/JSON数组villager
origin 玩家位置
entity 参与交易的村民或流浪商人

voluntary_exile[编辑 | 编辑源代码]

玩家触发一场新的袭击时触发。可用条件:

  • NBT复合标签/JSON对象conditions
    • NBT复合标签/JSON对象NBT列表/JSON数组player:将要获得进度的玩家。详见上文

历史[编辑 | 编辑源代码]

Java版
1.1217w16b加入了item_durability_changed触发器。
17w17a加入了levitation触发器。
加入了location触发器的一个新的feature条件。
17w17b加入了changed_dimension触发器,有两种可用条件:tofrom,都允许“overworld”“the_nether”或“the_end”为参数。
“位置”共享对象现在有了一个名为dimension的新的字符串(和上述内容有相同的值)。
17w18a加入了新的ticktame_animal触发器。
加入了新的show_toastannounce_to_chat显示选项。
“entity”对象以及levitation触发器现在使用一个共享的“distance”对象。它们检查玩家是否在一定的x轴、y轴或z轴范围内或之外,尽管水平位置不包括Y轴。
进度的加载现在严格要求JSON语法了。
17w18b加入了新的进度触发器:consume_itemplaced_blockarbitrary_player_tick
pre1加入了hidden,隐藏进度介绍的设置,默认为否。
加入了新的effects_changedused_totemnether_travel的进度触发器。
加入了function作为进度的奖励,移除了进度中的commands奖励。
进度中的物品和实体将拥有一个额外的NBT字段。
进度中的实体将有额外的effectslocation字段。
移除了arbitrary_player_tick触发器。
1.1317w43a自定义进度移动到了数据包中,此前位于存档的data/advancements目录下工作。
pre6在进度图标部分加入了nbt字段。
1.1519w46a加入了触发器bee_nest_destroyedsafely_harvest_honeyslide_down_block
1.1620w09a加入了target_hit触发器。
20w10a修改了target_hit触发器。
20w18a现在所有的实体谓词字段可以指定列表以使用战利品表谓词格式。
20w20a加入了触发器thrown_item_picked_up_by_entityplayer_generates_container_lootitem_used_on_block
移除了触发器safely_harvest_honey,改用item_used_on_block替代。
pre6加入了触发器player_interacted_with_entity
1.1721w16a触发器inventory_changed现在打开容器就能触发,而在此之前只有改变物品栏时才触发。[4]
pre1加入了触发器started_ridinglightning_strikeusing_item
1.1821w39a加入了触发器fall_from_heightride_entity_in_lava
修改了触发器nether_travel
1.1922w13a加入了触发器kill_mob_near_sculk_catalyst
22w14a加入了触发器item_delivered_to_playerallay_drop_item_on_block
移除了location、​slept_in_bed、​hero_of_the_village和​voluntary_exile进度触发器中的location字段。
22w15a加入了触发器avoid_vibrationthrown_item_picked_up_by_player
移除了触发器item_delivered_to_player,改用thrown_item_picked_up_by_player替代。
1.2023w16a加入了触发器recipe_crafted
23w18a修改了触发器placed_block、​item_used_on_block和​allay_drop_item_on_block的准则格式。
1.20.524w03a加入了进度触发器default_block_use和​any_block_use
24w12a加入了进度触发器crafter_recipe_crafted和​fall_after_explosion
1.2124w21a将注册进度的数据包文件夹advancements重命名为advancement
1.21.224w34a更改了consume_item触发器的触发方式,现在它直接由新加入的consumable物品堆叠组件触发。
24w37akilled_by_crossbow重命名为killed_by_arrow
加入了新可选物品谓词字段fired_from_weapon,用于匹配发射箭的物品。
1.21.525w04a现在字符串background字段不再需要textures/前缀与.png后缀。

已移除触发器[编辑 | 编辑源代码]

arbitrary_player_tick[编辑 | 编辑源代码]

每游戏刻仅对一名玩家触发。无可用条件。

item_delivered_to_player[编辑 | 编辑源代码]

当悦灵向玩家投掷物品时触发。可用条件:

  • NBT复合标签/JSON对象conditions
    • NBT复合标签/JSON对象NBT列表/JSON数组player:将要获得进度的玩家。详见上文

player_damaged[编辑 | 编辑源代码]

玩家受到伤害时触发。可用条件:

safely_harvest_honey[编辑 | 编辑源代码]

玩家从一个垫有营火蜂巢蜂箱中收获蜂蜜时触发。可用选项:

  • NBT复合标签/JSON对象conditions
    • NBT复合标签/JSON对象block:玩家收获蜂蜜的方块。
    • NBT复合标签/JSON对象item:玩家用于收获蜂蜜的物品。
      • 物品谓词[显示]
    • NBT复合标签/JSON对象NBT列表/JSON数组player:将要获得进度的玩家。详见上文

killed_by_crossbow[编辑 | 编辑源代码]

玩家使用弩远程杀死生物或玩家时触发。可用条件:

  • NBT复合标签/JSON对象conditions
    • 整型NBT复合标签/JSON对象unique_entity_types:杀死的实体种类的数量。
    • NBT列表/JSON数组victims:被杀死的实体的列表。所有谓词都必须被匹配,且一个实体只可以匹配一个谓词。
      • NBT复合标签/JSON对象:一个被杀死的实体。
      • NBT列表/JSON数组:描述被杀死的任意实体的另一种格式。实体被该列表匹配,是玩家完成进度的必要条件。游戏会以将要获得进度的玩家的位置为来源,检查被杀死的实体。
    • NBT复合标签/JSON对象NBT列表/JSON数组player:将要获得进度的玩家。详见上文

参考[编辑 | 编辑源代码]

  1. 跳转到: 1.0 1.1 MC-116922
  2. MC-153385
  3. MC-205424
  4. MC-117653 — 漏洞状态为“已修复”。

外部链接[编辑 | 编辑源代码]

导航[编辑 | 编辑源代码]