ServerLogFilter-v1.4.1.mcdr
版本
1.4.1
日期
2026年10月7日
大小
20.80 KiB
下载量
1
MD5
cd293168d484f619c35df45b190d6fcaSHA256
08231bdfb44560e701f1693e803640c2991f8a0609c3c3856d581161e6f8e544MCDR 插件依赖
| 插件 ID | 依赖版本 |
|---|---|
| mcdreforged | >=2.15.0 |
Python 包依赖
| Python 包 | 依赖版本 |
|---|---|
无 |
这个版本做了什么
修掉一个会**伪造「零命中提醒」**的 bug,加上两道规则守卫,并把打包变成可复现。
⚠️ 修复:!!logfilter reload 会抹掉本轮已命中的次数
复现:一个开服周期内某规则命中 5 次 → 敲 !!logfilter reload → 计数双双归零 →
服务端停止时 hits_last_session = 0、zero_streak +1。
于是一条明明在命中的规则会被记成「本轮零命中」,几轮之后弹出那条假的 「这条规则连续 N 次开服零命中」。这正是这个提醒功能本来要消灭的噪音。
为什么这是疏漏而不是设计:插件重载(!!MCDR reload plugin)早就解决了同一问题,
命令重载漏了。而且 README 推荐的日常流程正是「改配置 → reload 立即生效,不必重启」。
现在同名规则的计数会接着数,只有真从配置里删掉的规则才丢计数; 重载回执里也会说明「本轮已命中的 N 次继续保留」。
⚠️ 新增:规则「匹配一切」会被大声警告
.、.*、^、a?、\w*、.+ 会隐去所有服务端输出,控制台一片空白,
管理员会以为服务端挂了——而此前插件把它当正常规则收下、只字不提。
现在用一组差异极大的探测串(字母 / 数字 / 标点 / 空白 / 中文)判断它是否命中一切。
只警告、不丢弃——把管理员亲手写的规则悄悄扔掉是另一种意外。
警告出现在 MCDR 日志,也出现在 !!logfilter list 的状态页上(红字)。
新增:重复规则去重
同一条规则写两遍时,第二条永远不可能命中(match() 返回第一条),但统计文件以规则文本
为键、两条共享一份记录,于是第二条的「连续零命中」会一直涨——又一个假提醒。
现在会去重并播报。
============ Server Log Filter v1.4.1 ============
规则数: 2 本次已隐去: 0 行
语言: zh_cn(配置指定)
[1] 0 次 -- .
[2] 0 次 -- joined the game
匹配一切: 1 条规则(会隐去所有输出,请检查是不是写成了 . / .* / ^ 之类)
重复: 1 条规则(同一条写了多次,只有第一条生效)
提示: 服务端自身日志不受影响;被隐去的行仍会正常派发给插件事件。
变更
!!logfilter test现在列出所有命中的规则,而不是只报第一条。 (只说第一条会让人以为其余几条没匹配上,然后去改本来写对的规则。)- 状态页新增两行:
匹配一切:与重复:,与既有的已跳过:并列。 (三个桶各归各的:回溯是「会卡」、匹配一切是「会静音」、重复是「白写」。)
工程改进
- 新增 GitHub Actions CI:此前 291 个测试与 51 条变异全靠手动跑。 三个 job —— 单元测试(Python 3.10 / 3.13)、变异检查、真实 MCDR 端到端。 这也是本仓库第一次在 Python 3.10 与 Linux 上验证(此前只在开发机上跑过 3.13/Windows)。
- 打包现在是可复现的:同样源码永远打出同样字节(zip 时间戳固定 1980-01-01、
权限位固定
0644)。此前 zip 记录文件 mtime,换一天或换台机器打包就得到不同哈希 —— 这直接让下面那个 SHA256 可以被你验证:python pack.py && sha256sum。 本版在分支和合并提交上各打了一次,哈希完全相同。 - 清掉 3 处历史遗留的无用常量;修掉文档里几处过期说法(测试一览表还在描述
「
reload后计数归零」——那正是本版修掉的行为)。 - 测试夹具里的版本号原来是硬编码的,已与元数据脱节(夹具说 1.4.0、元数据是 1.4.1),
导致顶栏测试是拿过期值在断言;改为直接读
mcdreforged.plugin.json。
验证
| 项 | 结果 |
|---|---|
| 测试 | 291 passed(单元 254 + 真实 MCDR 端到端 37) |
| 变异 | 51/51 全部被抓住 |
| 矩阵 | 2.15.0 / 2.15.7 / 2.16.0 PASS;2.13.0 / 2.14.1 按设计被拒 |
| CI | 四个 check 全绿(含 Python 3.10 与真实 MCDR 端到端) |
| 可复现 | 分支与合并提交两次打包,字节完全相同 |
端到端跑的是构建出来的包,所以「剥注释」「!!lf 别名」「两道守卫」都是端到端验证过的。
升级说明
无需改动任何配置。 两处留意:
- 若配置里有重复规则或匹配一切的规则,加载时会在控制台看到提示, 但规则行为与之前完全一致(匹配一切的规则仍然生效)。
- 本条修复只影响统计与提醒的准确性——此前你可能因假提醒而误删过其实正常的规则,可以参考这份说明加回来。
产物
| 文件 | 大小 | SHA256 |
|---|---|---|
ServerLogFilter-v1.4.1.mcdr | 21,302 B | 08231bdfb44560e701f1693e803640c2991f8a0609c3c3856d581161e6f8e544 |
包内 7 个文件:mcdreforged.plugin.json、server_log_filter/{__init__.py,i18n.py}、
server_log_filter/lang/{en_us,zh_cn}.json、CHANGELOG.md、LICENSE
(三个 README 都不打包)。