All versions
1.0.0
Release
CheckMOD 1.0.04 months ago 22
Compatibility
Minecraft: Java Edition
1.21–1.21.1
1.20.x
Platform
Paper
Changes
- 需要PacketEvents 2.7.0+ 作为前置插件。
- 问题反馈联系作者QQ:1464670605 (记得备注来意)
功能
- 品牌检测 — 拦截
minecraft:brand通道,识别客户端品牌(vanilla、fabric、forge、作弊客户端等) - Forge Mod 检测 — 解析 FML 经典握手(1.20~1.20.1)中的完整 Mod 列表
- Forge FML3 检测 — 处理
fml:loginwrapper(1.20.2+),扫描黑名单 Mod - Fabric 检测 — 检测
fabric:通道,识别 Fabric 加载器 - 通道黑名单 — 匹配客户端发送的任意网络通道,支持
*通配符 - 品牌白名单/黑名单 — 精细控制允许/拒绝的客户端品牌
- vanilla-only 模式 — 仅允许纯原版客户端进入
- 单次检测 — 玩家加入时检测一次,之后不再拦截,不影响性能
- OP 命令 — 查看玩家 Mod 信息、重置检测状态
工作原理
玩家连接 → Configuration/Play 阶段 → PacketEvents 拦截 PluginMessage 包
├─ minecraft:brand → 品牌检查 → 黑/白名单比对 → 违规则踢出
├─ fml:handshake → 解析Mod列表 → 逐个比对黑名单 → 违规则踢出
├─ fml:loginwrapper → 扫描Mod ID(FML3) → 比对黑名单 → 违规则踢出
├─ fabric:* → 检测Fabric加载器 → vanilla-only则踢出
└─ 其他通道 → 通道黑名单匹配 → 违规则踢出
PlayerJoinEvent → 标记检测完成 → 不再拦截该玩家后续包
命令
| 命令 | 权限 | 说明 |
|---|---|---|
/cm reload |
checksmod.reload |
重载配置文件 |
/cm check <玩家> |
checksmod.check |
查看玩家的 Mod 和通道信息 |
/cm recheck <玩家> |
checksmod.check |
重置检测状态,该玩家重连后重新检测 |
/cm list |
checksmod.check |
查看所有已检测的玩家 |
/cm stats |
checksmod.check |
查看统计信息 |
权限
| 权限 | 默认 | 说明 |
|---|---|---|
checksmod.admin |
op | 管理权限(包含以下所有) |
checksmod.reload |
op | 重载配置 |
checksmod.check |
op | 查看玩家 Mod 信息 |
配置说明
# 检测模式: KICK(踢出), WARN(仅记录)
mode: KICK
# 仅允许原版客户端 (启用后 Fabric/Forge/Lunar 等都被踢出)
vanilla-only: false
# 品牌白名单 (留空=允许所有, 非空=仅允许列表中的品牌)
brand-whitelist: []
# 品牌黑名单 (匹配客户端发送的品牌标识)
brand-blacklist:
- "wurst"
- "future"
- "liquidbounce"
- "meteor"
# ...
# Mod ID 黑名单 (Forge/Fabric 握手协议中的 Mod ID)
mod-blacklist:
- "xray"
- "baritone"
- "wurst-client"
# ...
# 通道黑名单 (匹配客户端发送的网络通道,支持通配符 *)
channel-blacklist:
- "wurst:*"
- "xray:*"
# ...
Projects on Modrinth are automatically available through a Maven repository for use with JVM build tools such as Gradle. To learn more about the Modrinth Maven API, click here.
Note: When available, you should use the creator's maven repo instead as it will have transitive dependency information that the Modrinth Maven API does not. You may also end up with duplicate dependencies if you use a mix of Modrinth and non-Modrinth Maven repositories for your dependencies, because the group identifier will be different when served through the Modrinth Maven API.
Maven coordinates:
Version ID:
build.gradle:
repositories {
exclusiveContent {
forRepository {
maven {
name = "Modrinth"
url = "https://api.modrinth.com/maven"
}
}
// forRepositories(fg.repository) // Uncomment when using ForgeGradle
filter {
includeGroup "maven.modrinth"
}
}
}
// Standard Gradle dependency
dependencies {
implementation "maven.modrinth:DK4x1F4E:RDJ4dTac"
}
// Legacy Loom dependency
dependencies {
modImplementation "maven.modrinth:DK4x1F4E:RDJ4dTac"
}

