# QBlockBuilder **Repository Path**: bili_zero123/QBlockBuilder ## Basic Information - **Project Name**: QBlockBuilder - **Description**: 适用于(网易)我的世界基岩版Addon的通用构建解决方案 可用于开发扩展包构建功能 - **Primary Language**: C++ - **License**: BSD-3-Clause - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2024-12-18 - **Last Updated**: 2025-02-17 ## Categories & Tags **Categories**: Uncategorized **Tags**: Cpp ## README # QBlockBuilder (实验性) QBlockBuilder提供了适用于MC ADDON项目的通用构建解决方案 以便支持一些特殊业务的快速开发, 例如扩展包 By Zero123 (2024/12/18) ## 项目结构 一个基本的QBuilder项目由MANIFEST.json + QBlockBuilder.exe组成 您可以直接调用可执行程序构建生成的Addon包 Build期间将会自动忽略.exe文件 因此您可以在源代码目录搭配 QuPresetTool 一并使用 注意: 请勿直接在构建生成的包上开发 若有需要请配置src目录 ### MANIFEST.json QBuilder项目的唯一全局配置清单 管理了启用的所有功能和自定义扩展 ``` json { "package": "minecraft", // 项目名称(需遵循编程命名规范) "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 #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) 并在最终环节生成到目标目录, 您也可以基于此项目定制自己的工具(若有需要)