[MD] 以下内容由 hy4 preview 依据 1.17.3 Release Notes 进行总结 # LOICollectionA v1.17.3 更新日志 **发布日期**:2026-10-10 **上一版本**:v1.17.2(2026-10-02) **作者**:loitietu **变更规模**:43 次提交,115 个文件 **安装**:服务器目录执行 `lip install github.com/loitietu/LOICollectionA@1.17.3` **测试**:全部用例通过(默认配置 826 passed / 全模块 974 passed,0 failed) > 本次为维护性更新,**不新增任何功能**,重点修复钱包 / 红包 / 市场三条经济链路的正确性问题,并加固底层稳定性。 --- ## 🐛 缺陷修复 **钱包 / 银行 / 转账** - 修复 wallet、tpa、statistics、market 中货币被重复计算、售价错误的问题 `82dd2b1` - 转账的余额校验与扣款改为串行执行,消除并发竞态导致的超额扣款 `418a013` - 银行存款与取款改为事务性提交,避免写入中断留下脏数据 `ba526f2` - 离线玩家钱包结算纳入事务,防止余额更新丢失 `b476014` - 向未知的离线钱包转账将被明确拒绝,不再静默吞币 `c6dfb8e` - 钱包错误码按成因细分(余额不足 / 目标不存在 / 超限等),便于排查 `3481fff` **红包** - 红包总额改为由单人金额推导,消除总额与明细对不上 `880feac` - 发红包与抢红包的金额运算加入安全边界,防溢出与负数 `efb55ba` - 红包退款改为仅执行一次,修复重复退款刷币漏洞 `0f0572f` **市场** - 商品已下架时购买返回"购买失败",不再抛异常中断流程 `dcee123` - 市场数据缺列时改为上报错误,并在提示中列出实际存在的列名 `0c549b3` - 修复排行榜未合并缓存统计、转账目标使用占位对象的问题 `21b6cce` - 封堵市场挂单相关漏洞 `039cd43` **禁言 / 聊天** - 关闭 Mute 模块后聊天监听器仍正常工作,不再连带失效 `bd97dd5` **脚本层(.lcui)** - 脚本全局变量改为按玩家隔离,消除多玩家并发时的变量污染 `c496dbb` - 修复回调执行中脚本全局变量被提前释放导致的崩溃 `1a1c088` **引擎适配与底层** - 修复定时器回调中的自引用循环,消除内存泄漏 `e60af22` - 修复 BehaviorEvent 模块缺陷,并向上转发 BlockStore 错误码 `550d78f` - 恢复重构中丢失的 overlay patch 声明 `d979453` - 移除对 Block::mSerializationId 的无效空指针检查 `6f3508c` - 修复载荷被重复读取的问题 `69decd8` - 回环缓冲区改用协商格式解析 `91a5a71` - 通过 detach_abi 正确释放 WinRT 投影指针 `8049939` - 进程退出前释放媒体会话,避免关服崩溃 `ca21dbf` **其他** - 移除 info 命令输出中无效的键截断逻辑 `3881d13` - 批量列名重载约束为字符串类类型 `3ae458b` --- ## ⚡ 性能改进 - 财富排行榜改为直接读缓存,不再每次请求查库 `ef9c8d3` - 每日账本扫描改为批量处理,减少数据库往返 `707b598` --- ## 🔧 重构 - **钱包金额由 32 位扩展为 64 位,并加入边界检查** `9dbe6ac` 涉及 `TransferDailyLimit`、`TransferConfirmThreshold`、红包金额字段及 `WalletBank::deposit` 接口签名,统一改为 `long long`,突破 21.4 亿上限 - 源文件匿名命名空间统一改为具名 `detail` 命名空间 `e84562e` --- ## 🧪 工程化(CI/CD 与测试) - 单元测试改为在真实部署的 Minecraft 服务器环境中运行 `07099a2` - 同一 CI 任务跑两轮:默认配置 + 全模块开启配置 `3798c03` `4c6cb98` - 修复 CI 过早判定 gtest 成功的误报,改为等待最终汇总行 `dcfe03b` - 日志读取改用共享句柄替代 Select-String,崩溃时自动导出日志 `642a01f` `2316092` - 移除 lip 安装命令中已废弃的 `-y` 参数 `4ec2e62` - 测试套件改由 ServerStartedEvent 触发 `2609316` **单元测试结果** | run | passed | failed | skipped | | --- | --- | --- | --- | | default config | 826 | 0 | 150 | | all modules | 974 | 0 | 2 | > 两种配置下均无失败用例。默认配置下有 150 项跳过(对应未启用的模块),全模块开启时仅 2 项跳过。 --- ## ⚠️ 升级须知 1. **钱包金额 64 位化不涉及数据库结构改动,无需数据迁移**;但 `WalletBank::deposit` 属于导出接口,签名已变更,**依赖该接口的第三方插件需要重新编译**。 2. **脚本全局变量改为按玩家隔离**,若你的自定义脚本依赖全局变量跨玩家共享,需相应改写。 3. 环境要求:LeviLamina(以仓库 README 当前标注为准)与 `lip` 已安装;新版 lip 已移除 `-y` 参数。 4. 升级前请备份钱包 / 市场 / 红包相关数据文件与配置文件。 5. 建议回归验证:转账三种路径(在线→在线、在线→离线、目标不存在)、红包抢不完的退款是否只发生一次、市场下架后购买的失败提示、财富榜数据与余额一致性、关闭 Mute 后聊天功能是否正常。 [/MD]
[MD] ## v1.17.2 Release Notes **Date:** 2026-10-02 **Compare:** v1.17.1...v1.17.2 ### Features - - add a loading screen module for the client `0992a56` (by loitietu) ### Refactors - - clear some warnings `033b8fc` (by loitietu) - - support 26.3 `a3e5c71` (by loitietu) ### CI/CD - - fix grammar mistakes `c370480` (by loitietu) ### Tests - - complete the unit tests `0ea86ea` (by loitietu) [/MD]
[MD] ## v1.17.1 Release Notes **Date:** 2026-10-01 **Compare:** v1.17.0...v1.17.1 ### Features - - adapt to LeviLamina 26.51.6 `250d28a` (by loitietu) [/MD]
[MD] 以下内容由 glm 5.3 agent 基于 1.17.0 release notes 总结并提炼 # LOICollectionA Release 1.17.0 > **项目**:[LOICollectionA](https://github.com/loitietu/LOICollectionA) — Minecraft Bedrock Server LeviLamina 插件(C++ / GPL-3.0) > > 本文档基于官方 [v1.17.0 Release Notes](https://github.com/loitietu/LOICollectionA/releases/tag/v1.17.0) 归纳整理:原始 231 条提交记录已按主题合并为概括性条目,完整提交清单见[代码对比页](https://github.com/loitietu/LOICollectionA/compare/v1.16.0...v1.17.0)。 ## [v1.17.0] — 2026-10-01 **上一版本**:[v1.16.0](https://github.com/loitietu/LOICollectionA/releases/tag/v1.16.0)(2026-08-29) **发布资产**:本版本未附带二进制附件。 ### 概述 v1.17.0 是一次大型版本,原始提交共 231 条,主线有三: 1. **LCUI 脚本语言与编译管线进化**——泛型、trait、组件系统、类型化 MIR 中间表示、LSP 语言服务器与沙箱权限模型; 2. **虚拟机性能**——多态内联缓存、隐藏类、槽位化布局,`.lcp` 自包含字节码包取代 `.lcc` 缓存; 3. **存储层迁移与经济玩法扩展**——全部插件迁移至类型化表与块存储模型,市场 / 钱包 / 红包玩法大幅扩充。 --- ### 新增 **LCUI 脚本语言** - **泛型系统**:支持泛型函数、泛型类与泛型 `impl` 块,trait 边界检查的动态派发,以及 `dyn` trait 对象(运行时派发)。 - **Rust 风格语法**:`impl` 块(固有方法与 trait 方法)、脚本侧运算符重载(内建 operator traits,stdlib 运算符改为注册式派发),变量声明强制使用 `let`。 - **迭代协议**:脚本定义的类可实现迭代协议,`for-in` 改由协议驱动。 - **组件系统与语言演进**:组件系统支持编译期卫生展开;语言层引入声明式块、模块导入、执行预算与字节码缓存,并附一批语法易用性改进与 stdlib 扩充。 **编译器与字节码** - **类型化 MIR**:在 AST 与字节码之间引入三地址码形式的 MIR,可序列化为 `.lcub` 包,并支持无字节码管线直接执行。 - **优化器**:新增公共子表达式消除(CSE)、CFG 分析与循环不变代码外提(LICM)、死存储消除、常量折叠(含纯 native 值方法)等 pass,各 pass 可独立开关。 - **字节码**:深度优化——超级指令、窥孔优化、内联缓存,整体策略更激进;自包含 `.lcp` 包取代 `.lcc` 缓存,被拒绝时可报告原因。 - **槽位化布局**:对象字段存储与局部变量均改为槽位化,调试信息拆分为 sidecar 文件。 **语言服务与沙箱** - **LSP 语言服务器**:基于 asio 的仅回环 TCP 服务,经顶层配置与插件生命周期暴露,配套语言服务核心、可配置执行预算与 fuzz 测试设施。 - **沙箱与权限体系**:沙箱执行预算 + `permission.json` 授权;跨脚本表单导航需显式授权,脚本身份贯穿原生表单回调。 **经济与市场** - **市场玩法**:悬赏令、英式拍卖、市场 GUI、`MarketQuote` 聚合、交易税与报表命令。 - **钱包与红包**:定向红包(含抢红包统计与资金事件)、财富排行榜、银行存款、统一账本与交易历史。 - **治理与安全**:转账限额与大额转账确认、运行时税率调整与价格上限治理、资金安全加固(结算修复、红包持久化、费用池)、商店交易与离线结算加固。 **其他** - 客户端 GSMTC 音乐实时监听。 - 旧版 KV 数据库 flat→block 迁移脚本。 --- ### 修复 - **SQLite 事务与连接池**:写事务串行化并支持嵌套 savepoint,commit/rollback 不再吞掉底层错误(多处集中修复);池化连接不再跨线程回收复用、绝不在事务中途外借;启动时强制 WAL checkpoint 与完整性检查。另根治了 `ensureSchema` 每次写入都执行、二次启动静默崩溃等问题,并支持列变更自愈。 - **缓存一致性**:未提交行与回滚批次不再污染块缓存;行为事件查询收窄至其 log root,调用方过滤器不再错误地缩小查询范围。 - **TypedTable 细节**:集中修复 C++20 兼容性(`Key::parse`)、字符串字面量列 key、类型化数据镜像到 `tval` 的 payload 类型、残留字符串列调用、表打开链各环节的 `Expected` 结果类型等问题。 - **编译器与 VM 正确性**:集中修复 CSE / 常量折叠的操作数与寄存器处理、`let` 声明与槽位读取的代码生成(`LOAD_SLOT`)、VM 指令派发(参数弹出顺序、丢失的 unknown-opcode 诊断)、继承方法接入派生类 vtable、声明式块中的 `this` 解析等一批问题。 - **内存安全**:嵌套结构(数组值、`MirChunk`)改为迭代式销毁与序列化,消除深递归栈溢出;修复回调 / 宿主保留环内存泄漏(#32)与悬垂的列文本指针。 - **解析器健壮性**:修复可由深度嵌套表达式触发的解析器 DoS,表达式递归深度限制在 1 MB 线程栈内。 - **Windows / MSVC / unity build**:集中解决 unity build 重定义冲突、翻译单元自包含、MSVC STL 兼容(`unique_ptr` 持有方法体)、Windows 构建错误与真机测试失败,并清理编译警告(含 clang-cl `/W4`)。 - **沙箱权限**:`permission.json` 相对 mod 目录定位、权限 allowlist 补全并提升字节码版本、菜单 / 商店入口脚本鉴权。 - **市场子系统**:悬赏成交改按物品类型匹配;比较器排序、右操作数派发与逐次迭代捕获等加固。 - **杂项**:时间处理统一为 UTC、配置改经 `ReadOnlyWrapper::get()` 读取、动态格式串经 `fmt::runtime` 安全包装等零散修正。 --- ### 性能 - **虚拟机**:字段访问内联缓存由单态扩展为多态,引入隐藏类(hidden class)形状变迁;整数算术与比较跳过通用值路径,槽位间整数算术融合为单条 opcode 并免 variant 派发;调用帧改由连续局部池支撑,参数向量不再堆分配。 - **存储层**:TypedTable 列索引惰性构建、列数据静态化到每表侧仓、覆盖索引与 AND 条件下推;整行作为单一 payload blob 一次 upsert 写入;BlockStore 缓存 `(parent, name) → block id` 映射。 --- ### 变更(重构) - **存储层大迁移**:全部插件(Market、Wallet、RedEnvelope、Blacklist、Mute、Statistics、Notice、Chat、Tpa、Language、Pvp)及市场 / 钱包各存储模块迁移至 TypedTable 类型化表;集中式 `TableSchema.h` 拆分为按域 schema 头;底层切换到块存储(block model)模型并保留 legacy 归档。 - **MIR 管线重组**:VM 直接执行三地址 MIR 并移除字节码层(plan B),优化器改为运行于 MIR 之上,同步移除整数单态 `MirOp` 变体。 - **代码组织**:Compiler、Parser、SemanticAnalyzer、VM(`exec*` 方法族)等大型单元拆分为多个翻译单元;优化器拆出 `ConstantFoldPass` / `DeadCodePass`;MarketGui 注册按子系统拆分;实现整体拆分为功能模块。 - **命名与依赖**:C++ GUI 类统一加 `LC` 前缀(规避 Windows `MessageBox` 宏冲突);LSP 消息编码改用 `nlohmann::ordered_json`;权限门改为服务注入并随附 `permission.json`。 - **风格统一**:全源码移除注释(source-as-documentation 风格);测试专用路径移出构建;自带脚本与文档迁移至新语法。 --- ### 文档 - 数据层文档围绕 TypedTable 与块存储全面重写,新增 SQLite 层教程及写事务串行化 / savepoint 嵌套等规则说明与升级路径。 - 记录多态内联缓存、隐藏类形状变迁等 VM 优化机制,以及脚本可迭代对象与字符级字符串索引。 - 补全 `.lcui` 文档与 `.lcp` 包 / 导航授权说明,勘误 1.15.1 → 1.16.0 升级说明,市场扩展后的命令与配置文档同步。 --- ### CI / 构建 / 测试 - CI:新增 `workflow_dispatch` 诊断性源码构建;测试变更同样触发完整构建;Pages 不再从 PR 与主题分支部署。 - 构建:生产环境切换为静态 sqlitecpp 打包。 - 测试:补充语言服务器 TCP 握手、内联缓存 / 形状变迁覆盖;store fixture 迁移至 TypedTable API,缺失结果不再转为崩溃。 --- ### 升级注意事项 | 事项 | 说明 | | ---- | ---- | | **脚本语法(破坏性)** | 变量声明强制 `let`;官方自带 GUI 脚本已迁移,**自定义脚本需相应改造**。 | | **字节码缓存** | `.lcc` 缓存被自包含 `.lcp` 包取代,旧缓存不再使用。 | | **存储迁移** | 存储层切换到块存储模型:旧版 flat KV 数据库需运行 flat→block 迁移脚本,legacy 数据以归档形式保留。 | | **权限与沙箱** | 需放置 `permission.json`(相对 mod 目录);跨脚本表单导航需显式授权;脚本受沙箱执行预算约束。 | | **打包依赖** | 生产构建切换为静态 sqlitecpp 打包。 | ### 原始变更分布 | 类别 | 原始提交数 | | ---- | ---------- | | Features | 43 | | Bug Fixes | 92 | | Performance | 14 | | Refactors | 43 | | Documentation | 13 | | CI/CD / Build / Tests / Style / Maintenance | 26 | | **合计** | **231** | --- [v1.17.0]: https://github.com/loitietu/LOICollectionA/releases/tag/v1.17.0 [v1.16.0]: https://github.com/loitietu/LOICollectionA/releases/tag/v1.16.0 [v1.16.0...v1.17.0]: https://github.com/loitietu/LOICollectionA/compare/v1.16.0...v1.17.0 [/MD]
[MD] **以下内容由 hy4 preview agent 基于 1.16.0 release notes 总结并提炼** # LOICollectionA v1.16.0 > 开箱即用的 LeviLamina 多功能插件集。 内置黑名单、禁言、CDK、菜单、商店、传送、PVP、钱包、市场、聊天、公告、数据统计等模块,均可在配置文件中独立开关。v1.16.0 是一次较大的更新(74 个提交),重点在 **LCUI 脚本语言增强**与**全新的脚本沙箱权限机制**。 ## 环境要求 | 项目 | 要求 | | --- | --- | | LeviLamina | >= 26.20.7 | | Minecraft 基岩版 | 26.20.5 | | 平台 | Windows x64 | ## 本次更新要点 ### 1. LCUI 脚本语言大幅增强 - **声明式 UI 块**:表单可以直接嵌套描述,不必再逐条手写赋值 - **多文件导入**:`import "xxx.lcui"` 支持把公共逻辑拆成独立文件复用 - **组件系统**:可复用的 UI 片段,编译期展开,无运行时开销 - **标准库**:数学、字符串、格式化等常用函数开箱可用 - **字节码优化器**:超级指令、窥孔优化与内联缓存,脚本执行更快 ### 2. 全新的脚本沙箱与权限机制(重要) 1.16.0 新增 `plugins/LOICollectionA/gui/permission.json`,采用**默认拒绝**策略,管控脚本的敏感能力:命令执行(`mc::runCmd`)、GUI 数据读写(`GUIManager::value/request/callback`)、跨脚本跳转(`GUIManager::open`)。 内置脚本的授权已随插件提供,无需干预。详见下方「升级须知」。 ### 3. 字节码缓存,启动更快 脚本编译产物以 `.lcp` 形式缓存在源文件旁,后续启动直接复用,跳过词法/语法/语义分析与编译全过程。插件会自动生成与失效,删除后只会让下次启动重新编译,不影响正确性。 ### 4. 脚本可以脱离源码分发 `.lcp` 是自包含的——带上脚本 ID 与 ABI 指纹,**删掉 `.lcui` 源码也能正常加载**。想分发自研 GUI 界面又不想公开源码的,现在可以只发编译产物。 插件升级导致原生接口变化时,指纹不匹配会自动重新编译;万一包被拒绝,日志会明确说明原因(脚本 ID 不符 / ABI 不符 / 文件损坏),并在 ABI 不符时打印两边指纹,便于排查。 ### 5. 市场与界面扩展 新增三套市场界面:**求购订单**、**英式拍卖**、**报价聚合**。 ## 升级须知 > **从 1.15.1 及更早版本升级的服主请注意**:此前版本没有权限机制,脚本可以自由执行命令、读写数据、跳转到其他脚本。升级后这些调用默认被拒绝,**自行编写的脚本(如 `menu.lcui` / `shop.lcui`)必须补配授权**,否则其中的功能会失效。 需要做的事: 1. 打开 `plugins/LOICollectionA/gui/permission.json`,找到 `scripts.menu` 与 `scripts.shop`。 2. 按脚本内实际调用的内容填写白名单: - 命令 → `commands.templates`,同时把 `commands.allow` 置为 `true` - 数据 id → `gui.values` / `gui.requests` / `gui.callbacks` - 跨脚本跳转的目标 → `gui.navigations` 3. 保存后重载插件即可,无需重启服务器。 示例(菜单里要跳转到钱包和市场): ```json "menu": { "enabled": true, "commands": { "allow": true, "templates": [] }, "gui": { "values": [], "requests": [], "callbacks": [], "navigations": ["wallet", "market"] } } ``` 脚本打开**自己**的表单不需要授权。若升级后日志出现 `is not allowed for script`,说明某项能力缺少授权,按提示的脚本 id 补进对应白名单即可。 完整字段说明见文档站的「数据文件 → permission.json」一节。 ## 安装 使用 [lip](https://github.com/LiteLDev/lip)(推荐),在服务端根目录执行: ```cmd lip install github.com/loitietu/LOICollectionA ``` 或手动下载 `LOICollectionA-windows-x64.zip`,解压后将 `LOICollectionA/` 放入 `plugins/` 目录。 ## 相关链接 | 项目 | 地址 | | --- | --- | | Release 下载 | https://github.com/loitietu/LOICollectionA/releases/tag/v1.16.0 | | 文档站 | https://loitietu.github.io/LOICollectionA/ | | 源码 | https://github.com/loitietu/LOICollectionA | | 反馈 | https://github.com/loitietu/LOICollectionA/issues | | QQ 群 | 1018233878 | [/MD]
[MD] ## v1.15.1 Release Notes **Date:** 2026-08-15 **Compare:** v1.15.0...v1.15.1 ### Features - - add player shops to the market module `2937b11` (by loitietu) - - add fuzzy matching to the menu module `41c76d7` (by loitietu) - - add the reload subcommand `77c96ca` (by loitietu) ### Documentation - - add English support to the document `dc27a3c` (by loitietu) - - move the documentation framework to VitePress `5c606d1` (by loitietu) [/MD]
[MD] ## v1.15.0 发布说明 **发布日期:** 2026-08-11 **版本对比:** v1.14.0...v1.15.0 ### 新功能 - 为 frontend 添加完整的运行时错误位置 `317429d`(由 loitietu 提供) - 适配完成 Shop 和 Menu 的工作流 `8ae91dd`(由 loitietu 提供) - 改进所有模块的 GUI 适配 `843ab34`(由 loitietu 提供) - 兼容 mute.lcui `2b77526`(由 loitietu 提供) - 兼容 blacklist.lcui `0b48ebd`(由 loitietu 提供) - 实现 PaginatedForm 的原生支持 `b1324fe`(由 loitietu 提供) - 完成 GUIManager 内存清理 `32d45a7`(由 loitietu 提供) - 适配 LanguagePlugin GUI `1030b35`(由 loitietu 提供) - 改进对 ddui 的原生支持 `6ce3e0b`(由 loitietu 提供) - 优化部分 frontend 内容 `8c9fdd1`(由 loitietu 提供) - 为 frontend 添加继承支持 `a6a3252`(由 loitietu 提供) - 为 frontend 添加匿名函数支持 `9751ab4`(由 loitietu 提供) - 改进 frontend 并添加类支持 `38d7c57`(由 loitietu 提供) ### 错误修复 - 修复 GUIManager 清理问题 `ef030c3`(由 loitietu 提供) - 修复了一些 GUIManager 问题 `a3c9d35`(由 loitietu 提供) - 修复了 frontend 的设计错误并拆分了 TemplateNode `cb6ee73`(由 loitietu 提供) - 修复命名空间问题 `0c74aef`(由 loitietu 提供) ### 文档 - 扩展 README.md `91d4330`(由 loitietu 提供) - 补充文档细节 `7b37224`(由 loitietu 提供) - 完善文档 `9184677`(由 loitietu 提供) [/MD]
[MD] ## v1.14.0 Release Notes **Date:** 2026-07-28 **Compare:** v1.13.0...v1.14.0 ### Features - - add English language support `6bc01e5` (by loitietu) - - add variable support for the frontend `93814a1` (by loitietu) - - make the built-in functions in the frontend support more return value types `0d15aef` (by loitietu) - - add a visitor pattern to the Compiler `97c90b9` (by loitietu) - - add an IR layer for the frontend `6f2dc25` (by loitietu) ### Refactors - - implement full-module expected refactoring `f076313` (by loitietu) ### Documentation - - complete the frontend error documentation `e894103` (by loitietu) - - Improve README.md `ddaf241` (by loitietu) ### Build System - - enable unity build for core modules `3ee4ab7` (by loitietu) [/MD]
[MD] ## v1.13.0 Release Notes **Date:** 2026-07-09 **Compare:** v1.12.0...v1.13.0 ### Features - - add compiler flags to fix warning issues `d1c21dd` (by loitietu) - - adapt to LeviLamina 26.20.0 `c3aaee4` (by loitietu) ### Documentation - - improve the documentation `2f5f11e` (by loitietu) ### Tests - - complete unit tests for all modules and fix several bugs `87dfa77` (by loitietu) ### Maintenance - - remove stale 'old-folder' directory after rename `c968646` (by loitietu) [/MD]
[MD] **PS: e......67?** ## v1.12.0 Release Notes - With LeviLamina 26.10.x **Date:** 2026-05-01 **Compare:** v1.11.2...v1.12.0 ### Features - - adapt to LeviLamina 26.10.9 `a3b32a6` (by loitietu) - - adapt to Minecraft 26.10 `bcc9a4f` (by loitietu) ### Refactors - - split the GUI parts of all modules `8163dfd` (by loitietu) - - change the project structure to accommodate subsequent versions `88d5bde` (by loitietu) ### Tests - - add unit test cases for some modules `ec63bfd` (by loitietu) ### Maintenance - - update version `33b132c` (by loitietu) - - add client build `386deee` (by loitietu) [/MD]