Repository navigation
v1.20.0 - 服务器状态通知与 MiniMessage 颜色
安装
下载 HuHoBot-Penguin_Spigot-1.20.0.jar,替换服务器 plugins/ 下的旧 jar 后重启即可。配置版本升到 12,启动时会自动补上 server-notify.* 默认值,不需要重新生成 config.yml。
新功能
- feat: 服务器状态通知(#27)—— 服务器关机、重启、意外关闭时向 QQ 群推送提醒。
server-notify配置组提供总开关 + 关机 / 重启 / 意外关闭三项独立开关与自定义消息,消息支持{server}、{platform}占位符 - feat: 关机通知在
onDisable里抢在 QQ 连接关闭前发送;重启与意外关闭只能在下次启动时判断,因此改为机器人连上 QQ 后补发(最多等 60 秒鉴权) - feat: 重启判定用
server-notify.restart-window(默认 180 秒),超过窗口再启动只当普通开机,不发通知 - feat: 群→游戏消息支持 MiniMessage(#29)——
<gold>、<#FFAA00>、<bold>、<gradient:#FF0000:#00FF00>等写法,与旧式&6/§6混用无冲突;十六进制输出§x§R§R§G§G§B§B,需服务端 1.18+ - feat: WebUI 新增「服务器状态通知」分组,
chat-format.from-group的说明补充 MiniMessage 写法
优化
- opt: 命令黑名单抽出
CommandBlacklistGuard统一规范化 —— 去斜杠、去bukkit:/minecraft:命名空间前缀、统一小写;平台能拿到命令表时按服务器解析出的主名匹配,/pl与/plugins一起拦下 - opt:
/execute as @a run op Steve这类包装命令会检查run后面的真实命令,最多递归 4 层 - opt: 黑名单匹配逻辑从
AgentManager与CommandSupport各写一份改为共用一处实现 - opt:
QClient.isReady()对外暴露 QQ 鉴权状态,供状态通知判断发送时机 - opt: Spigot 产物 relocate
net.kyori,自带一份 Adventure,避免与 Paper / 其他插件版本冲突
Bug 修复
- fix:
convertAmpersandColors正则&(\da-fk-orA-FK-OR)把a-f、k-o当成字面字符串联匹配,实际只匹配&6a-fk-orA-FK-OR这类长串 ——&6之类的旧式颜色码此前从未被转换 - fix: 游戏→群方向(
from-game、死亡播报、进退服通知)不再做&→§转换 —— QQ 不识别§颜色码,之前会把§原样发进群 - fix: 群成员昵称与消息内容会被当作 MiniMessage 解析,发一句
<red>就能把后续聊天全部染色;现在先用escapeTags转义再套模板 - fix: 消息里已存在的
§6颜色码在 MiniMessage 解析前用私有区字符临时保护,避免被当成非法标签吞掉
说明
- 跨进程状态文件
server-notify-state.properties记录clean/stop-time/jvm-start:clean=false说明上次崩溃、kill -9或断电;插件重载(同 JVM 重新onEnable)不会被当成关服或重启 - 崩溃通知只能在下次启动时补发 —— 进程已经死掉后这是唯一可行的时机
- 游戏→群方向不解析 MiniMessage,因为 QQ 不支持
§颜色码,原文直出 - 本次新增依赖
adventure-text-minimessage/adventure-text-serializer-legacy4.17.0,已打进产物并 relocate