面向附加包开发新人的一些建议2
︎|前言
面向附加包开发新人的一些建议
附加包(Add-On),是 Minecraft 基岩版中加入新功能或修改原版的一种手段。通过附加包,可以实现很多丰富的玩法。使得附加包成为基岩版乃至其社区不可分割的一部分。
在学习、开发附加包的过程中,新人总会遇到各种问题,或做出来的附加包并未打到自己预期。
本教程会向新人开发者提出一些对与开发有利的建议,同时提出新人可能会出现的错误。
上期,我们简单认识了开发附加包的环境、参考以及内容日志。本期将会进一步了解开发附加包的技巧。
︎|检查Json格式
除 Script API外,基岩版附加包使用Json进行开发。因此,在制作附加包时,应熟悉Json语法。
附加包开发中,对 Json 语法是十分严格的。在定义一个东西时,就是多写、少写一个符号会在游戏中出现各种各样的问题,甚至无法定义于游戏中,这种情况同时存在与资源包/行为包清单文件中。
这种情况会在游戏中报错,在报错中寻找到那个错误文件并修改即可修正错误。这种报错一般有两种情况:
⚀上述缺少符号
⚀组件等地方缺少一些字段:当遇到此情况,按照附加包文档中的实例对比修复。
要避免在开发附加包中再多处理一些文件,需要在测试前就要写好。
使用Json格式化工具:通过使用 Json格式化工具,可以查明缺少的符号等内容。
查阅文档写法:很多时候出现报错/警告也是因为缺少、增添一些错误的组件、奇怪的字段等问题。因此,需要查看文档对比、修改报错文件,或测试前就写好相关定义。
有时候,在游戏中并未报错但还是无法定义的东西是什么原因呢?也是因为少/多/乱添加一些字段。
比如如下配方定义代码:
- {
- "format_version": "1.20.10",
- "minecraft:recipe_shaped": {
- "description": {
- "identifier": "chsj:ap_axe"
- },
- "tags": [
- "crafting_table"
- ],
- "pattern": [
- "AA",
- "AB ",
- " B "
- ],
- "key": {
- "A": {
- "item": "chsj:ap_ingot",
- "data": 0
- },
- "B": {
- "item": "stick",
- "data": 0
- }
- },
- "unlock": [
- {
- "item": "chsj:ap_ingot"
- },
- {
- "item": "stick"
- }
- ],
- "result": [
- {
- "item": "chsj:ap_axe",
- "count": 1
- }
- ]
- }
- }
复制代码
在这段代码中,游戏内并未报错,但无法运行。是因为 key 字段的A B对象内添加了不应出现在这里的data,导致出现无法合成的错误。data 字段是指物品/方块的数据值,像多种颜色羊毛、不同效果药水等就有不同数据值。而没有变种的普通物品/方块数据值默认为0。回到代码,这里虽然没有报错,但设置合成配方中的木棍为数据值为1,实际上,stick (原版中的木棍)并没有数据值。
同样,如果在文档中说明部分地方有限制等,需要在开发时注意。
︎|使用组件
上期中“参考方式”有这一句话:
只有简单物品、方块、实体...的附加包,必须通过添加组件等,从而让它们变得丰富。
在了解物品等写法时,便可添加自己需要的组件。
比如下面一段定义物品的基本代码:
- {
- "format_version": "1.21.0",
- "minecraft:item": {
- "description": {
- "identifier": "xxx:xxx",
- "menu_category": {
- "category": "none",
- "group": "itemGroup.name.xxx"
- }
- },
- "components": {
- "minecraft:icon": "xxx",
- "minecraft:max_stack_size": 64,
- } //这里是存放组件的字段
- }
- }
复制代码
包括方块、实体在内的,components 字段都是存放组件的地方。在官方附加包文档的参考文档,里面的Json文档便有着组件说明。

