Minecraft Wiki

除另有声明,转载时均必须注明出处若簡繁轉換出錯,請以遊戲內為準请勇于扩充与修正内容有兴趣逛逛我们的微博沟通交流,欢迎到社区专页需要协助,请在告示板留言

了解更多

Minecraft Wiki
注册
Advertisement

进度以独立的JSON文件储存在数据包advancements目录下。

文件格式[]

图例[]

  • *: 若写明了其父字段,则该项是必须的。
  • 根标签
    •  criteria*:此进度要检查的准则。
      •  <准则名称>:一项准则,此名称必须唯一。
        •  trigger*:此进度的触发器,指定游戏为进度检查的触发条件。
        •  conditions:当触发器激活时,准则达成需要的条件,与具体触发器有关。
          •  player:检查要获得此进度的玩家属性,此项对于除minecraft:impossible外的触发器均可使用。
            • 实体谓词
          •  player:"player"的另一种格式,为一个战利品表谓词的列表。玩家被该列表匹配,是其完成进度的必要条件。此项对于除minecraft:impossible外的触发器均可使用。
          • 取决于 trigger的额外内容。详情见下文
    •  display:(可选)显示相关的数据。
      •  announce_to_chat:(可选,默认为true)是否在完成此进度时在聊天窗口提示。
      •  background:(可选,仅根进度可用)进度标签的背景,这是一个文件路径。
      •  description*:进度的描述,可以为布尔值、数字、字符串和JSON文本
      •  frame:(可选,默认为task)图标边框的可选种类。challengeAdvancement-fancy-rawgoalAdvancement-oval-rawtaskAdvancement-plain-raw
      •  hidden:(可选,默认为false)是否在进度屏幕隐藏此进度以及其所有子进度,直到完成此进度。此项对根进度自身无效,但依然能影响其子进度。
      •  icon*:一个数据对象,用于显示进度的图标。
        •  item*:图标物品的ID
        •  nbt:(可选)一个字符串,为物品的SNBT,可能会修改图标的外观。
      •  show_toast:(可选,默认为true)是否在完成此进度后显示右上角的提示信息。
      •  title*:进度的标题,可以为布尔值、数字、字符串和JSON文本
    •  parent:(可选)此进度的上游进度ID。若此项不存在,则此进度为根进度。若循环引用上游进度,将造成加载失败。
    •  requirements:(可选)定义了以上准则将如何达成。其中包含许多子列表,每一个子列表中都允许包含此进度中的若干准则(在所有的<准则名称>中)。如果子列表中至少有一个准则达成,则进度达成。默认情况下,进度达成需要保证每个子列表都要达成。
      • :在 requirements中一个子列表,可包含若干<准则名称>。如果有任何一项子列表为空,则此进度不可达成,除非通过作弊。
        • :一项准则。
    •  rewards:(可选)一个对象,表示进度达成时获得的奖励。
      •  experience:(可选,默认为0)给予一定量的经验值
      •  function:(可选)完成进度后执行的函数(以进度获得者为执行者,不支持函数标签)。
      •  loot:(可选)从战利品表中提供给玩家的物品。
      •  recipes:(可选)要解锁的配方
    •  sends_telemetry_event:(可选,默认为false)实现此进度时是否应收集遥测数据。

显示[]

进度的JSON格式的根标签中, display parent字段均为可选的,且与进度的显示有关。

如果存在 display标签,它必须同时包含 title description以及 icon字段,以确保定义的显示数据有效。

 parent字段虽然和进度的显示数据没有直接联系,但会对其产生间接影响。对于同一串进度,指定其不同的 parent字段将导致其连接不同的父进度,这在视觉上将可能表现为该串进度在某一列上的所在位置不同。没有定义 parent的进度将显示为不带上游进度的根进度,并同时将其作为一个选项卡分离出来。

断定某进度是否会显示(其所在选项卡存在时),可按照如下伪代码的逻辑进行检查[需要验证]

