Cat_Anchor 发表于 2023-1-7 08:18:47

附加包教程:1.初步准备

本帖最后由 Cat_Anchor 于 2023-6-17 12:52 编辑

由于作者对附加包了解不深,本教程存在一些不足之处,欢迎批评指正。物品教程在第6期,方块教程在第10期,实体教程在第29期。




前言



各位在玩各种附加包时,一定会萌生出一种想法,“我能不能做一个自己的附加包?”如果你看过MinecraftLive,就可能会产生“我上我也行”的念头。这篇教程的作用就是把想象照进现实。



https://klpbbs.com/static/image/hrline/line5.png


准备



首先,需要准备一个用于制作附加包的工具。在Android平台上,我推荐MT管理器。(因为我只有一个手机)我要重点强调,还要准备一个用起来顺手的、支持像素画布的绘画软件。
准备好这两个软件之后,还要初步认识JSON数据格式和能看懂内容日志。在这里,我将简单叙述json格式。
{} 这个东西叫根对象。大部分json文档里都是以这个括号(或者以这个[])开头和结尾的。
"键":"值" 这个东西叫键值对,键是名称,值是名称对应的内容。
"对象":{"键1":"值1","键2":"值2","键3":"值3",...} 这就是一个对象,它是无序的。
"对象":["值1","值2","值3",...] 这就是一个数组,它是有序的。
true false 这两个,true代表真,false代表假。
如果在双引号""里面要用双引号时,里面的双引号前面要加上转义符\。由于在这里转义符会被解析,故难以举例。
转义符不仅能这么用,还有其他用途。\n代表换行,这是最重要的一个。如果你在json文档里的""里需要换行了,用\n表示它。
\t代表一个制表符,与空格的作用大致相同,但是制表符会自动缩进自身的大小以匹配代码。如果代码使用空格进行缩进,不妨改成制表符,这样会在一定程度上压缩文件大小。
// 这是行注释,会以它开始注释一行。
/* */ 这是块注释,会把它们之间的东西全注释掉。
(注:欢迎大佬指正错误,谢谢。)

至于错误日志,只要会英文就好,实在不行就用翻译器翻译一下。错误日志的开头一般是,或者。前者就是错误,后者就是警告。一个最容易触发的内容日志错误就是故意往你的json文档里造点语法错误,比如不加英文逗号啊,括号不匹配什么的。(所以在实际编写里要避免这些语法错误。)
一个最容易触发的警告就是把你的纹理(尤其是物品纹理)的分辨率搞得很大(大于512*512),一般就会弹出来警告,说这样可能会卡。



https://klpbbs.com/static/image/hrline/line2.png


建立项目



现在就可以开始了。直接在游戏的com.mojang目录下开发,会省很多时间。打开这个网址,它能帮你定位到com.mojang文件夹。以后的所有操作都在这里进行。找到com.mojang文件夹后,打开。找到development_behavior_packs(行为包文件夹)。进去,随便用英文字母为名字建个文件夹。进入这个文件夹,下文我叫它“行为包根目录”。找到development_resource_packs(资源包文件夹)。进去,随便用英文字母为名字建个文件夹。进入这个文件夹,下文我叫它“资源包根目录”。



https://klpbbs.com/static/image/hrline/line1.png


建立清单



在行为包根目录下创建一个叫manifest.json的文件,打开,在里面写这些内容:
{
"format_version": 2,
"header": {
    "description": "这里写附加包描述",
    "name": "这里写附加包名称",
    "uuid": "这里写uuid,要和其他任何uuid不一样,下文有获取uuid的方法",
    "version": , //版本号
    "min_engine_version": //这里决定了附加包内各种东西运作的版本,比如这里写1.19.50意味着要在附加包里用新的execute语法。同时,游戏版本低于这个就无法启动这个附加包。
},
"modules": [
    {
      "type": "data", //这里决定了这个附加包到底是什么包,data代表行为包,resources代表资源包
      "uuid": "这里写uuid,要和其他任何uuid不一样,下文有获取uuid的方法",
      "version":
    }
]
}
在资源包根目录下创建一个叫manifest.json的文件,打开,在里面写这些内容:
{
"format_version": 2,
"header": {
    "description": "这里写附加包描述",
    "name": "这里写附加包名称",
    "uuid": "这里写uuid,要和其他任何uuid不一样,下文有获取uuid的方法",
    "version": , //版本号
    "min_engine_version": //同上
},
"modules": [
    {
      "type": "resources", //这里决定了这个附加包到底是什么包,resources代表资源包
      "uuid": "这里写uuid,要和其他任何uuid不一样,下文有获取uuid的方法",
      "version":
    }
]
}
可以在这里获取uuid。
好了,现在你就做好一个最基本的附加包了!打开游戏,你的附加包已经可以被装到存档上了。
这时,你会发现,你的附加包图标是丢失纹理的紫黑方块。把两张png格式的图片重命名为pack_icon.png,扔进行为包根目录和资源包根目录里,这图片就是你的附加包的图标。
示例:
https://pic.imgdb.cn/item/63ba7b4dbe43e0d30ecf8545.jpg
游戏内效果:https://pic.imgdb.cn/item/63ba7b58be43e0d30ecf972e.jpg

你还会发现,即使给存档装了附加包,也没有什么新方块、新物品、新实体啥的。那很正常,你又没有定义任何东西,只是定义了附加包名字、描述和uuid。下期,我们就要向附加包内填充东西了。
假设你还是不懂如何写一个manifest.json,我会放出一个模板,改就完了。






第零期 第一期 第二期

Luning 发表于 2023-1-12 13:52:15

我觉得非常不错,但有疑问就是…这需要什么语言基础吗?js或者html什么之类的?

Cat_Anchor 发表于 2023-1-12 17:08:51

Luning 发表于 2023-1-12 13:52
我觉得非常不错,但有疑问就是…这需要什么语言基础吗?js或者html什么之类的? ...

JSON这种语言比较简单,属于轻量级的,不需要特别地学

706046289 发表于 2023-1-12 18:06:50

大佬,资源包根目录在哪?

706046289 发表于 2023-1-12 18:09:56

706046289 发表于 2023-1-12 18:06
大佬,资源包根目录在哪?

眼瞎了,抱歉

Luning 发表于 2023-1-13 23:12:15

Cat_Anchor 发表于 2023-1-12 17:08
JSON这种语言比较简单,属于轻量级的,不需要特别地学

这样啊…很多地方都要用上来着,看起来也挺简单的,应该文档看得多就大概会了

冰鉴REMIX 发表于 2023-12-3 13:17:46

本帖最后由 冰鉴REMIX 于 2023-12-3 13:26 编辑

嗯,有一处"true false"可以译作"允许 禁止"或"开启 关闭",更好理解,同时数据类型不仅data可表示行为包,behavior也是可以的
页: [1]
查看完整版本: 附加包教程:1.初步准备