# 制作规范

# 命名

为了与我们开发的其他mod区分,以及其他开发者的mod区分,以免同时使用时发生冲突,行为包与资源包文件夹的命名应该有足够的区分度。

使用studio创建的AddOn添加了随机字符串的后缀,而如果开发者打算手动构造mod,或者拷贝官方示例来创作mod,这里给出一些命名建议:

这里采用驼峰命名法,开发者也可以结合个人习惯采用下划线命名法。

  1. Mod命名建议采用[团队名称][Mod名称](Mod)格式,即以团队名称开头,中间为mod的游戏内容或者具有辨析度的命名。

    例如上一篇自定义方块mod的命名为“SDKTeamTest”

  2. 行为包命名建议采用[团队名称][Mod名称][BehaviorPack]格式,以BehaviorPack结尾使该文件夹更具辨析度。

  3. 行为包中的python脚本文件夹命名建议采用[团队名称][Mod名称][Scripts]

  4. 资源包命名建议采用[团队名称][Mod名称][ResourcePack]格式。

简而言之,在命名时带上团队名和游戏内容基本可以让该mod的命名独具一格了。

# 命名空间

# 什么是命名空间

在后续的学习过程中,我们经常会看到“命名空间”这一概念,例如在自定义物品,自定义方块等。

命名空间同样也是为了使我们的mod区分于其他的mod,避免冲突。

原版数据包的命名空间为minecraft,例如泥土的方块名为“minecraft:dirt”。

命名空间的建议为:[团队名称][下划线][Mod名称]

# 如何修改命名空间

我们选择上一篇新建的作品并打开编辑器→在顶部菜单找到作品→命名空间

image-20200426095310453

会看到编辑器帮我们随机生成了一个命名空间,这个命名空间与我们自定义方块的json中的一致。

image-20200426095812122 image-20200426094538540

然后我们把它修改为“sdkteam_test”,然后保存。再次打开自定义方块的json,发现命名空间已经修改。

image-20200426100057925

# manifest.json

studio创建的AddOn里又叫pack_manifest.json,其实是一样的东西。

这个文件包含了mod的标识符(uuid),版本号(version)等关键信息。通过studio来创建的AddOn都会自动生成这个文件,如果开发者想要手动创建这个文件可以参考官方wiki (opens new window)

这个文件里一般有两个uuid字段。这两个字段一旦生成,后续请勿修改。

里面的两个version是mod的版本,玩家之间联机时会检查本地的mod是否与房主相同。因此发布新版本时,记得提升这两个版本号(例如把最后一位加一),否则可能导致拥有新旧mod的玩家互相联机,出现bug。

如果开发者通过拷贝官方示例的基础上来创作mod,记得修改uuid, image-20200425224437867

除了手动修改,也可以在启动器选择作品→更多菜单→配置,在此进行版本号升级和UUID的更换。 image-20200425224437867

# entities与textures文件夹

虽然在上面的文件结构已经提到过,但这里再说一遍。我的世界中国版要求行为包中必须有entities文件夹,资源包中必须有textures文件夹。通过studio来创建的AddOn会自带这两个文件夹,如果开发者通过手动创建目录的话这点需要注意。

# 图片资源

# 图像模式

mc目前不支持灰度模式的贴图,请统一使用RGB模式

image-20200803172023312

# 通道数

皮肤的贴图只允许使用32位四通道贴图,需要包含alpha通道。mod中使用的贴图没有该限制。

# 内存规范

图片资源主要有UI,模型贴图,特效贴图。图片资源加载后占用总内存不能超过100M。图片资源占用内存的计算方法,以分辨率(1024 x 1024)的32位png图片为例:1024 x 1024 x 32 / 8 = 4194304Bytes = 4M

可参考:图片在内存中的占用的空间大小 (opens new window)