Minecraft(我的世界)中文论坛

 找回密码
 注册(register)

!header_login!

只需一步,立刻登录

查看: 2175|回复: 7

[技巧教程] Addon行为包实战笔记

[复制链接]
LackieXH 当前离线
积分
88
帖子
主题
精华
贡献
爱心
钻石
人气
下界之星
最后登录
1970-1-1
注册时间
2020-2-24
查看详细资料
 楼主| 发表于 2020-2-26 00:56:40 | 显示全部楼层 |阅读模式

您尚未登录,立即登录享受更好的浏览体验!

您需要 登录 才可以下载或查看,没有帐号?注册(register)

x
本帖最后由 LackieXH 于 2020-2-26 12:23 编辑

写在前面

仅用此帖记录我在 Addon 开发过程中的所学所得,以文档结合实战的方式,逐步探索 Addon 的开发技巧。
以下将是我写作此帖的主要内容,包括:官方文档阅读笔记、实战案例开发过程、他人作品代码分析笔记等。
在此过程中,当然也欢迎各位与我进行友好的交流,无论你是 Addon 爱好者,亦或是一位普通玩家。
我相信此帖将产生一些有价值的内容,希望这部分内容可以对后来者有所启发。

起步

行为包是应用于实体的、用于改变实体各种行为的附加插件(add-ons)。目前仅支持通过添加、删除和修改现有行为的方式,以改变现有实体的行为。在本教程中,我们给猪(Pig)添加上爬行者(creeper)的爆炸行为。在这之前,我们需要创建一个包。—— 阅读至官方文档

在这部分内容中,我会跟随官方文档的节奏,了解行为包如何创建,如何给生物添加行为等知识。
注:实际上目前已经支持通过 Addon 自定义生物实体,但这些内容我会放到后面再进行学习。

创建行为包

跟着文档的指引,我找到用于放置行为包文件夹的目录,它位于:

我在这里创建一个名为 study_behavior_pack 的文件夹(以下称作根目录),这里将记录我学习 Addon 的起点。

跟着文档的指引,我在根目录下创建一个名为 manifest.json 的文件,并写上以下内容:
  1. {
  2.         "format_version": 2,
  3.         "header": {
  4.                 "name": "学习包",
  5.                 "uuid": "f46a9a0a-a8e8-4f1e-9ef0-d29bd2c10a91",
  6.                 "description": "记录 Addon 学习历程",
  7.                 "version": [1, 0, 0],
  8.                 "min_engine_version": [1, 14, 0]
  9.         },
  10.         "modules": [
  11.                 {
  12.                         "type": "data",
  13.                         "uuid": "ae27bc41-4232-417a-9129-2a7ab14fa855",
  14.                         "description": "行为包",
  15.                         "version": [1, 0, 0]
  16.                 }
  17.         ]
  18. }
复制代码
这段代码中有三个主要元素(实际上还有更多的可定义项)是:format_version、header 和 modules。其中 header 定义了包信息,modules 定义了包的模块信息。
关于format_version ,我暂时未在官方文档中找到关于这一项的说明,根据字面猜测,它可能影响着游戏对 Add-on 采取不同的解析方案。在 Win10 基岩版本中,该字段似乎应始终定义为 2,具体的将不再作更多叙述。
关于 uuid ,该字段定义了一个通用唯一标识符,有特殊格式要求,建议使用 uuid 生成工具进行生成。需要注意的是,在这段代码中的两处 uuid 是不同的值,如果这个包存在更多的模块(modules),其 uuid 也应该保证是唯一的。
关于模块的 type 字段,它用于定义模块类型,可选值包括但不限于:data、resources、client_data、interface。

我准备先验证一下这个行为包能否被游戏正确加载。我启动游戏,接着创建世界,在创建交互界面的左侧有附加件/行为包选项,在这里可以看到这个行为包可以被正确加载。



添加图标

可以看到我的行为包已经被加载到了,并且应用了默认的图标。
跟着文档的指引,我需要在根目录下创建一个图片文件,命名为 pack_icon.png。
然后我打开了我常用的图片编辑工具,并随意的进行了一番创作



然后重启游戏,可以看到这个包已经应用了我刚才画的图标了。



实体概述

根据文档的指引,定义实体的 JSON 文件应存放在根目录下的 entities 文件夹下。
在官方文档里可以获取到官方提供的行为包制作案例(以下称作案例包),里面有大量在学习时可以参考的内容。也可以点击此处获取
我在案例包中找到了关于猪实体的定义文件(entities/pig.json),并将它拷贝到我的项目中。
在编辑器中打开 pig.json,可以观察到该文件的结构大概是这样的:

  1. {
  2.   "format_version": "1.13.0",
  3.   "minecraft:entity": {
  4.     "description": {
  5.       "identifier": "minecraft:pig",
  6.       "is_spawnable": true,
  7.       "is_summonable": true,
  8.       "is_experimental": false
  9.     },
  10.     "component_groups": {},
  11.     "components": {},
  12.     "events": {}
  13.   }
  14. }
