设为首页收藏本站关注官方任务中心官方群组

[基岩版教程] 面向附加包开发新人的一些建议2

[复制链接]
查看28 | 回复0 | 4 天前 来自手机 | 显示全部楼层 |阅读模式 IP:山东泰安 联通
面向附加包开发新人的一些建议2


︎|前言
面向附加包开发新人的一些建议
附加包(Add-On),是 Minecraft 基岩版中加入新功能或修改原版的一种手段。通过附加包,可以实现很多丰富的玩法。使得附加包成为基岩版乃至其社区不可分割的一部分。
在学习、开发附加包的过程中,新人总会遇到各种问题,或做出来的附加包并未打到自己预期。
本教程会向新人开发者提出一些对与开发有利的建议,同时提出新人可能会出现的错误。
上期,我们简单认识了开发附加包的环境、参考以及内容日志。本期将会进一步了解开发附加包的技巧。

︎|检查Json格式
除 Script API外,基岩版附加包使用Json进行开发。因此,在制作附加包时,应熟悉Json语法。
附加包开发中,对 Json 语法是十分严格的。在定义一个东西时,就是多写、少写一个符号会在游戏中出现各种各样的问题,甚至无法定义于游戏中,这种情况同时存在与资源包/行为包清单文件中。
这种情况会在游戏中报错,在报错中寻找到那个错误文件并修改即可修正错误。这种报错一般有两种情况:
⚀上述缺少符号
⚀组件等地方缺少一些字段:
当遇到此情况,按照附加包文档中的实例对比修复。
要避免在开发附加包中再多处理一些文件,需要在测试前就要写好。
使用Json格式化工具:通过使用 Json格式化工具,可以查明缺少的符号等内容。
查阅文档写法:很多时候出现报错/警告也是因为缺少、增添一些错误的组件、奇怪的字段等问题。因此,需要查看文档对比、修改报错文件,或测试前就写好相关定义。

有时候,在游戏中并未报错但还是无法定义的东西是什么原因呢?也是因为少/多/乱添加一些字段。
比如如下配方定义代码:
  1. {
  2.     "format_version": "1.20.10",
  3.     "minecraft:recipe_shaped": {
  4.         "description": {
  5.             "identifier": "chsj:ap_axe"
  6.         },
  7.         "tags": [
  8.             "crafting_table"
  9.         ],
  10.         "pattern": [
  11.             "AA",
  12.             "AB ",
  13.             " B "
  14.         ],
  15.         "key": {
  16.             "A": {
  17.                 "item": "chsj:ap_ingot",
  18.                 "data": 0
  19.             },
  20.             "B": {
  21.                 "item": "stick",
  22.                  "data": 0
  23.             }
  24.         },
  25.         "unlock": [
  26.             {
  27.                 "item": "chsj:ap_ingot"
  28.             },
  29.             {
  30.                 "item": "stick"
  31.             }
  32.         ],
  33.         "result": [
  34.             {
  35.                 "item": "chsj:ap_axe",
  36.                 "count": 1
  37.             }
  38.         ]
  39.     }
  40. }
复制代码

在这段代码中,游戏内并未报错,但无法运行。是因为 key 字段的A B对象内添加了不应出现在这里的data,导致出现无法合成的错误。data 字段是指物品/方块的数据值,像多种颜色羊毛、不同效果药水等就有不同数据值。而没有变种的普通物品/方块数据值默认为0。回到代码,这里虽然没有报错,但设置合成配方中的木棍为数据值为1,实际上,stick (原版中的木棍)并没有数据值。
同样,如果在文档中说明部分地方有限制等,需要在开发时注意。

︎|使用组件
上期中“参考方式”有这一句话:
只有简单物品、方块、实体...的附加包,必须通过添加组件等,从而让它们变得丰富。

在了解物品等写法时,便可添加自己需要的组件。
比如下面一段定义物品的基本代码:
  1. {
  2.     "format_version": "1.21.0",
  3.     "minecraft:item": {
  4.         "description": {
  5.             "identifier": "xxx:xxx",
  6.             "menu_category": {
  7.                 "category": "none",
  8.                 "group": "itemGroup.name.xxx"
  9.             }
  10.         },
  11.         "components": {
  12.             "minecraft:icon": "xxx",
  13.             "minecraft:max_stack_size": 64,
  14.         } //这里是存放组件的字段
  15.     }
  16. }
复制代码

包括方块、实体在内的,components 字段都是存放组件的地方。在官方附加包文档参考文档,里面的Json文档便有着组件说明。

上面便是附加包中的官方参考文档,一般来说,很多组件都有实例。
组件中如何确定有几个字段?有几个字段?
比如我们打开物品的 “minecraft:fuel”组件,里面有如下一个字段:
duration十进制数字

duration 对应是一个十进制数字,也就是如下写法:
  1. "minecraft:fuel": {
  2.   "duration": 3
  3. }