if (此进度为根进度) {
    显示该进度
}
else {
    if (此进度或父进度或祖父进度被玩家获得) {
        if (此进度的父进度已经处于显示状态) {
            if (此进度的display被有效定义) {
                显示该进度
            }
            else {
                无法显示该进度
            }
        }
        else {
            不显示该进度
        }
    }
    else {
        不显示该进度
    }
}

进度选项卡[]

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

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

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

定位[]

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

缺省显示[]

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

触发器列表[]

Clock
此段落需要更新。

段落中某些信息已经不符合当前版本情况。

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

minecraft:allay_drop_item_on_block[]

悦灵将物品投掷至方块时触发。可用条件:

  •  conditions
    •  location:一个战利品表谓词列表。匹配该列表中的所有谓词,是玩家达成进度的必要条件。其来源为物品投掷至的方块的中心[需要验证]位置(使用minecraft:location_check检查),物品投掷至的方块的方块状态(使用minecraft:block_state_property检查),以及掉落在方块上的物品(使用minecraft:match_tool检查)。实体this为将要获得此进度的玩家。
    •  player:将要获得进度的玩家。详情见上文

minecraft:avoid_vibration[]

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

  •  conditions
    •  player:将要获得进度的玩家。详情见上文

minecraft:bee_nest_destroyed[]

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

  •  conditions
    •  block:被摧毁的方块。(允许的ID:"minecraft:beehive","minecraft:bee_nest")
    •  item:用于破坏该方块的物品。
      • 物品谓词
    •  num_bees_inside:在该蜂箱/蜂巢被破坏变为物品状态后其中含有的蜜蜂数。
    •  num_bees_inside:“num_bees_inside”的另一种格式。
      •  max:最大值
      •  min:最小值
    •  player:将要获得进度的玩家。详情见上文

minecraft:bred_animals[]

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

  •  conditions
    •  child:繁殖出的孩子。
      • 实体谓词
    •  child:“child”的另一种格式。实体被该列表匹配,是玩家完成进度的必要条件。此项中,谓词的来源为将要获得进度的玩家的位置。
    •  parent:父或母。
      • 实体谓词
    •  parent:“parent”的另一种格式。实体被该列表匹配,是玩家完成进度的必要条件。此项中,谓词的来源为将要获得进度的玩家的位置。
    •  partner:配偶(实体父母的繁殖对象,可用于检查繁殖的骡)。
      • 实体谓词
    •  partner:“partner”的另一种格式。实体被该列表匹配,是玩家完成进度的必要条件。此项中,谓词的来源为将要获得进度的玩家的位置。
    •  player:将要获得进度的玩家。详情见上文

minecraft:brewed_potion[]

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

minecraft:changed_dimension[]

玩家在两个维度间旅行时触发。可用条件:

  •  conditions
    •  from:实体出发的维度。必须为一个命名空间ID,原版维度包含minecraft:overworld主世界)、minecraft:the_nether下界)或minecraft:the_end末地)。也可以使用数据包添加的其他维度。
    •  to:实体到达的维度。可用值同上。
    •  player:将要获得进度的玩家。详情见上文

minecraft:channeled_lightning[]

玩家成功使用引雷附魔雷击实体或避雷针时触发,可用条件:

  •  conditions
    •  victims:所有同时被引雷附魔召唤的闪电所击中的实体。
      • :一个被该闪电击中的实体。
        • 实体谓词
      • :描述被雷击实体的另一种格式。实体被该列表匹配,是玩家完成进度的必要条件。游戏会以将要获得进度的玩家的位置为来源,检查被击中的实体。
    •  player:将要获得进度的玩家。详情见上文

minecraft:construct_beacon[]

玩家更改信标结构时触发。(当信标自我更新时)可用条件:

  •  conditions
    •  level:更新的信标结构层数。
    •  level:另一种格式。
      •  max:最大值。
      •  min:最小值。
    •  player:将要获得进度的玩家。详情见上文

minecraft:consume_item[]