复制代码

所有的实体定义文件都具有如上所述的、相同的大致结构。

其中,format_version 用于告诉 Minecraft 应该采取哪种方案用以解析这个 JSON 文件;
identifier,用以声明该实体的ID,通常需要加上前缀:minecraft,例如上述中的 minecraft:pig;
is_summonable:影响该实体能否通过命令进行生成;
is_experimental:声明该实体是否需要开启实验性玩法;
is_spawnable:从字面理解似乎影响该实体是否会在游戏中自然生成。从非官方渠道了解到的是,此字段可能影响该实体是否存在其对应的生物蛋。遗憾的是目前暂未从官方文档中阅读到关于此字段的解释,我将在后续内容中验证,此处暂不作详细叙述;
component_group:定义一组行为,但这里定义的行为并不会一开始就被应用在该实体上。通常在一些事件被触发时,从实体上移除或添加这些行为,以达到该实体从一种状态过渡到另一种状态的效果,例如猪从幼体猪成长为成年猪;
components:定义该实体具有的一些行为,通常用于定义该实体无论在哪种状态下都共有的行为。
events:定义该实体将会响应的事件。

(未完待更)


theredcap 当前离线
积分
124
帖子
主题
精华
贡献
爱心
钻石
人气
下界之星
最后登录
1970-1-1
注册时间
2020-2-26
查看详细资料
发表于 2020-3-4 16:15:58 | 显示全部楼层
快更啊啊啊啊我等不急了!
回复

使用道具 举报

纯粹404 当前离线
积分
17
帖子
主题
精华
贡献
爱心
钻石
人气
下界之星
最后登录
1970-1-1
注册时间
2020-3-8
查看详细资料
发表于 2020-3-8 22:32:52 来自手机 | 显示全部楼层
我其实蛮看好addon的希望官方不要把它鸽了
回复

使用道具 举报

深绿世界 当前离线
积分
2554
帖子
主题
精华
贡献
爱心
钻石
人气
下界之星
最后登录
1970-1-1
注册时间
2017-7-21
查看详细资料
发表于 2020-4-5 15:40:49 | 显示全部楼层
纯粹404 发表于 2020-3-8 22:32
我其实蛮看好addon的希望官方不要把它鸽了

已经鸽了很久了
回复

使用道具 举报

深绿世界 当前离线
积分
2554
帖子
主题
精华
贡献
爱心
钻石
人气
下界之星
最后登录
1970-1-1
注册时间
2017-7-21
查看详细资料
发表于 2020-4-5 15:41:27 | 显示全部楼层
Format Version这一项真的很迷
作者大大咕咕咕
回复

使用道具 举报

mistydawn 当前离线
积分
339
帖子
主题
精华
贡献
爱心
钻石
人气
下界之星
最后登录
1970-1-1
注册时间
2016-4-8
查看详细资料
发表于 2020-7-13 21:24:53 | 显示全部楼层
快更!!!书签已经加上了
回复

使用道具 举报

咳咳太难热 当前离线
积分
242
帖子
主题
精华
贡献
爱心
钻石
人气
下界之星
最后登录
1970-1-1
注册时间
2020-3-19
查看详细资料
发表于 2020-7-16 14:33:29 | 显示全部楼层
果然,还是有人和我抢饭碗的

https://www.mcbbs.net/thread-1074820-1-1.html
回复

使用道具 举报

Yolkcookie 当前离线
积分
541
帖子
主题
精华
贡献
爱心
钻石
人气
下界之星
最后登录
1970-1-1
注册时间
2019-7-25
查看详细资料
发表于 2020-7-24 17:07:05 | 显示全部楼层
咳咳太难热 发表于 2020-7-16 14:33
果然,还是有人和我抢饭碗的

https://www.mcbbs.net/thread-1074820-1-1.html

饭碗消失术
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册(register)

本版积分规则

Archiver|小黑屋|Mcbbs.net ( 京ICP备15023768号-1 ) | 京公网安备 11010502037624号 | 手机版

GMT+8, 2021-9-22 17:37 , Processed in 0.060283 second(s), Total 28, Slave 22 queries, Release: Build.2021.09.13 2028, Gzip On, Redis On.

"Minecraft"以及"我的世界"为Mojang Synergies AB的商标 本站与Mojang以及微软公司没有从属关系

© 2010-2020 我的世界中文论坛 版权所有 本站原创图文内容版权属于原创作者,未经许可不得转载

快速回复 返回顶部 返回列表