数据包系统
Monoceros 的 Wireshark 模块让你可以监控、过滤、追踪、拦截甚至重写 Minecraft 的网络数据包。你可以用它来调试客户端行为、记录特定数据包的收发情况,或者在数据包到达客户端之前修改其内容。
核心概念
- Packet Tap:数据包探针,是 Wireshark 的基本工作单元。每个 Tap 定义了要监听哪些数据包、如何过滤、是否追踪、是否拦截或重写
- 会话(Session):每个玩家拥有独立的数据包会话,可以针对单个玩家启用或禁用特定 Tap,也可以查看该玩家的追踪记录
- 双重安全门控:拦截和重写功能需要同时在 Tap 定义和
config.yml全局配置中开启才会生效
工作流程
- 在插件目录下的
wireshark/文件夹中编写 Packet Tap 定义文件(YAML 格式) - 插件加载时自动解析并注册所有 Tap 定义
- 当匹配的数据包经过时,Tap 按定义执行过滤、追踪、拦截或重写操作
- 如果配置了路由(
route),匹配的数据包会被转发到指定的脚本或动作处理
文件监视器会自动检测 wireshark/ 目录下的文件变更,修改后热重载生效,无需重启服务器。
安全机制
拦截(intercept)和重写(rewrite)是高风险操作,因此采用双重门控设计:
| 条件 | 说明 |
|---|---|
Tap 定义中 intercept: true | 单个 Tap 声明需要拦截能力 |
config.yml 中 wireshark.allow-intercept: true | 全局允许拦截 |
两个条件必须同时满足,拦截才会实际生效。重写(rewrite)的逻辑完全相同,对应 wireshark.allow-rewrite 全局开关。
提示
如果你只是用来调试和追踪数据包,不需要开启拦截和重写的全局开关。
相关页面
- Packet Tap 定义 —— Tap 定义文件的完整字段说明
- 会话与追踪 —— 玩家级数据包会话与追踪记录