- 致编者:请牢记我们的域名wiki.mcbe-dev.net!
- 致编者:欢迎加入本Wiki的官方交流QQ群或Discord服务器!
- 基岩版1.19.31现已发布!(了解更多)
- Inner Core现已支持Xbox模组联机!(了解更多)
- 如果您是第一次来到本Wiki,欢迎注册一个账户
- 点击顶部的“编辑”或“编辑源代码”按钮即可编辑当前页面
- 请知悉:在不登录时也可以编辑和新建页面,但是您当前的IP地址会记录在编辑历史中
教程:制作附加包/配方
在阅读本教程前,请先确保自身已有一定的附加包基础。在浏览完本教程之后,你将学会如何自定义配方。
概述[编辑]
配方使游戏元素更加丰富,并为许多内容添加了获取途径。在学习了自定义物品和方块后,您已经为游戏添加了一些新元素,现在将尝试学习通过自定义配方来为它们添加获取的途径。
配方存储在行为包的recipes文件夹中。
在这之前[编辑]
添加自定义配方首先需要了解一下自定义配方 行为部分的基本结构。 自定义配方配置文件的数据结构如下:
{
"format_version": "1.12",
"各配方适用组件": {
"description": { },//描述
"tags": [ ],//标签(适用方块)
}
}
如上,配方配置文件基本由描述、配方类别、配方输入、配方材料与配方输出五部分内容构成,而配方输入、配方材料和配方输出需要定义各类型配方自有的组件才能被定义。下面对上述基本内容进行了简要阐述:
描述 (description) 对象储存了用于描述该配方的基础信息,其数据结构如下:
//...
"description": {
"identifier": "配方的赋命名空间标识符"
},
//...
该属性用于在应用于某个世界的所有包中唯一标识配方。配方标识符没有名称空间要求,只要单个包中没有两个相同的配方标识符可以匹配即可。
配方标签(tags)数组储存了用于描述该配方适用于哪种配方功能方块,其内容如下:
//...
"tag": [
"crafting_table",//说明该配方可适用于原版工作台
...//可多选
]
//...
你已经掌握了配方配置文件基本概念,接下来是各个配方的细微差异
合成配方[编辑]
有序配方[编辑]
主条目:有序配方
有序配方定义了一个需要固定合成形状的配方,须使用"minecraft:recipe_shaped"
才能被定义。
有序配方特殊的是需要定义形状,因此和其他配方的定义格式不同,在于多了样式数组和各组成部分的定义,以下是详细描述:
样式 (pattern) 数组储存了用于描述该配方的排列样式,其内容中有多组字符串,每组字符串代表合成表中的一行,字符串由1-3个字符组成,每个字符在该配方中代表一个物品。 如果您需要将某一格留空,请使用空格,如果某一列为空,请删除代表本列的空格。 下面是一个配方的样式示例
"pattern": [
"XX",
"X#",
" #"
]
此配方代表一个类似于原版斧的配方排列方式。 配方材料(key)对象储存了用于描述该配方样式中的字符代表的物品,物品可以通过字符串引用或items对象,字符串引用的内容如下:
"字符":"物品的赋命名空间标识符:物品特殊值"//:物品特殊值为可选项,不填则所有特殊值均可
items对象的内容如下:
"字符": {
"item": "物品赋命名空间标识符"
"data": "物品特殊值,支持Molang,可选项"
"count": "物品数量,可选项"//此处不可用,物品数量仅在items对象作为工作台配方的合成结果时可用。
}
下面是原版斧的配方
{
"format_version": "1.12",
"minecraft:recipe_shaped": {
"description": {
"identifier": "minecraft:diamond_axe"
},
"tags": [ "crafting_table" ],
"pattern": [
"XX",
"X#",
" #"
],
"key": {
"#": {
"item": "minecraft:stick"
},
"X": {
"item": "minecraft:diamond"
}
},
"result": {
"item": "minecraft:diamond_axe"
}
}
}
结果 (result) 对象储存了用于描述该配方的制作结果的物品,物品可以通过字符串引用或items对象,引用方法同上。
无序配方[编辑]
主条目:无序配方
无序配方与有序配方的基本结构同理,只不过将"minecraft:recipe_shaped"
组件替换成"minecraft:recipe_shapeless"
组件以实现无序配方。
以下是原版合成打火石无序配方的json文件:
{
"format_version": "1.12",
"minecraft:recipe_shapeless": {
"description": {
"identifier": "minecraft:flint_and_steel"
},
"tags": [ "crafting_table" ],
//与有序配方不同处
"ingredients": [
{
"item": "minecraft:iron_ingot"
},
{
"item": "minecraft:flint"
}
],
"result": {
"item": "minecraft:flint_and_steel"
}
}
}
由此可见,无序配方与有序配方的不同处是将"pattern"
和"key"
的子组件替换成"ingredients"
的子组件。
"ingredients"
子组件只需要创建若干个json对象存放"item"
组件,输入需要物品的赋命名空间标识符即可。
熔炉配方[编辑]
主条目:熔炉配方
熔炉配方同理,也是替换成熔炉配方所适用的"minecraft:recipe_furnace"
组件。
下面以原版生鸡肉通过熔炉等烹饪获得熟鸡肉的json文件为例:
{
"format_version": "1.12",
"minecraft:recipe_furnace": {
"description": {
"identifier": "minecraft:furnace_chicken"
},
"tags": ["furnace", "smoker", "campfire", "soul_campfire"],
//与其他配方不同处
"input": "minecraft:chicken",//输入
"output": "minecraft:cooked_chicken"//输出
}
}
由此可见,熔炉配方仅需添加"input"
和"output"
组件,再输入需要物品的赋命名空间标识符即可。
酿造配方[编辑]
主条目:酿造配方
酿造配方与其他配方类似,不过会依据原版特性细分,具体如下:
药水容器类型配方[编辑]
此为药水改变瓶子类型的配方配置,须添加"minecraft:recipe_brewing_container"
组件。
此为原版药水通过火药炼成喷溅型药水的json配置文件:
{
"format_version": "1.12",
"minecraft:recipe_brewing_container": {
"description": {
"identifier": "minecraft:brew_potion_sulphur"
},
"tags": [ "brewing_stand" ],
"input": "minecraft:potion",
"reagent": "minecraft:gunpowder",
"output": "minecraft:splash_potion"
}
}
药水效果配方[编辑]
此为合成药水效果的配方,须添加"minecraft:recipe_brewing_mix"
组件决定该配方。
以下是原版粗制的药水用烈焰粉合成力量药水的json配置文件:
{
"format_version": "1.12",
"minecraft:recipe_brewing_mix": {
"description": {
"identifier": "minecraft:brew_awkward_blaze_powder"
},
"tags": [ "brewing_stand" ],
"input": "minecraft:potion_type:awkward",
"reagent": "minecraft:blaze_powder",
"output": "minecraft:potion_type:strength"
}
}
由此可见,酿造配方与熔炉配方类似,只不过增加了"reagent"
子组件指定加工物。