[MD]
## 1.0.2 Release 更新日志
**发布日期:** 2026-06-24
**版本号:** v1.0.2
### 新增特性
- **方块/物品类型映射表**
新增 `block_items` 表,用数字 `uid` 代替 `operations` 表中存储的长字符串(如 `minecraft:stone`),显著压缩数据库体积。
- **本地离线迁移工具**
当数据库过大、服务器内存不足以完成自动迁移时,可下载 `migrate_db.exe` 到本地 PC 进行离线转换,迁移完成后将数据库上传回服务器即可。
### 优化
- 大幅减少重复类型字符串造成的空间浪费,实测可压缩 30%~60% 的数据库大小。
- 服务器启动时自动检测并迁移旧数据,迁移过程分批进行,避免内存溢出。
- 所有事件回调增加异常保护,防止因单个方块数据异常导致引擎崩溃。
### 修复
- 修复了 `onBlockChanged` 事件中因方块 `type` 为 `undefined` 引发的 `TypeError`。
- 修复了旧版本数据库迁移时一次性加载全部记录导致 `bad_alloc` 的问题。
- 修复 Web 面板端口被占用误报
### 注意事项
- **自动迁移需要一定内存**:默认每批处理 5000 条记录,若数据库极大(>10万条)且服务器内存较小,建议使用**本地迁移工具**在个人电脑上处理。(存放于插件压缩包/BlockLog/migrate_db.exe)
- 迁移完成后将在控制台输出创建的映射项数及预估节省空间。
- 本次更新完全兼容旧数据库,无需手动干预。
## 本地离线迁移工具 (migrate_db.exe)
当服务器内存不足以完成自动迁移时,可使用此工具在本地 PC 上完成数据库的 UID 转换。
**使用方法:**
1. 将服务器上的 `plugins/BlockLog/blocklog.db` 下载到本地。
2. 打开命令行,执行:
```
migrate_db.exe blocklog.db
```
3. 等待程序运行完毕,会输出迁移进度和节省空间信息。
4. 将转换后的 `blocklog.db` 上传回服务器原位置,重启服务器即可。
[/MD]