运维排障
本页按“先确认插件是否正常启动,再确认具体功能”的顺序排查。
启动失败或红字报错
先看控制台启动日志:
- 是否缺少硬依赖
NBTAPI。 - 是否有运行库下载失败,例如 Kotlin、Exposed、HikariCP 或数据库驱动。
- 是否有
database.yml连接失败。 - 是否有 YAML 解析错误,通常是缩进、Tab、冒号或引号问题。
首次启动不要热加载。离线服务器请先在网络正常的同版本环境启动一次,复制服务端根目录下的 libraries 到正式服。
配置修改不生效
确认修改的是实际运行目录:
服务端根目录/plugins/SakuraBind
保存后可执行:
/sakurabind reload
/sakurabind reload settings.yml
以下内容通常需要重启:
block-listenerblock-cache-backup.enable与block-cache-backup.interval-minutesentity-listenersend-back-databasemodules/*.yml中写明重启生效的模块总开关- 日志文件路径
- 缓存大小
匹配器不生效
先确认测试玩家是不是 OP。OP 默认拥有 sakurabind.bypass.all,会跳过点击、捡起、丢弃、使用、装备、扫描器等自动绑定监听。测试自动绑定时请用非 OP 账号,或在权限插件中把测试玩家的 sakurabind.bypass.all 设为 false。
手持目标物品执行:
/sakurabind test tryMatch <匹配器ID>
再按输出检查:
name只匹配自定义名,不匹配原版翻译名。name-without-color、lore-without-color会去除颜色代码后匹配。material是正则;materials是 Bukkit 材质名列表。- 正确键名是
materialIds,不是materialId。 - 多个
match条件是同时满足。 - 多个匹配器都能命中时,靠前的匹配器先生效。
查看手持物 NBT:
/sakurabind nbt
输出在控制台。
遗失物品找不回
检查顺序:
database.yml是否连接成功。config.yml是否send-back-database: true。send-back-queue是否至少保留database。- 玩家背包或末影箱是否已满。
- 是否安装了背包同步插件,玩家是否还在同步保护阶段。
- 控制台是否有数据库写入异常。
玩家领取:
/sakurabind getLost
管理员查看或编辑暂存箱:
/sakurabind openLost <玩家名或UUID> 1
方块或实体绑定无效
方块绑定需要:
config.yml
block-listener: true
实体绑定需要:
config.yml
entity-listener: true
修改后重启服务端。实体绑定命令只在 Minecraft 1.13+ 可用。
不要删除 plugins/SakuraBind/data。启用方块或实体绑定后,该目录会保存持久化绑定缓存。
方块缓存异常恢复
方块缓存备份位于 plugins/SakuraBind/backup/block-cache。检测到上一次 JVM 异常退出时:
- 主方块缓存仍有数据:插件跳过恢复,以主缓存为准。
- 主方块缓存为空:插件依次验证最新的
a/b完整快照,恢复第一份有效数据。 - 快照条目数不匹配或读取失败:插件尝试上一份快照,并在控制台输出警告。
- 没有可用快照:插件保持空缓存并输出警告,不会盲目使用未完成备份。
恢复后插件会清理已加载世界中位置为空气的方块条目;未加载或不存在的世界不会在这一步清理。排障时请保留 data 和 backup/block-cache 两个目录,并检查控制台中的“方块绑定备份/恢复”日志。若看到 interval-minutes 必须大于 0,请改为正整数并重启。
性能异常
优先检查这些配置:
scanner-period是否过低。settings.yml是否有大量复杂正则匹配器。- 是否全局开启了
auto-bind.enable或auto-unbind.enable。 modules/migration.yml是否迁移完成后仍保持开启。modules/unique-item.yml是否在生产环境扫描过多物品。- 是否频繁执行
/sakurabind superCallback。
大型服建议先用测试服验证自动绑定、数据迁移和唯一物品功能,再放到正式服。
需要审计日志
默认日志系统关闭。按需开启:
logger.yml
enable: true
console: true
file: true
database: false
送回日志:
send-back-logger.yml
enable: true
console: true
file: true
database: false
修改日志文件路径后重启服务端。