玩家食用了物品时触发。可用条件:

  •  conditions
    •  item:被食用的物品。
      • 物品谓词
    •  player:将要获得进度的玩家。详情见上文

minecraft:cured_zombie_villager[]

玩家治愈了僵尸村民时触发。可用条件:

  •  conditions
    •  villager:转换后的村民。由于固定是“villager”,故“type”标签是多余的。
      • 实体谓词
    •  villager:“villager”的另一种格式。实体被该列表匹配,是玩家完成进度的必要条件。游戏会以将要获得进度的玩家的位置为来源,检查村民。
    •  zombie:转换前(不是刚开始)的僵尸村民。由于固定是“zombie_villager”,故“type”标签是多余的。
      • 实体谓词
    •  zombie:“zombie”的另一种格式。实体被该列表匹配,是玩家完成进度的必要条件。游戏会以将要获得进度的玩家的位置为来源,检查僵尸村民。
    •  player:将要获得进度的玩家。详情见上文

minecraft:effects_changed[]

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

  •  conditions
    •  effects:状态效果列表。
      •  <minecraft:effect_name>:一个状态效果
        •  ambient:效果是否来自一个信标。
        •  amplifier:效果等级。
        •  amplifier:另一种格式。
          •  max:最大值。
          •  int:最小值。
        •  duration:效果持续时间,以刻为单位。
        •  duration:另一种格式。
          •  max:最大值。
          •  int:最小值。
        •  visible:效果是否带有可见粒子。
    •  source:状态效果的来源实体。当该效果是玩家自己添加或移除,或不存在该实体时,只有在source未被指定的情况下才会通过检查。
      • 实体谓词
    •  source:“source”的另一种格式。实体被该列表匹配,是玩家完成进度的必要条件。游戏会以将要获得进度的玩家的位置为来源,检查此状态效果的来源。
    •  player:将要获得进度的玩家。详情见上文

minecraft:enchanted_item[]

玩家通过附魔台附魔物品时触发(使用铁砧或命令时不触发)。可用条件:

  •  conditions
    •  item
      • 物品谓词
    •  levels:附魔花费的经验等级。
    •  levels:另一种格式。
      •  max:最大值。
      •  min:最小值。
    •  player:将要获得进度的玩家。详情见上文

minecraft:enter_block[]

游戏刻,当玩家碰撞箱处于各方块内部时触发(最多12个方块,这是玩家能同时触及的最大方块数)。可用条件:

  •  conditions
    •  block:玩家站入的方块。允许方块ID
    •  state:一个从方块状态名称到其对应值的映射。若此方块不含这些状态则发生错误。
      •  key:方块属性键值对。
      •  key:另一种格式。
        •  max:最大值。
        •  min:最小值。
    •  player:将要获得进度的玩家。详情见上文

minecraft:entity_hurt_player[]

玩家受伤,即使伤害并不来源于某个实体时触发。可用条件:

  •  conditions
    •  damage:检查对玩家造成伤害的类型。目前缺失对直接来源实体的战利品表谓词列表匹配支持。
      • 伤害谓词
    •  player:将要获得进度的玩家。详情见上文

minecraft:entity_killed_player[]

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

  •  conditions
    •  entity:检查伤害的直接来源实体(比如射箭的骷髅)。
      • 实体谓词
    •  entity:“entity”的另一种格式。实体被该列表匹配,是玩家完成进度的必要条件。游戏会以将要获得进度的玩家的位置为来源,检查杀死玩家的实体。
    •  killing_blow:检查杀死玩家的伤害类型。目前缺失对直接来源实体的战利品表谓词列表匹配支持。
      • 伤害类型谓词
    •  player:将要获得进度的玩家。详情见上文

minecraft:fall_from_height[]

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

  •  conditions
    •  start_position:下落开始前的最后位置。
      • 位置信息谓词
    •  distance:玩家到其下落起始位置的距离。
      • 距离谓词
    •  player:将要获得进度的玩家。详情见上文

minecraft:filled_bucket[]