上面便是附加包中的官方参考文档,一般来说,很多组件都有实例。
组件中如何确定有几个字段?有几个字段?
比如我们打开物品的 “minecraft:fuel”组件,里面有如下一个字段:
duration 对应是一个十进制数字,也就是如下写法:
- "minecraft:fuel": {
- "duration": 3
- }
复制代码
再比如一个字段一个对应的布尔值、字符串、甚至为一个数组等时,就是 "xxx": xxx "xxx": false "xxx": ["xxx"] 等的写法。
用 minecraft:can_destroy_in_creative 组件实例:
- "minecraft:can_destroy_in_creative": true //布尔值
复制代码
就不能写为:
- "minecraft:can_destroy_in_creative": 1
复制代码
上面的物品定义代码中,只有两个十分基础的组件 icon (定义图标)与 max_stack_size(最多堆叠数),这对于功能多的物品以及方块等是不够的。因此,要善用组件,以丰富附加包的内容。以实现装备、工具等功能,同时实现更多有趣内容,方块、实体亦同理。
︎|添加更多附加包内容&跟进版本新特性
实际上,除了物品、方块与实体,在附加包中还有 :
地物(可以简单认为是生成矿石、结构等东西的)
交易(像与村民一样与实体的交易)
生成规则(定义实体的生成范围、群系等)
战利品表(实际上,除了打破方块获得,战利品表还有击败实体获得物品、原版结构箱子生成里内容等的作用)
...
上述比如可在官方文档查到其具体的作用,在官方文档中也有相关的实例以及如何定义。添加不止上述内容比如添加新矿石、新生物交易等可以为附加包游戏体验更加饱满。
一般来说,大多附加包都是与时俱进的,因为这样才能获得新的附加包特性。
这种附加包特性有的是一些新的内容,但也有的是影响附加包开发的更新。而附加包开发者通过跟进新版本,让附加包能因有维护而不会过时。当一些内容不再适用于未来版本,应使用其他新内容来代替。(例如SAPI自定义组件替换被移出的物品方块事件)
︎|确立(未来)更新计划
如果要将一个或多个附加包长期更新下去,确立更新计划是必不可少的。
确立更新计划,可以不混乱地,根据所需要更新的开发。通常,这种更新计划写在附加包开发文件夹中。
一个附加包除了良好的开发环境,还要有一个良好的开发路线、良好的开发心态。走对开发路线,可以奠定附加包的开发基础。
同时,如果附加包有一定的发布平台,可以听取意见来进一步修改自己的附加包。
当然如果有条件,可以与他人一起开发附加包,这种方式分工明确,附加包也会更加充实。这里就不细讲了,其实如果更大规模、共同就算是一个工作室。
︎|发布建议
在这之前,需要先遵守相关发布平台(论坛等)规定
在同一主题(或同一载体)发布:比如在论坛发布时,最好是在同一主题中发布,不把各个发布版本各发帖。
发布前尽量检查相关漏洞:如果是附加包内容已做好,应发布前检查有没有漏洞,以影响游玩者的游玩体验,以及对附加包的评价。
听取相关建议:相关的建议可以帮助开发者寻找相关漏洞,增加新的合理内容等。
保持心态:长期开发附加包是一个长久的坚持,应有着良好心态,正确的心去开发附加包。
︎|尾言
「面向附加包开发新人的一些建议」发布于 2025.1,原计划是写完 1 便写它教程,但鉴于此教程还有获得可讲的地方,于是编写出了 2。
通过此教程,接受附加包开发中的一些建议,可以更好地开发。本教材可能会有一些误差,大家可为此教程提出建议,如同本教程为附加包新人提出建议一样。
学习附加包是持久的,在开发附加包时,不断提高开发能力,不能求快,必须持之以恒。
在开发中进步,在进步中成长。
愿大家开发自己的附加包,开发并发布于社区,用自己的力量为社区做出贡献。
帖子信息
面向附加包开发新人的一些建议 2
字数:4600 左右
用时:一周
转载协议:本教程根据 CC BY-NC-SA 4.0 进行授权,转载请标注原作者以及原帖子地址
本教程作者:星空晶体

|
|
|
|
|