Server Log Filter
Hide noisy server console lines from the MCDR console with configurable regex rules, without touching the server's own log file.
Installation command
!!MCDR plugin install server_log_filterAuthor
Repository
Synced at
...
Last update
...
Latest version
Total downloads
44
Back to catalogue
ServerLogFilter-v1.4.0.mcdr
Version
1.4.0
Date
October 4, 2026
Size
19.30 KiB
Downloads
4
MD5
c1d2c01707143620cfb4eebc8ad31c26SHA256
6f8b361ac5fe0e9fa98de393b10477ebb8d33071c048b71d49e767b81c900997MCDR Plugin Dependencies
| Plugin ID | Requirement |
|---|---|
| mcdreforged | >=2.15.0 |
Python Package Requirements
| Python Package | Requirement |
|---|---|
none |
一句话
命令面有了简写与帮助页、全部限管理员;两个界面重做成同一套外观;包体积减少 37%。
修复 / 新增
1. 命令有了简写:!!lf
!!lf 与 !!logfilter 完全等价,两种拼法都登记进了 MCDR 的 !!help。
实现上它们是同一个命令节点的两条字面量,不是两棵复制出来的命令树——后者迟早会漂移成两种行为。
之前
!!lg用不了,是因为别名是!!lf(l+f)。
2. 新增帮助页
直接输入 !!logfilter(或 !!lf)就会看到命令列表;!!logfilter help 是同一屏。
============ Server Log Filter v1.4.0 ============
用法: !!logfilter <子命令>(!!lf 亦可)
以上命令均需管理员权限(MCDR 的权限与游戏内 OP 无关)
!!lf help -- 显示本帮助
!!lf list -- 查看状态
!!lf test -- 测试某行是否会被隐去
!!lf reload -- 重读配置并立即生效
!!lf reset -- 清空零命中计数
- 顶栏两侧等号按标题长度自动补齐到约一行宽(53 列,MC 聊天默认字体),
插件名
aqua、版本号yellow——换版本号也不会破坏对称。 - 命令排成一列对齐,说明文字不因子命令长短而左右乱跳。
- 配色统一为:命令
aqua、说明white、分隔符gray、权限提醒yellow。 界面里不再出现深灰字——管理员多半在深色终端上看,深灰字几乎看不见。 - 帮助页不再重复状态页那句运行提示(「服务端日志不受影响」之类):这屏是命令清单, 运行时的注意事项留在状态页。
3. 帮助行可点击(游戏内聊天)
点一下等于敲了那行命令。test 是例外:它还要跟一段日志文本,直接执行没有意义,
所以只把 !!lf test 填进输入框。
可点击只在游戏内聊天里有效。 MCDR 把消息渲染到控制台时走
to_colored_text(), 而它明确「丢弃点击与悬停事件」——所以控制台里那几行本身就是可复制的命令文本, 不依赖按钮。
4. 全部子命令改为仅管理员可用(ADMIN)
状态页会印出你写的每一条规则、test 会验证日志内容——这些不该让普通玩家看到。
被拒绝时会一并说明为什么:
需要管理员权限。MCDR 的权限来自 permission.yml,与游戏内 OP 无关;
请让管理员在 MCDR 控制台执行:!!MCDR permission set <你的ID> admin
MCDR 默认只回一句「权限不足」,而它完全不读游戏内的 OP 状态(权限只来自
permission.yml,未登记的玩家默认 user)——这正是「我在游戏里是 OP 却用不了」的根源。
5. 状态页(!!lf list)改成和帮助页同一套样子
同一个顶栏、同样的配色、规则行也用同样的 -- 分隔符并对齐。整屏每行都是「标签 + 内容」或一条规则:
============ Server Log Filter v1.4.0 ============
规则数: 2 本次已隐去: 0 行
语言: zh_cn(配置指定)
[1] 0 次 -- standing on air - force-sending blocks below (上次命中:第 2 个开服周期)
[2] 0 次 -- joined the game
已跳过: 1 条规则(正则写错或回溯风险,原因见 MCDR 日志)
开服周期: 3 个
提示: 服务端自身日志不受影响;被隐去的行仍会正常派发给插件事件。
6. 规则编号不再有多余空格
[ 1] 里那个空格是为「10 条以上时 ] 能对齐」留的,但 9 条以内它纯粹是噪音。
现在宽度按当前条数算:9 条以内印 [1],10 条以上才补成 [ 1] / [12]。
包体积:31,454 B → 19,764 B(−37%)
| 体积 | |
|---|---|
| 1.3.0 | 25,739 B |
| 本版开工时 | 31,454 B |
| v1.4.0 | 19,764 B(比开工时 −37%,比 1.3.0 还小 23%) |
最大的一笔来自一个想法:打包时剥掉注释与 docstring,仓库里完整保留。
- 注释与 docstring 占
__init__.py原始字节的 16%,却占它压缩后体积的一半—— 自然语言不重复,deflate 对它几乎无能为力。 - 用
tokenize而不是正则找注释:字符串里的#(URL、颜色码)会被正则误切。 - 清空而不删行:行号与仓库逐文件一致,所以从已安装插件报出的 traceback 仍指向
仓库源码的同一行。函数体只剩一句 docstring 时补
pass。 - 另外把包内 CHANGELOG 精简到最新一版该有的篇幅(详细内容就在这份说明里)。
试过但没做的(顺便省得你再想):
- ⛔ bzip2 / lzma:纸面能再小 10%,但 CPython 的
zipimport只认 deflate—— 换上之后zlib.error: Error -3 while decompressing data,插件完全加载不了。 这是硬限制,不是性能取舍。 - 合并两个语言文件:省 3.5%,但要改掉
lang/<code>.json的约定、动加载器和约 30 条语言测试,不值。 - 语言/元数据 JSON 压成单行:合计省 0.7%,牺牲仓库可读性,不值。
- 删掉配置项的长说明:那 11 条会被写进你的
config.json当选项注释,是插件唯一的自带文档。
升级说明
无需改动任何配置。 只有两处需要留意:
- 裸敲
!!logfilter现在给帮助;看状态请敲!!logfilter list(或!!lf list)。 - 普通玩家不再能使用这些命令,会看到「权限不足」及其原因。 如果你是管理员却用不了,说明 MCDR 里还没登记你——见上面的提权命令。
兼容性
最低 MCDR 版本仍为 2.15.0,未引入新的 MCDR API。已在 2.15.0 / 2.15.7 / 2.16.0 上实测通过; 2.13.0 / 2.14.1 仍由依赖检查干净拒绝。
测试
- 测试 221 → 263(单测 188 → 226,真机端到端 33 → 37)
- 变异 33 → 46(46/46 全部被抓住)
- 新增的端到端用例之一是在真实 MCDR 上真的敲一遍
!!lf: 探针插件在启动后调用server.execute_command(),用横幅夹住控制台输出再逐段断言—— 这样「别名到底有没有注册进 MCDR」藏不住。 - e2e 装进 MCDR 的正是构建出来的包,所以「剥注释」也是端到端验证过的。
产物
| 文件 | 大小 | SHA256 |
|---|---|---|
ServerLogFilter-v1.4.0.mcdr | 19,764 B | 6f8b361ac5fe0e9fa98de393b10477ebb8d33071c048b71d49e767b81c900997 |
包内固定 7 个文件:mcdreforged.plugin.json、server_log_filter/{__init__.py,i18n.py}、
server_log_filter/lang/{en_us,zh_cn}.json、CHANGELOG.md、LICENSE
(三个 README 都不打包)。