Mod Update Checker

Check and update server-side mods from Modrinth.

tool
management

Installation command

!!MCDR plugin install mod_update_checker

Author

Synced at

...

Last update

...

Latest version

Total downloads

101

Back to catalogue

ModUpdateChecker-v1.6.0.mcdr

Version

1.6.0

Date

October 10, 2026

Size

94.06 KiB

Downloads

17

MD5

b8ba22dcc0359793fbaacb5f518551d2

SHA256

3e38cdea34277d31000fc14e1f5ca39994c8d2bdab62dd1fd5317d3593550c35

MCDR Plugin Dependencies

Plugin IDRequirement
mcdreforged>=2.13.0

Python Package Requirements

Python PackageRequirement

none

这一版把 .old 备份纳入管理:列表里看得见、可筛选、可删除,但默认一个字节都不删;另有一轮 全代码审查和多处界面修正。

新增

  • .old 备份成为一类状态(old_backup,图标 ⏪):出现在 !!modupdate list(!!modupdate list old_backup 可单独筛出)、!!modupdate info(文件名、大小、留了多久)与 !!modupdate status(几个、共多大、几个超期)。它不参与「共检查 N 个 jar」,也不会被拿去问 Modrinth。
  • 删除旧备份:!!modupdate delete <文件名 / 编号> 删一个、!!modupdate delete all 删全部(不看天数)、!!modupdate cleanup 只删已过期的(默认满 30 天)。三条都先列计划、再由 !!modupdate confirm 确认;第一次敲 cleanup 通常什么都不会删,它会报出现状与两条路(点名删除,或调小 cleanup.max_age_days)。
  • 删除总开关 cleanup.allow_delete(默认关闭):关着时 delete / cleanup 和它们的 confirm 一律被拒,插件不删除 mods/ 里的任何文件;详情页的 [删除此备份] 按钮与状态屏都会说明这一点。
  • 到期提醒 cleanup.enabled(默认关闭,排在总开关之后):发现有过期备份时提醒一次并摆好计划,直接 !!modupdate confirm 即可;不会顶掉正在等待确认的其它操作。

变更

  • 删除的安全规则:delete / cleanup / 确认 / 提醒四处走同一个开关;只认插件自己生成的备份名(<文件名>.jar.old、.jar.old.2 这类),删除时重新核对,要删的集合变了整条计划作废,指向真 Mod 的编号会被拒绝。
  • 列表配色按「一块是什么」定:编号永远黄、名称永远白、[版本] 绿、[详细信息] aqua;状态色 绿 = 已是最新、蓝 = 有更新与待安装、红 = 有问题、其余灰(图标、浮窗第一行、汇总分节标题与通知都用同一张表)。
  • 状态收进 [状态: 图标] 一格:✔ 已是最新、↑ 有新版可下载、↓ 已下载待安装、❌ 无适配构建、✘ 出错、☆ 本地比上游新、? 认不出上游、○ 不是 Mod、⏪ 旧版备份、— 配置里忽略;含义在浮窗第一行(状态名 + 状态色)。图标只取原版字体自带的符号。
  • 版本收进绿色 [版本]:悬停展开(有更新时是红 >>> 绿);控制台与日志照旧印版本数字。
  • 列表行四格对齐:[编号] 名称 [版本] [状态] [详细信息];名称超宽截成 ...(全名在悬停里);补齐按截图实测的字宽模型(i j l t f I 1 记 3/4 个字母、. [ ] 记 1/2、汉字记 2¼;控制台等宽仍按字符数)。完全对齐受字体限制做不到,README 已写明。
  • 每一屏加了与标题栏同宽的收尾线;翻页行改成标题栏样式(到头一侧变灰、点不动)。
  • 悬停与点击:帮助页只留短句、说明文字可点、细节进浮窗;[详细信息] 的浮窗说明它执行 !!modupdate info <Mod 名>;计划里的 confirm 是亮红色按钮(点击只填入输入框,不直接执行)。
  • 文案修正:状态不再一行说两遍;行上的版本注解与状态标签统一((已下载,未安装) 归状态);括号不再套括号;列表末尾悬空的冒号拆开;本地版本更新 改名 本地比上游新;英文状态名收成标签长度;游戏内中文括号统一为半角(71 条)。

修复

  • 备份的年龄以前算错:改名成 .old 会保留原时间戳,升级后会把所有旧备份当成「早已过期」;现在安装时把时间戳刷成它成为备份的那一刻。
  • 删掉的文件不再留在列表里:删除成功后条目会从报告与 last_report.json 一并摘掉。
  • 控制台的列表行重新显示版本号:此前把行形态统一成聊天形态,控制台也印了 [版本] 标签,而终端里没有悬停。
  • 浮窗不再整段溢出:客户端只在空格处断行,中文没有空格,现在全部手工断行(每行 ≤ 32 显示列);list 的状态清单改成一行一个。
  • 缓存文件内容异常不再导致插件启动失败(resolve-cache.json 被写成 [] 之类):!!muc status 的那行日志现在先检查文件形状。

内部整理

  • 一次全代码审查:插件自身的 JSON 统一走原子写;两处重复的下载计数合并为一个函数;备份列表少一次系统调用;删掉一处无用解包;语言文件 304 条逐键核对无孤儿。未改动的都记了理由(README-dev.md)。
  • 渲染路径量过之后,把每行重算的格宽改为按语言缓存(195 µs → 0.8 µs / 10 行);扫描不并行是量过的决定。

验证

  • 测试 725 项全部通过(v1.5.0 是 652 项);27 处注入验证全部被抓到(撤掉一条守卫,对应测试确实失败)。
  • 真实 MCDR 2.13.0 / 2.14.1 / 2.15.0 / 2.15.7 / 2.16.0 五版本各跑一遍完整流程,逐项一致(54 项 required_keys + 2 项附加检查;v1.5.0 是 43 项)。
  • 产物可复现、换行归一、包内无注释与 docstring、包内代码可编译。