玩家填充桶时触发。可用条件:

  •  conditions
    •  item:填满之后的物品。
      • 物品谓词
    •  player:将要获得进度的玩家。详情见上文

minecraft:fishing_rod_hooked[]

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

  •  conditions
    •  entity:被拉的实体。如果没有被拉的实体,则是鱼竿浮标。
      • 实体谓词
    •  entity:“entity”的另一种格式。实体被该列表匹配,是玩家完成进度的必要条件。游戏会以将要获得进度的玩家的位置为来源,检查被拉的实体或鱼竿浮标。
    •  item:被取得的物品。
      • 物品谓词
    •  rod:使用的钓鱼竿。
      • 物品谓词
    •  player:将要获得进度的玩家。详情见上文

minecraft:hero_of_the_village[]

玩家击败袭击时触发,并检查玩家位置。可用条件:

  •  conditions
    •  location:玩家的位置。
      • 位置信息谓词
    •  player:将要获得进度的玩家。详情见上文

minecraft:impossible[]

仅可使用命令触发。

minecraft:inventory_changed[]

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

  •  conditions
    •  items:一个列表,表示玩家物品栏中的物品。列表中的所有物品必须在玩家物品栏中,但不是物品栏中的所有物品都必须在此列表中。
      • :一个物品(物品堆叠)。
        • 物品谓词
    •  slots
      •  empty:物品栏中空槽位数量。
      •  empty:另一种格式。
        •  max:最大值。
        •  min:最小值。
      •  full:物品栏中已被完全使用(填充了一组物品)槽位数量。
      •  full:另一种格式。
        •  max:最大值。
        •  min:最小值。
      •  occupied:物品栏中已使用槽位数量。
      •  occupied:另一种格式。
        •  max:最大值。
        •  min:最小值。
    •  player:将要获得进度的玩家。详情见上文

minecraft:item_durability_changed[]

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

  •  conditions
    •  delta:耐久度的变化。负数代表损耗了耐久值。
    •  delta:另一种格式。
        •  max:最大值。
        •  min:最小值。
    • :物品的剩余耐久度。
    •  durability:另一种格式。
        •  max:最大值。
        •  min:最小值。
    •  item:损害前的物品,可用来检查物品损害前的耐久度。
      • 物品谓词
    •  player:将要获得进度的玩家。详情见上文

minecraft:item_used_on_block[]

玩家对方块空手或手持物品时进行使用操作,并对世界产生实质性影响时触发。可用条件:

  •  conditions
    •  location:一个战利品表谓词列表。匹配该列表的所有谓词,是玩家达成进度的必要条件。其来源为被使用物品所在方块的位置(使用minecraft:location_check检查),被使用物品所在方块的状态(使用minecraft:block_state_property检查),以及对方块使用的物品(使用minecraft:match_tool检查)。实体this为将要获得此进度的玩家。
    •  player:将要获得进度的玩家。详情见上文

minecraft:kill_mob_near_sculk_catalyst[]

当玩家是在幽匿催发体附近的一个生物或玩家被杀死的伤害来源时触发。可用条件:

  •  conditions
    •  entity:被杀死的实体。
      • 实体谓词
    •  entity:“entity”的另一种格式。实体被该列表匹配,是玩家完成进度的必要条件。游戏会以将要获得进度的玩家的位置为来源,检查生物。
    •  killing_blow:杀死该实体的伤害类型。
      • 伤害类型谓词
    •  player:将要获得进度的玩家。详情见上文

minecraft:killed_by_crossbow[]

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

  •  conditions
    •  unique_entity_types:杀死的实体种类的数量。
    •  unique_entity_types:另一种格式,表示被杀死的实体种类的范围。
        •  max:最大值。
        •  min:最小值。
    •  victims:被杀死的实体的列表。所有谓词都必须被匹配,且一个实体只可以匹配一个谓词。
      • :一个被杀死的实体。
        • 实体谓词
      • :描述被杀死的任意实体的另一种格式。实体被该列表匹配,是玩家完成进度的必要条件。游戏会以将要获得进度的玩家的位置为来源,检查被杀死的实体。
    •  player:将要获得进度的玩家。详情见上文

