文档和工具

1、为什么开发mod的时候,SDK包怎么都加载mod不成功?

答:可能有以下几种原因:

1)请检查SDK包和mod的路径是否是在中文路径下面,请尽量放在非中文路径下面

2)检查一下加载这个mod的存档是否以前加载过别的mod,请清理一下,或者用一份新存档

3)检查一下mod的uuid是否和别的mod一样,每个mod的uuid请尽可能保持不同

生成uuid的方法

import uuid

uuid.uuid4()

img

2、为什么一个存档加载多个mod,只有一个mod生效了?

答:可能的原因

1)每个mod在注册服务端、客户端的system的时候,是不是system名字一样?如果一样的话只会第一个注册成功的mod生效

img

2)检查一下多个mod的uuid是不是一样的(在resource和behavior文件夹的manifest.json里面)

3)检查一下多个mod中注册的物品、道具、方块、装备等东西的ID是不是有一样的

3、前一个mod卸载后,为什么后一个mod加载不正常?

答:请检查是否调用了UnListenForEvent、UnDefineEvent等清理注册事件的接口。如果没有调用,则mod卸载之后可能内存中还有残留数据,会影响到下一个安装的mod

4、为什么上传的包含mod玩法的地图,在本地玩都OK,但是在联机大厅玩却是原版的生存地图?

答:上传的地图mod,压缩包下请严格只包含唯一一个一级目录。

比如,下面这样的就是正确的(只有一个一级目录,一级目录下面就是resource和behavior文件夹)

img

5、地图mod请在存档中放置一个server.properties,这样在联机大厅玩这个地图mod,玩家每次进入都是server.properties文件中设置的游戏模式

img

img

6、上架的地图mod,为什么只有地图生效了,mod没生效?

答:可能原因:

1)请检查打包mod时,设定的modAPI版本号是否正确,是不是由于线上的APP版本已经不支持这个API版本导致mod没生效

img

2)请检查一下存档里面的world_behavior_packs.json和world_resource_packs.json的内容,是否与behavior_packs和resource_packs的manifest.json的内容一致,只有保持一致,mod才会在地图中加载成功

img

img

7、我更新了mod资源,怎么下载到的mod还是旧版本?

答:每次更新了mod资源之后,要在mod的behavior和resource文件夹下面,更改pack_manifest.json的版本号,比如上个mod的version是[0, 0, 1],那么这次mod的version就要是[0, 0, 2]。地图mod和组件mod如果有更新,都要改version才会触发更新。

img

8、上传mod,提示打包失败,是为什么呢?

答:一般有以下几个原因:

1)路径过深,目前mod资源最长的路径只能到150个字符,路径深度超过150个字符就会上传失败

2)目录格式不对,一般上传的mod文件,zip文件下面要有唯一一个一级目录,然后在这个目录下面包含behavior和resource文件夹。

3)mod的behavior文件夹下面的entities文件夹要有一个__init__.py文件

4)mod的python文件里面有语法错误

5)mod里面没有modMain.py

9、请使用GetMinecraftEnum(),尽量避免硬编码

10、namespace、自定义物品名称等尽量命名的独特一点,防止与别的mod冲突

11、mod里面不要有中文或乱码字符命名的文件(behavior文件夹和resource文件夹),否则会导致mod在游戏中加载失败

12、请在每个python文件的开头, 指定编码格式:# -*- coding: utf-8 -*-,否则可能会导致import模块异常

13、为什么开发的mod,在联机大厅\网络游戏服上运行的时候,手机客户端的部分逻辑无法正常运行?

答: 如果开发的mod运行在联机大厅\网络游戏服上面的时候,客户端有一部分逻辑失效了,很有可能是是客户端线程里面import了包含服务端线程内容的模块,导致客户端线程不能正常工作