进度定义格式
进度(Advancement)是位于数据包中用于定义进度的技术性JSON文件。
文件夹结构[编辑 | 编辑源代码]
在数据包中,每个进度都由一个进度文件定义。以下的文件结构图展示了进度文件在数据包中的位置:
/
<数据包名称>
pack.mcmeta
data
<命名空间>
advancement
<进度文件名>.json
- 查看更多目录…
主格式[编辑 | 编辑源代码]
- *: 若写明了其父字段,则该项是必须的。
- 根标签
- *criteria:此进度的一系列准则。
- 一项准则。见下文。
- display:(可选)进度的显示信息。
- parent:(可选)此进度的上游进度的命名空间ID。若此项不存在,则此进度为根进度。循环引用上游进度将导致加载失败。
- requirements:(可选)定义了以上准则将如何达成。其中包含许多子列表,每一个子列表中都允许包含此进度中的若干准则(在所有的
<准则名称>
中)。完成或废除一个准则时,如果所有子列表中至少有一个准则达成,则进度达成。默认情况下(即此项不存在),进度达成需要保证每个准则都要达成。- :在requirements中的一个子列表,可包含若干
<准则名称>
。如果有任何一项子列表为空,则此进度不可达成,除非通过作弊。- :一项准则名称。
- :在requirements中的一个子列表,可包含若干
- rewards:(可选)进度达成后的奖励。
- sends_telemetry_event:(可选,默认为
false
)实现此进度时是否应收集遥测数据。
- *criteria:此进度的一系列准则。
战利品上下文参数 | loot |
---|
{
"criteria": {
"crafting_table": {
"conditions": {
"items": [
{
"items": "minecraft:crafting_table"
}
]
},
"trigger": "minecraft:inventory_changed"
}
},
"display": {
"announce_to_chat": false,
"background": "minecraft:gui/advancements/backgrounds/stone",
"description": {
"translate": "advancements.story.root.description"
},
"icon": {
"count": 1,
"id": "minecraft:grass_block"
},
"show_toast": false,
"title": {
"translate": "advancements.story.root.title"
}
},
"requirements": [
[
"crafting_table"
]
],
"sends_telemetry_event": true
}
显示[编辑 | 编辑源代码]
显示信息[编辑 | 编辑源代码]
显示信息的数据格式如下:
- display:进度的显示信息。
- announce_to_chat:(可选,默认为
true
)是否在完成此进度时在聊天窗口提示。 - background:(可选,仅根进度可用,命名空间ID)进度所使用的背景平铺图片。实际将被解析为资源包文件路径
<命名空间>/textures/<命名空间ID路径>.png
。 - *description:文本组件,表示该进度在进度界面中显示的描述信息。
- frame:(可选,默认为
task
)图标边框的可选种类。challenge
为;
goal
为;
task
为。
- hidden:(可选,默认为
false
)是否在进度屏幕隐藏此进度以及其所有子进度,直到完成此进度。此项对根进度自身无效,但依然能影响其子进度。 - *icon:表示一个物品堆叠,用于显示进度的图标。
- show_toast:(可选,默认为
true
)是否在完成此进度后显示右上角的提示信息。 - *title:文本组件,表示该进度在进度界面中显示的标题。
- announce_to_chat:(可选,默认为
一个进度只有满足以下情况之一才会显示在进度菜单中:
- 此进度为根进度。
- 此进度的上游进度已处于显示状态,此进度的display被有效定义且hidden为
false
。
进度选项卡[编辑 | 编辑源代码]
创建带有显示数据display的根进度(不含parent的进度)后将自动在进度菜单边缘创建一个选项卡。当游戏加载数据包后,若根进度所在的进度树中有任意进度被某玩家获取,则该根进度以及其选项卡都会显示给该玩家,且根进度和选项卡的图标一致。
根进度的背景图像不会影响选项卡的创建。若根进度未正确从background加载图片,则背景默认显示为丢失纹理。
如果一个根进度成功创建了一个选项卡,它的子进度将会展示在该选项卡中(前提是该子进度拥有显示数据 display)。
定位[编辑 | 编辑源代码]
在从数据包加载进度时,游戏会自动对进度进行排列,确定其位置,并将排列信息发送到客户端。每个进度都有从最近的可见上游进度指向它的箭头(即,如果其相邻的上游进度没有显示数据,则有从上游进度的上游进度指向它的箭头)。根进度出现在最左一列,每个箭头指向下一列中的进度。每一列中的进度基于其文件名排序。
缺省显示[编辑 | 编辑源代码]
有些进度(如原版中由配方解锁的进度)可能会省去显示数据,以便它们利用触发器和奖励来替代过多的命令和函数并实现更多功能和更灵活的控制。通过省去display数据,这些用于逻辑控制的进度不仅能被一般玩家忽略,还有助于获得更好的加载性能。
准则[编辑 | 编辑源代码]
- *: 若写明了其父字段,则该项是必须的。
战利品上下文参数 | player |
---|
可用准则触发器[编辑 | 编辑源代码]
在游戏中总共定义了下列准则触发器:
准则触发器[编辑 | 编辑源代码]
所有触发器均要求玩家在线,如果不在线,即使其之后重新加入服务器也不会再获得进度。
所有JSON字段默认均可选,除非标注了“*”。
allay_drop_item_on_block[编辑 | 编辑源代码]
当悦灵确定待投掷的目标方块后,将物品投掷的瞬间触发。可用条件:
战利品上下文参数 | location |
---|
any_block_use[编辑 | 编辑源代码]
玩家与方块进行任何交互(包括默认交互,以及玩家不空手使用物品等方式)时触发。可用条件:
战利品上下文参数 | location |
---|
avoid_vibration[编辑 | 编辑源代码]
当振动因其来源玩家处于潜行状态而被忽略时触发。可用条件:
- conditions:
- player:将要获得进度的玩家。详见上文。
bee_nest_destroyed[编辑 | 编辑源代码]
- conditions:
- block:被破坏的方块ID,当为
minecraft:beehive
和minecraft:bee_nest
之外的值时不可能通过。 - item:用于破坏该方块的物品。
- num_bees_inside:该蜂箱/蜂巢被破坏变为物品状态后其中含有的蜜蜂数量。
- player:将要获得进度的玩家。详见上文。
- block:被破坏的方块ID,当为
bred_animals[编辑 | 编辑源代码]
两个动物繁殖时触发。可用条件:
战利品上下文参数 | child、parent、partner |
---|
brewed_potion[编辑 | 编辑源代码]
changed_dimension[编辑 | 编辑源代码]
玩家在传送到另一个维度或死亡后在另一维度重生时触发。可用条件:
channeled_lightning[编辑 | 编辑源代码]
战利品上下文参数 | victims |
---|
construct_beacon[编辑 | 编辑源代码]
信标检测到基座结构更改时,如果更改后信标处于激活状态,且这个信标上方从第11格起没有任何方块,[2]则对信标中心位置水平切比雪夫距离10格内,垂直距离向上5格,向下9格内的所有玩家触发。可用条件:
- conditions:
- level:新的信标基座层数。
- player:将要获得进度的玩家。详见上文。
consume_item[编辑 | 编辑源代码]
玩家消耗了带有consumable
组件的物品后触发。可用条件:
- conditions:
- item:物品谓词,检查被消耗的物品。
- player:将要获得进度的玩家。详见上文。
crafter_recipe_crafted[编辑 | 编辑源代码]
合成器将物品以实体形式掷出时,对中心位置切比雪夫距离8.5格内的所有玩家触发。当一次性掷出多个物品时(如合成蛋糕的同时掷出3个铁桶),每1个物品均会触发一次。可用条件:
cured_zombie_villager[编辑 | 编辑源代码]
战利品上下文参数 | villager | zombie |
---|
default_block_use[编辑 | 编辑源代码]
玩家在非潜行状态下空手与方块进行交互时触发。可用条件:
战利品上下文参数 | location |
---|
effects_changed[编辑 | 编辑源代码]
玩家获得/消除状态效果时触发。可用条件:
战利品上下文参数 | entity |
---|
enchanted_item[编辑 | 编辑源代码]
玩家通过附魔台附魔物品时触发。可用条件:
- conditions:
- item:物品谓词,检查附魔后的物品。
- levels:附魔花费的经验等级。
- player:将要获得进度的玩家,附魔花费的经验值已经被扣除。详见上文。
enter_block[编辑 | 编辑源代码]
每游戏刻,玩家对与其碰撞箱相交的各个方块分别触发,或者玩家掷出的末影珍珠进入末地折跃门时对其触发。可用条件:
- conditions:
- block:检查方块的ID。
- state:检查方块的方块状态。
- <方块属性>:检查指定方块属性。如果方块不满足条件,那么测试会失败。可以为字符串或以两个数字字符串表示的数值区间。
- min:数值的最小允许值。
- max:数值的最大允许值。
- <方块属性>:检查指定方块属性。如果方块不满足条件,那么测试会失败。可以为字符串或以两个数字字符串表示的数值区间。
- player:将要获得进度的玩家。详见上文。
entity_hurt_player[编辑 | 编辑源代码]
当玩家受到伤害,或阻挡所受到的伤害时触发。伤害并不一定来源于某个实体(比如被熔岩伤害)[1]。可用条件:
- conditions:
- damage:检查对玩家造成伤害的类型。
- player:将要获得进度的玩家。详见上文。
entity_killed_player[编辑 | 编辑源代码]
实体杀死玩家时触发。可用条件:
战利品上下文参数 | entity |
---|
fall_after_explosion[编辑 | 编辑源代码]
战利品上下文参数 | cause |
---|
fall_from_height[编辑 | 编辑源代码]
玩家摔落至地面时触发。可用条件:
- conditions:
- start_position:位置信息谓词,检查开始摔落时的位置。
- distance:距离谓词,检查玩家到其摔落起始位置的距离。
- player:将要获得进度的玩家。详见上文。
filled_bucket[编辑 | 编辑源代码]
- conditions:
- item:物品谓词,检查铁桶被填充后的物品。
- player:将要获得进度的玩家。详见上文。
fishing_rod_hooked[编辑 | 编辑源代码]
玩家成功通过钓鱼获取物品或者使用钓鱼竿拉实体时触发。可用条件:
战利品上下文参数 | entity |
---|
hero_of_the_village[编辑 | 编辑源代码]
一场袭击胜利后对所有在该场袭击中击杀过至少一名袭击者的玩家触发,如果玩家当前为旁观模式(通常这发生在极限模式的世界中,例如玩家在袭击中死亡)则不会触发。可用条件:
- conditions:
- player:将要获得进度的玩家。详见上文。
impossible[编辑 | 编辑源代码]
无验证内容,无可用条件,但可通过命令/advancement grant
授予玩家仅包含该准则触发器的进度。
inventory_changed[编辑 | 编辑源代码]
玩家物品栏变化时触发。可用条件:
- conditions:
- items:一个物品谓词列表,检查玩家物品栏中的所有物品,该列表中的所有谓词均测试通过后才能达成此准则。每个物品谓词仅需对至少一个物品测试通过即可。
- :一个物品谓词,检查一项物品。
- slots:
- empty:检查物品栏中空槽位数量。
- full:检查物品栏中已被填满(物品数量大于等于最大堆叠数量)的槽位数量。
- occupied:检查物品栏中已被填充至少一个物品的槽位数量。
- player:将要获得进度的玩家。详见上文。
- items:一个物品谓词列表,检查玩家物品栏中的所有物品,该列表中的所有谓词均测试通过后才能达成此准则。每个物品谓词仅需对至少一个物品测试通过即可。
item_durability_changed[编辑 | 编辑源代码]
物品栏中任何物品以任何形式损害时触发。可用条件:
- conditions:
- delta:检查耐久度的变化量,负数代表损耗了耐久值。
- durability:检查物品的剩余耐久度。
- item:物品谓词,检查损害前的物品,可用来检查物品损害前的耐久度。
- player:将要获得进度的玩家。详见上文。
item_used_on_block[编辑 | 编辑源代码]
玩家对方块空手或手持物品时进行某些使用操作时触发。可用条件:
关于所有可触发此触发器的操作详见MC-259075。
战利品上下文参数 | location |
---|
kill_mob_near_sculk_catalyst[编辑 | 编辑源代码]
幽匿催发体蔓延时对死亡生物的伤害来源玩家触发。可用条件:
战利品上下文参数 | entity |
---|
killed_by_arrow[编辑 | 编辑源代码]
箭杀死实体后对发射箭的玩家触发。可用条件:
战利品上下文参数 | victims |
---|
levitation[编辑 | 编辑源代码]
- conditions:
- distance:检查玩家到其飘浮起始点的距离。
- duration:检查飘浮时间,单位为游戏刻。
- player:将要获得进度的玩家。详见上文。
lightning_strike[编辑 | 编辑源代码]
闪电束消失时对半径256格内的玩家触发。可用条件:
战利品上下文参数 | lightning | bystander |
---|
location[编辑 | 编辑源代码]
所有玩家每20游戏刻(1秒)触发一次。可用条件:
- conditions:
- player:将要获得进度的玩家。详见上文。
nether_travel[编辑 | 编辑源代码]
- conditions:
- start_position:检查玩家被传送至下界前的最终位置。
- distance:检查玩家被传送后所在的下界位置以及其返回后所在的主世界位置之间的距离。
- player:将要获得进度的玩家。详见上文。
placed_block[编辑 | 编辑源代码]
玩家放置方块物品、水或熔岩,以及使用打火石点火时触发,但使用火焰弹点火时不会触发。可用条件:
战利品上下文参数 | location |
---|
player_generates_container_loot[编辑 | 编辑源代码]
玩家与可疑的方块或容器交互并使之按照战利品表生成战利品时触发。可用条件:
player_hurt_entity[编辑 | 编辑源代码]
玩家伤害实体(包括自己)时触发。可用条件:
战利品上下文参数 | entity |
---|
player_interacted_with_entity[编辑 | 编辑源代码]
玩家与实体交互时触发。可用条件:
战利品上下文参数 | entity |
---|
player_killed_entity[编辑 | 编辑源代码]
玩家杀死实体时触发。可用条件:
战利品上下文参数 | entity |
---|
recipe_crafted[编辑 | 编辑源代码]
玩家合成配方时触发。可用条件:
recipe_unlocked[编辑 | 编辑源代码]
玩家解锁配方时触发。可用条件:
ride_entity_in_lava[编辑 | 编辑源代码]
- conditions:
- start_position:检查玩家开始骑乘实体时所在的位置。
- distance:检查玩家开始骑乘的位置到当前位置的距离。
- player:将要获得进度的玩家。详见上文。
shot_crossbow[编辑 | 编辑源代码]
- conditions:
- item:物品谓词,检查发射所使用的弩。
- player:将要获得进度的玩家。详见上文。
slept_in_bed[编辑 | 编辑源代码]
玩家上床睡觉时触发。可用条件:
- conditions:
- player:将要获得进度的玩家。详见上文。
slide_down_block[编辑 | 编辑源代码]
玩家从蜂蜜块上滑下时触发。可用条件:
- conditions:
- block:检查玩家所滑下的方块,为
honey_block
之外的值时不可能通过。 - state:检查玩家所滑下的方块的方块状态。蜂蜜块并没有任何方块属性,故此项实际上并不能检查任何条件。
- <方块属性>:(可选)检查指定方块属性。如果方块不满足条件,那么测试会失败。
- min:(可选)数值的最小允许值。
- max:(可选)数值的最大允许值。
- <方块属性>:(可选)检查指定方块属性。如果方块不满足条件,那么测试会失败。
- player:将要获得进度的玩家。详见上文。
- block:检查玩家所滑下的方块,为
started_riding[编辑 | 编辑源代码]
实体被骑乘时对所有玩家乘客触发。可用条件:
- conditions:
- player:将要获得进度的玩家。详见上文。
summoned_entity[编辑 | 编辑源代码]
- 铁傀儡和雪傀儡被通过搭建结构召唤时,对自身位置切比雪夫距离5格范围内的所有玩家触发。
- 凋灵被通过搭建结构召唤时,对自身位置切比雪夫距离50格范围内的所有玩家触发。
- 末影龙被复活时,对在末地中距离
0,0,0
不超过192格的所有玩家触发。
可用条件:
战利品上下文参数 | entity |
---|
tame_animal[编辑 | 编辑源代码]
玩家驯服动物时触发。可用条件:
战利品上下文参数 | entity |
---|
target_hit[编辑 | 编辑源代码]
玩家射中标靶时触发。可用条件:
战利品上下文参数 | projectile |
---|
thrown_item_picked_up_by_entity[编辑 | 编辑源代码]
实体捡起玩家扔出的物品时对扔出物品的玩家触发。可用条件:
战利品上下文参数 | entity |
---|
thrown_item_picked_up_by_player[编辑 | 编辑源代码]
玩家捡起实体扔出的物品时触发。可用条件:
战利品上下文参数 | entity |
---|
tick[编辑 | 编辑源代码]
每游戏刻对所有玩家触发一次。可用条件:
- conditions:
- player:将要获得进度的玩家。详见上文。
used_ender_eye[编辑 | 编辑源代码]
- conditions:
- distance:检查玩家与末影之眼指向的要塞的水平距离。
- player:将要获得进度的玩家。详见上文。
used_totem[编辑 | 编辑源代码]
玩家使用不死图腾免于死亡时触发。可用条件:
- conditions:
- item:物品谓词,检查消耗的不死图腾。
- player:将要获得进度的玩家。详见上文。
using_item[编辑 | 编辑源代码]
每个游戏刻玩家使用持续使用的物品时触发。可用于弓、弩、蜂蜜瓶、奶桶、药水、盾牌、望远镜、三叉戟、食物物品和末影之眼。大多数点击一次即可激活的物品,如钓鱼竿,不受此触发器影响。可用的条件:
- conditions:
- item:物品谓词,检查被使用的物品。
- player:将要获得进度的玩家。详见上文。
villager_trade[编辑 | 编辑源代码]
玩家成交一项交易时触发。可用条件:
战利品上下文参数 | villager |
---|
voluntary_exile[编辑 | 编辑源代码]
玩家触发一场新的袭击时触发。可用条件:
- conditions:
- player:将要获得进度的玩家。详见上文。
历史[编辑 | 编辑源代码]
Java版 | |||||||
---|---|---|---|---|---|---|---|
1.12 | 17w16b | 加入了item_durability_changed 触发器。 | |||||
17w17a | 加入了levitation 触发器。 | ||||||
加入了location 触发器的一个新的feature 条件。 | |||||||
17w17b | 加入了changed_dimension 触发器,有两种可用条件:to 和from ,都允许“overworld”“the_nether”或“the_end”为参数。 | ||||||
“位置”共享对象现在有了一个名为dimension 的新的字符串(和上述内容有相同的值)。 | |||||||
17w18a | 加入了新的tick 和tame_animal 触发器。 | ||||||
加入了新的show_toast 和announce_to_chat 显示选项。 | |||||||
“entity”对象以及levitation 触发器现在使用一个共享的“distance”对象。它们检查玩家是否在一定的x 轴、y 轴或z 轴范围内或之外,尽管水平位置不包括Y轴。 | |||||||
进度的加载现在严格要求JSON语法了。 | |||||||
17w18b | 加入了新的进度触发器:consume_item 、placed_block 和arbitrary_player_tick 。 | ||||||
pre1 | 加入了hidden ,隐藏进度介绍的设置,默认为否。 | ||||||
加入了新的effects_changed 、used_totem 、nether_travel 的进度触发器。 | |||||||
加入了function 作为进度的奖励,移除了进度中的commands 奖励。 | |||||||
进度中的物品和实体将拥有一个额外的NBT 字段。 | |||||||
进度中的实体将有额外的effects 与location 字段。 | |||||||
移除了arbitrary_player_tick 触发器。 | |||||||
1.13 | 17w43a | 自定义进度移动到了数据包中,此前位于存档的data/advancements 目录下工作。 | |||||
pre6 | 在进度图标部分加入了nbt 字段。 | ||||||
1.15 | 19w46a | 加入了触发器bee_nest_destroyed 、safely_harvest_honey 和slide_down_block 。 | |||||
1.16 | 20w09a | 加入了target_hit 触发器。 | |||||
20w10a | 修改了target_hit 触发器。 | ||||||
20w18a | 现在所有的实体谓词字段可以指定列表以使用战利品表谓词格式。 | ||||||
20w20a | 加入了触发器thrown_item_picked_up_by_entity 、player_generates_container_loot 和item_used_on_block 。 | ||||||
移除了触发器safely_harvest_honey ,改用item_used_on_block 替代。 | |||||||
pre6 | 加入了触发器player_interacted_with_entity 。 | ||||||
1.17 | 21w16a | 触发器inventory_changed 现在打开容器就能触发,而在此之前只有改变物品栏时才触发。[4] | |||||
pre1 | 加入了触发器started_riding 、lightning_strike 和using_item 。 | ||||||
1.18 | 21w39a | 加入了触发器fall_from_height 和ride_entity_in_lava 。 | |||||
修改了触发器nether_travel 。 | |||||||
1.19 | 22w13a | 加入了触发器kill_mob_near_sculk_catalyst 。 | |||||
22w14a | 加入了触发器item_delivered_to_player 和allay_drop_item_on_block 。 | ||||||
移除了location 、slept_in_bed 、hero_of_the_village 和voluntary_exile 进度触发器中的location 字段。 | |||||||
22w15a | 加入了触发器avoid_vibration 和thrown_item_picked_up_by_player 。 | ||||||
移除了触发器item_delivered_to_player ,改用thrown_item_picked_up_by_player 替代。 | |||||||
1.20 | 23w16a | 加入了触发器recipe_crafted 。 | |||||
23w18a | 修改了触发器placed_block 、item_used_on_block 和allay_drop_item_on_block 的准则格式。 | ||||||
1.20.5 | 24w03a | 加入了进度触发器default_block_use 和any_block_use 。 | |||||
24w12a | 加入了进度触发器crafter_recipe_crafted 和fall_after_explosion 。 | ||||||
1.21 | 24w21a | 将注册进度的数据包文件夹advancements 重命名为advancement 。 | |||||
1.21.2 | 24w34a | 更改了consume_item 触发器的触发方式,现在它直接由新加入的consumable 物品堆叠组件触发。 | |||||
24w37a | 将killed_by_crossbow 重命名为killed_by_arrow 。 | ||||||
加入了新可选物品谓词字段fired_from_weapon ,用于匹配发射箭的物品。 | |||||||
1.21.5 | 25w04a | 现在background字段不再需要textures/前缀与.png后缀。 |
已移除触发器[编辑 | 编辑源代码]
arbitrary_player_tick[编辑 | 编辑源代码]
每游戏刻仅对一名玩家触发。无可用条件。
item_delivered_to_player[编辑 | 编辑源代码]
当悦灵向玩家投掷物品时触发。可用条件:
- conditions:
- player:将要获得进度的玩家。详见上文。
一个例子: [显示]
{
"criteria": {
"example": {
"trigger": "minecraft:item_delivered_to_player",
"conditions": {
"player": [
{
"condition": "minecraft:entity_properties",
"predicate": {
"location": {
"dimension": "minecraft:the_nether"
}
},
"entity": "this"
}
]
}
}
}
}
player_damaged[编辑 | 编辑源代码]
玩家受到伤害时触发。可用条件:
- conditions:
- damage:用于匹配伤害来源的谓词。
safely_harvest_honey[编辑 | 编辑源代码]
killed_by_crossbow[编辑 | 编辑源代码]
玩家使用弩远程杀死生物或玩家时触发。可用条件:
参考[编辑 | 编辑源代码]
外部链接[编辑 | 编辑源代码]
导航[编辑 | 编辑源代码]
[隐藏] | |||||||||
---|---|---|---|---|---|---|---|---|---|
基本概念 | |||||||||
数据包 |
| ||||||||
资源包 | |||||||||
相关条目 | |||||||||
相关教程 | |||||||||
参考实例 |
|