minecraft:levitation[]

玩家获得飘浮状态效果时触发。可用条件:

  •  conditions
    •  distance:玩家到其飘浮起始点的距离。
      • 距离谓词
    •  duration:飘浮时间。
    •  duration:“duration”的另一种格式。
      •  max:最大值。
      •  min:最小值。
    •  player:将要获得进度的玩家。详情见上文

minecraft:lightning_strike[]

当一束闪电消失,玩家在以该闪电为中心的256格范围内时触发。可用条件:

  •  conditions
    •  lightning:消失的闪电。
      • 实体谓词
    •  lightning:“lightning”的另一种格式。实体被该列表匹配,是玩家完成进度的必要条件。游戏会以将要获得进度的玩家的位置为来源,检查闪电。
    •  bystander:一个没有被闪电伤害,但在其周围区域的实体。
      • 实体谓词
    •  bystander:“bystander”的另一种格式。实体被该列表匹配,是玩家完成进度的必要条件。游戏会以将要获得进度的玩家的位置为来源,检查闪电旁的人。
    •  player:将要获得进度的玩家。详情见上文

minecraft:location[]

每20游戏刻(理想情况下为1秒)检查玩家的位置。可用条件:

  •  conditions
    •  player:将要获得进度的玩家。详情见上文

minecraft:nether_travel[]

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

  •  conditions
    •  start_position:玩家被传送至下界前的最终位置。
      • 位置信息谓词
    •  distance:玩家被传送后所在的下界位置以及其返回后所在的主世界位置之间的距离。
      • 距离谓词
    •  player:将要获得进度的玩家。详情见上文

minecraft:placed_block[]

玩家放置方块时触发。可用条件:

  •  conditions
    •  location:一个战利品表谓词列表。匹配该列表中的所有谓词,是玩家达成进度的必要条件。其来源为被放置的方块位置(使用minecraft:location_check检查),被放置或被交互的方块的方块状态(使用minecraft:block_state_property检查),手持或被使用的物品(使用minecraft:match_tool检查)。实体this表示将要获得此进度的玩家。
    •  player:将要获得进度的玩家。详情见上文

minecraft:player_generates_container_loot[]

当玩家打开容器,并使之按照战利品表生成物品时触发。可用条件:

  •  conditions
    •  loot_table*:被用来生成物品的战利品表命名空间ID
    •  player:将要获得进度的玩家。详情见上文

minecraft:player_hurt_entity[]

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

  •  conditions
    •  damage:造成的伤害。目前缺失对直接来源实体的战利品表谓词列表匹配支持。
      • 伤害谓词
    •  entity:被伤害的实体。
      • 实体谓词
    •  entity:“entity”的另一种格式。实体被该列表匹配,是玩家完成进度的必要条件。游戏会以将要获得进度的玩家的位置为来源,检查杀死玩家的实体。
    •  player:将要获得进度的玩家。详情见上文

minecraft:player_interacted_with_entity[]

玩家用手中物品与实体互动时触发。可用条件:

  •  conditions
    •  item:玩家与实体互动时手中的物品。
      • 物品谓词
    •  entity:与玩家互动的实体对象。
      • 实体谓词
    •  entity:“entity”的另一种格式。实体被该列表匹配,是玩家完成进度的必要条件。游戏会以将要获得进度的玩家的位置为来源,检查实体。
    •  player:将要获得进度的玩家。详情见上文

minecraft:player_killed_entity[]

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

  •  conditions
    •  entity:被杀死的实体。
      • 实体谓词
    •  entity:“entity”的另一种格式。实体被该列表匹配,是玩家完成进度的必要条件。游戏会以将要获得进度的玩家的位置为来源,检查实体。
    •  killing_blow:杀死实体的伤害类型。目前缺失对直接来源实体的战利品表谓词列表匹配支持。
      • 伤害类型谓词
    •  player:将要获得进度的玩家。详情见上文
Advertisement