build.106 更新说明
MySQL 8.0 数据库迁移兼容修复,以及全局商品 Lore 的空白分隔行与单项拆行。
适用版本:0.1.0+build.106
本次更新修复 build.105 在部分 MySQL 8.0 数据库上的启动失败,并让全局商品 Lore 正确保留空白分隔行及单项内的多行内容。
MySQL 8.0 数据库迁移兼容
build.105 为 liemc_shop_items.description_lore 创建 TEXT NOT NULL DEFAULT '' 字段。部分 MySQL 8.0 环境会拒绝这种普通字符串默认值,随后 LIEMC 因数据库初始化失败而停用,控制台可见:
BLOB, TEXT, GEOMETRY or JSON column 'description_lore' can't have a default value
build.106 的修复:
- 新建 MySQL 商品表时,
description_lore不再声明默认值。 - 旧表升级时先新增可空字段,再把已有记录回填为空字符串,最后改为
NOT NULL。 - 每次启动都会读取字段当前状态,可从 build.105 留下的半迁移状态继续执行。
- 多台子服几乎同时启动时,重复新增字段不会再导致其余迁移步骤中断。
- SQLite 仍使用适合 SQLite 的字段定义,不受 MySQL 分支影响。
不需要删除商品表,也不需要丢弃已有 EMC、解锁、收藏或商品数据。
全局商品 Lore 多行与空白分隔
config.yml 的 item-display.default-lore 现在支持两种多行写法:
item-display:
default-lore:
# 空字符串或只含空格的列表项会保留为空白分隔行。
- ""
- "&7价格:&e{emc} 点 EMC"
- "&7状态:&f{favorite}"
- " "
# 一个列表项中的 \n 会拆成两行。
- '&a左键获取:&f{left_amount} 个\n&6右键获取:&f{right_amount} 个'
- "&dShift+点击:&f{favorite_action}"
规则:
- ""与- " "都会在客户端 Lore 中占用一行,适合分隔价格、状态和操作提示。- 单项内的
\n会依次展开为多行,并逐行解析&颜色、RGB、MiniMessage 和变量。 description-lore仍作为单商品专属前缀,后面继续拼接全局模板。- 任意非空的单商品
lore仍表示完整覆盖;省略或填写lore: []才会继承全局模板。
修改后执行 /emc reload,关闭旧菜单并重新打开即可查看新 Lore。
从 build.105 升级
- 停服并备份数据库与
plugins/LIEMC/。 - 替换为
LIEMC-0.1.0+build.106.jar,保留原来的config.yml、gui.yml、lang.yml和数据库表。 - 多子服环境先启动一台,确认 LIEMC 正常启用且迁移日志无异常,再启动其余子服。
- 执行
/emc reload,重新打开获取、搜索和收藏菜单检查 Lore。 - 验证原有 EMC 余额、解锁、收藏与跨服商品均未变化。
如果 build.105 已启动失败,不要删除 description_lore 或整张 liemc_shop_items 表;直接使用 build.106 重启即可让迁移按当前状态继续。