QBlockBuilder 实验性
QBlockBuilder提供了适用于MC ADDON项目的通用构建解决方案 以便支持一些特殊业务的快速开发 (例如扩展包)
项目结构
一个基本的QBuilder项目由MANIFEST.json, QBlockBuilder.exe组成 您可以直接调用可执行程序构建生成的Addon包 Build期间将会自动忽略.exe文件 因此您可以在源代码目录搭配 QuPresetTool 一并使用
注意事项
请勿直接在构建生成的包上开发 若有需要请配置src目录
MANIFEST.json
QBuilder项目的唯一全局配置清单 管理了启用的所有功能和自定义扩展
json
{
"package": "minecraft", // 唯一项目名称(需遵循编程命名规范) 决定了一些工具的构建生成隔离
// 以下variables为默认参数 实际开发中若无更改需求可以不作填写
"variables": {
"$nativeDir": "src/", // 指定包含原代码Addon目录
"$outDir": ".build/dist" // 输出项目目录
},
"jsonOptimize": true, // 启用JSON优化(压缩JSON并合并动画 动画控制器 渲染控制器以便优化IO性能)
"addon++": true, // 启用Addon扩展 之后src目录将允许使用特定的功能(现阶段用途不大) 如anyState控制器
"pyReload": true, // Py热更新 将检查Py目录只更新变化文件
"debug": true, // DEBUG模式 自动启用pyReload 在打开暂停界面时会自动rebuild
// 扩展自定义Build任务
"modules": [
// {
// "lib": "动态链接库",
// "path": "专有Build引用目录(可忽略 取决于扩展是否需要自己的资源目录)"
// }
]
}
扩展功能开发
QBlockBuilder允许您创建自定义Build任务 以便满足定制化扩展包构建场景 下载相关的封装API即可开始
Build入口
QBlockBuilder会试图寻找并调用QBUILDER_ON_BUILD函数 您需要确保可见性并统一调用约定 在IBuilder.hpp中内置了QCUSTOM_API和BUILDER_CALL宏以便快速开发
c++
#include <iostream>
#include "IBuilder.hpp"
QCUSTOM_API void BUILDER_CALL QBUILDER_ON_BUILD(IMCBuilder* iBuilder, IMCBuildContext* iContext)
{
// [推荐] CPP中可以使用封装的View类型以简化开发
QAddon::MCBuilderView builder = iBuilder;
QAddon::MCBuildContextView context = iContext;
}
ABI兼容
自定义扩展完全使用C语言结构体通信 并确保了唯一的调用约定 也可以使用CPP封装的View类转换解析 具体API功能请自行查阅View类方法定义
QBuilderCore
QBuilderCore是QBlockBuilder的核心实现部分(CPP20) 所有的文件系统处理工序均在内存中进行(MFS) 并在最终环节生成到目标目录, 您也可以基于此项目定制自己的工具(若有需要)