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