复制代码

再比如一个字段一个对应的布尔值、字符串、甚至为一个数组等时,就是 "xxx": xxx  "xxx": false "xxx": ["xxx"] 等的写法。
用 minecraft:can_destroy_in_creative 组件实例:
  1. "minecraft:can_destroy_in_creative": true //布尔值
复制代码

就不能写为:
  1. "minecraft:can_destroy_in_creative": 1
复制代码


上面的物品定义代码中,只有两个十分基础的组件 icon (定义图标)与 max_stack_size(最多堆叠数),这对于功能多的物品以及方块等是不够的。因此,要善用组件,以丰富附加包的内容。以实现装备、工具等功能,同时实现更多有趣内容,方块、实体亦同理。

︎|添加更多附加包内容&跟进版本新特性
实际上,除了物品、方块与实体,在附加包中还有 :

地物(可以简单认为是生成矿石、结构等东西的)
交易(像与村民一样与实体的交易)
生成规则(定义实体的生成范围、群系等)
战利品表(实际上,除了打破方块获得,战利品表还有击败实体获得物品、原版结构箱子生成里内容等的作用)
...

上述比如可在官方文档查到其具体的作用,在官方文档中也有相关的实例以及如何定义。添加不止上述内容比如添加新矿石、新生物交易等可以为附加包游戏体验更加饱满。

一般来说,大多附加包都是与时俱进的,因为这样才能获得新的附加包特性。
这种附加包特性有的是一些新的内容,但也有的是影响附加包开发的更新。而附加包开发者通过跟进新版本,让附加包能因有维护而不会过时。当一些内容不再适用于未来版本,应使用其他新内容来代替。(例如SAPI自定义组件替换被移出的物品方块事件)

︎|确立(未来)更新计划
如果要将一个或多个附加包长期更新下去,确立更新计划是必不可少的。
确立更新计划,可以不混乱地,根据所需要更新的开发。通常,这种更新计划写在附加包开发文件夹中。
一个附加包除了良好的开发环境,还要有一个良好的开发路线、良好的开发心态。走对开发路线,可以奠定附加包的开发基础。
同时,如果附加包有一定的发布平台,可以听取意见来进一步修改自己的附加包。
当然如果有条件,可以与他人一起开发附加包,这种方式分工明确,附加包也会更加充实。这里就不细讲了,其实如果更大规模、共同就算是一个工作室。

︎|发布建议
在这之前,需要先遵守相关发布平台(论坛等)规定

在同一主题(或同一载体)发布:比如在论坛发布时,最好是在同一主题中发布,不把各个发布版本各发帖。
发布前尽量检查相关漏洞:如果是附加包内容已做好,应发布前检查有没有漏洞,以影响游玩者的游玩体验,以及对附加包的评价。
听取相关建议:相关的建议可以帮助开发者寻找相关漏洞,增加新的合理内容等。
保持心态:长期开发附加包是一个长久的坚持,应有着良好心态,正确的心去开发附加包。

︎|尾言
面向附加包开发新人的一些建议」发布于 2025.1,原计划是写完 1 便写它教程,但鉴于此教程还有获得可讲的地方,于是编写出了 2。
通过此教程,接受附加包开发中的一些建议,可以更好地开发。本教材可能会有一些误差,大家可为此教程提出建议,如同本教程为附加包新人提出建议一样。
学习附加包是持久的,在开发附加包时,不断提高开发能力,不能求快,必须持之以恒。
在开发中进步,在进步中成长。
愿大家开发自己的附加包,开发并发布于社区,用自己的力量为社区做出贡献。


帖子信息

面向附加包开发新人的一些建议 2
字数:4600 左右
用时:一周
转载协议:本教程根据 CC BY-NC-SA 4.0 进行授权,转载请标注原作者以及原帖子地址
本教程作者:星空晶体


评分

参与人数 1硬币 +1000 收起 理由
_Hakari-Atsuko_ + 1000 很给力!

查看全部评分

MCNeko 我的世界论坛免责声明

1、本主题所有言论和图片纯属会员个人意见,与本论坛立场无关

2、本站所有主题由该帖子作者发表,该帖子作者享有帖子相关版权

3、其他单位或个人使用、转载或引用本文时必须同时征得该帖子作者的同意

4、帖子作者须承担一切因本文发表而直接或间接导致的民事或刑事法律责任

5、本帖部分内容转载自其它媒体,但并不代表本站赞同其观点和对其真实性负责

6、如本帖侵犯到任何版权问题,请立即告知本站,本站将及时予与删除并致以最深的歉意

7、Minecraft(我的世界)MCNeko 中文论坛管理员和版主有权不事先通知发贴者而删除本文

OvO
O_o
QAQ
文明发言,和谐互动
文明发言,和谐互动
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则