附加包小册 §10:配方和战利品表
配方
配方(Recipe) 是游戏中的基础,通过配方可以获得游戏中的各种物品,附加包允许我们通过数据驱动的方式添加自定义配方。
我们先来学习最基础的有序配方,在我们的行为包下新建recipes文件夹,这个文件夹将会存放我们的自定义配方。
在recipes中创建一个 JSON 文件,写入以下内容:
1 | { |
在其中:
format_version是配方的格式版本,这里是1.21.0;
minecraft:recipe_shaped是配方类型,这里我们使用的是有序配方;identifier设置了配方的命名空间ID,注意这里的命名空间是example,在实际的项目中不建议使用;tags设置了配方的标签,配方标签决定了配方适用于哪种合成方块,这里是crafting_table,即工作台;pattern设置了配方的排列样式,这是一个字符串类型的数组,一个元素代表合成方块中的一行,每个元素由1-3个字符组成,每个字符都代表着合成所需要的物品;key解释了在pattern中的字符所代表的具体物品,这里我们使用#代表example:first_item;unlock设置了配方解锁的条件,这里我们设置玩家需要拥有example:first_item才能解锁配方;result设置了配方合成的结果的物品,这里我们设置合成结果为example:first_block。
接下来,我们来学习一下无序配方的大致格式,其与有序配方相似,但更加简单:
1 | { |
可以看到,无序配方与有序配方差别不不大,我们只需要注意:
- 无序配方类型为
minecraft:recipe_shapeless; - 无序配方不需要
pattern与keys,但需要ingredients设置合成的原料,ingredients是一个数组,每个元素代表合成所需要的物品以及数量,这里我们设置需要9个example:first_item来合成一个example:first_block。
战利品表
什么是战利品表呢?官方文档是这样解释的:
战利品表(Loot Table) 用于定义游戏中物品的生成方式。
它们可用于生成箱子的内容,定义实体死亡时掉落的物品,甚至实体装备的物品。
在某些情况下,它甚至用于游戏机制,例如哞菇挤奶或钓鱼。
附加包允许我们通过数据驱动的方式添加自定义战利品表。
在我们的行为包下新建loot_tables文件夹,这个文件夹将会存放我们的自定义战利品表。
在loot_tables中创建一个 JSON 文件,写入以下内容:
1 | { |
它看起来比配方复杂,但并不难理解:
pools设置了战利品表中的池,每一个池都定义了不同的战利品,一个战利品表包含多个池,每个池包含rolls、entries和conditions;entries设置了池中的战利品,一个池中可以包含多种战利品,与pools不同的是,这里的多种战利品在游戏中只会生成一种,选中哪种的概率由weight决定,值越大,选择到的概率越大;rolls设置了池中随机选取战利品的次数,这里为1次;types设置了战利品的类型,这里为item,即物品,也可将其设置为loot_table,这样会让战利品表从其他表中生成战利品;name设置了战利品的命名空间ID,这里为example:first_item;functions设置了战利品的函数,其可以对战利品进行修改,这里我们使用了set_count函数,即设置战利品数量为1-3个。
小结
至此,我们学习了如何添加自定义简单的物品、方块、实体、配方与战利品表。
恭喜你,你已经完成了附加包入门部分的学习🎉
- 标题: 附加包小册 §10:配方和战利品表
- 作者: 方琉璃
- 创建于 : 2026-01-10 00:00:00
- 更新于 : 2026-08-13 19:23:00
- 链接: https://fanglimao.github.io/2026/01/09/addons/loot-and-recipes/
- 版权声明: 本文章采用 CC BY-SA 4.0 进行许可。
评论