暂时将打包种类分为四种,下文介绍了 Addon 和 AddonMap 的,目录结构和内容。
参照下文介绍
参照下文介绍
属于只包含 resource_packs 的 Addon,参照下文介绍
皮肤组件,直接上传 64x64 的 png 格式图片
class ReturnType(): Success = UnDefine = NoMod = PackTypeError = PortTypeError = McpPackPathError = DirError = UnZipError = PackMcpError = GetAllError = NoManifestError = ComputerSystemError = NoLevelError = HasLevelError = CopyDevelopError = ZipToDirError = FileOrPathNameError = MoveToDirError = CodeReviewError =
ID | 名 | 解释 | |||||||||||||||||
0 | Success | 表示打包完成 | |||||||||||||||||
1 | UnDefine | 表示未定义的返回值,打包脚本内部报错 | |||||||||||||||||
2 | NoMod | 表示不包含 python 的 Mod,该返回值暂时未使用 | |||||||||||||||||
3 | PackTypeError | 表示调用了未给定的 PackType 打包类型 | |||||||||||||||||
4 | PortTypeError | 表示调用了未给定的 PortType 端口类型 | |||||||||||||||||
5 | McpPackPathError | 表示调用的 McpPack.out 文件路径有问题,不存在或错误 | |||||||||||||||||
6 | DirError | 表示目录错误,Mod 未按要求组织目录的类型,导致不可解析 | |||||||||||||||||
7 | UnZipError | 表示解压 zip 文件错误,属于 zip 文件本身有问题不可解压 | |||||||||||||||||
8 | PackMcpError | 表示对 python 脚本进行打包的过程中出问题,很大可能属于 python 脚本语法问题 | |||||||||||||||||
9 | GetAllError | 表示在程序中获取解压后的文件目录出问题,打包脚本内部报错 | |||||||||||||||||
10 | NoManifestError | 表示在打包的过程中发现 behavior_packs 中没有 manifest.json | |||||||||||||||||
11 | ComputerSystemError | 表示打包脚本内部报错,使用了 Windows 和 Linux 之外的系统进行打包 | |||||||||||||||||
12 | NoLevelError | 表示在打包 NetGame 和 Lobby 的时候发现没有 Level 地图数据 | |||||||||||||||||
13 | HasLevelError | 表示在打包商品 Mod 的时候发现存在 Level 地图数据,不应该包含 | |||||||||||||||||
14 | CopyDevelopError | 表示将 python 脚本拷贝到 developer_mods 的过程中出问题,打包脚本内部报错 | |||||||||||||||||
15 | ZipToDirError | 表示将处理后的包压缩成新的 zip 包的时候出问题,打包脚本内部报错 | |||||||||||||||||
16 | FileOrPathNameError | 表示解压 zip 文件的时候发现存在无法解析的名称,可能是中文或无法解析的符号 | |||||||||||||||||
17 | MoveToDirError | 表示将打包后的 zip 文件移动到指定目录出问题,打包脚本内部报错 | |||||||||||||||||
18 | CodeReviewError | 表示对整个包进行代码检查时发现有使用未开放 API 或语法错误或禁止使用的方法 | |||||||||||||||||
19 | IncreDownloadError | 表示增量打包manifest文件时出问题,打包脚本内部错误 | |||||||||||||||||
20 | FindBehaviorAndResourceError | 表示在搜索资源包或行为包时发生错误。如果无行为包, 请检查pack_manifest.json同级下是否有文件夹命名为resource_pack,如果有请改名 |
|||||||||||||||||
21 | EncryptError | 表示加密时出问题,打包脚本内部错误 | |||||||||||||||||
22 | CreateContentsFileError | 表示创建content.json文件时出问题,打包脚本内部错误 | |||||||||||||||||
23 | WriteLevelDatError | 表示将uuid写入level.dat失败,一般为地图已损坏 | |||||||||||||||||
24 | ResourcePackUnvalid | 文件夹结构错误,请确保resource_pack文件夹中有texture或shader文件夹,且根目录中没有无关文件。 | |||||||||||||||||
其他 | UUID冲突 | 点我查看解决方式 |
Addon 是微软定义的 MOD。在 Addon 中,会有 behavior_packs 和 resource_packs 两种。behavior_packs 中存放的是我们想要改变游戏的行为,包括 addon 自带的修改游戏内置物体属性的 Json,也包括这次我们提供的 Python 脚本来控制相关逻辑内容。resource_packs 中包含游戏内资源,包括游戏内的 model(模型)/shader(光照阴影)/ui(UI 界面)/textures(贴图)。
主要是记载这个地图加载的资源包的信息,尤其是 "pack_id" 和 "version" 对应到 manifest.json 中 header / uuid 和 header / version
[
{
"folder": "awesome_packs",
"version": [0, 0, 1],
"pack_id": "ab7b26c2-9de3-41e0-854f-be8843dd5c47"
}
]
python mod 是在 addon 的基础上,将 python 目录存放在 behavior_packs 中,演示目录结构如下
| awesomeScripts
| modClient
| sfx
| ui
| ...
| __init__.py
| modCommon
| entity
| gameSetting
| network
| ...
| __init__.py
| modServer
| ai
| attr
| buff
| entity
| ...
| __init__.py
| __init__.py
| modMain.py
modMain 是 python 逻辑的入口文件,必须包含,其中有一些初始化函数
SDK class for binding
from common.mod import Mod
binding class HugoMod
@Mod.Binding(name = "HugoMod", version = "0.0.1")
class HugoMod(object):
def __init__(self):
pass
server initializes entry
@Mod.InitServer()
def testServerInit(self):
pass
server destroy entry
@Mod.DestroyServer()
def testServerDestroy(self):
pass
client initializes entry
@Mod.InitClient()
def testClientInit(self):
pass
client destroy entry
@Mod.DestroyClient()
def testClientDestroy(self):
pass
在开发的时候 Mod(即 Addon,包含 Python 脚本 install 加载 / uninstall 卸载 / use 使用 / unuse 不使用 是由一个 addon.json 配置文件来控制的。我们只需要通过修改配置文件,来决定 MC 每次启动时候的 MOD 行为。存放在 exe 同一目录中,这里的加载只是为开发者准备的,实际的加载不是这样实现的,开发者可以方便的在 windows 上查看资源和文件,实际运行环境会对我们的 mod python 脚本进行加密。
{
"install" : [
"F:/ModDev/awesomeMod"
],
"uninstall" : [
// refer to install "awesomeMod"
],
"use" : {
"levelID" : "awesomeMod"
},
"unuse" : {
// refer to use
}
}
在 PC 端,我们可以很方便地查看各种文件和资源路径在哪,在开发时,我们加载资源和地图资源会加载到 C 盘的指定位置,我们需要打开隐藏目录才能看到我们的内容。
游戏的路径:RootPath = C:\Users\xxxx\AppData\Roaming\MinecraftPE_Netease
Addon 路径:AddonPath = RootPath + \games\com.netease\
add_ons 目录:保存了我们安装好的 mod.lst,里面包含我们每一个 MOD 的所有文件资源的列表。
behavior_packs 目录:保存了我们安装好 MOD 的 behavior 资源
resource_packs 目录:保存了我们安装好 MOD 的 resource 资源
Level 路径:LevelPath = RootPath + \minecraftWorlds\
该目录下,所有文件夹代表了每一个 level 的目录,目录名即是上文中的 levelID
开发时,只需要填写 “install”和 “use”这两项,通过修改 “install”路径下的 python 内容,在每次游戏启动时,都会自动将该路径下的 python 内容同步到 C 盘真正加载的地方去,这两项可以不去掉,方便开发。
图片资源主要有 UI,模型,特效。图片资源加载后占用总内存不能超过 100M。图片资源占用内存的计算方法,以分辨率(1024 x 1024)的 32 位 png 图片为例:1024 x 1024 x 32 / 8 = 4194304Bytes = 4M
可参考:图片在内存中的占用的空间大小
我方得很 发表于 2019-8-13 00:09
我并没有使用mod,为啥还是打包失败
偶遇请叫滚 发表于 2019-8-16 13:20
感谢,明白了
酸甜奶酪 发表于 2021-2-10 14:03
我服了,我做的addon国际版就能用,结果给我整个manifest不存在,你逗我呢
Ran_n 发表于 2021-2-10 14:13
这边是 pack_manifest.json
酸甜奶酪 发表于 2021-2-10 15:03
试过了,没用
Pack Scripts Error in packScriptsToMCP,reason:[] Traceback (most recent call last): File "encrypt.py", line 27, in encrypt LookupError: no codec search functions registered: can't find encoding
小林一茶 发表于 2021-5-20 13:44
mod中不支持用Unicode的字符串吗?
打包上传会提示
小林一茶 发表于 2021-5-20 13:44
mod中不支持用Unicode的字符串吗?
打包上传会提示
欢迎光临 网易我的世界论坛 (http://mc.netease.com/) | Powered by Discuz! X3.3 |