ClientDetectorPlus 是一款用于检测玩家客户端类型的 Minecraft 服务器插件。它通过分析玩家加入时发送的网络数据包来识别其使用的客户端(如 Forge、Lunar Client 等)或基岩版玩家,并允许管理员对特定客户端进行管控和自动处罚。
工作原理
当玩家加入服务器时,其客户端会向服务器发送一个数据包(PlayInCustomPayload,也称为插件消息)。本插件利用 PacketEvents API 捕获此信息,并检查其内容中是否包含特定客户端的标识信息。
- 大多数客户端可通过此方法检测。
- 部分客户端会伪装成“原版”客户端。
- 一些作弊客户端可能发送虚假数据包来欺骗检测,此行为无法完全阻止。
主要特性
- 客户端检测:检测玩家的客户端,并可自动处罚不受欢迎的客户端。
- 客户端控制:管理玩家的客户端/模组(仅限兼容的客户端/模组)。
- 高级警报系统:可配置通知管理员的方式。
- ViaVersion 兼容:可与 ViaVersion 一同使用。
- Geyser 支持:支持检测通过 Geyser 连接的基岩版玩家。
命令
/cdp list <java|bedrock>- 打开显示所有已连接的 Java 版或基岩版客户端的 GUI。/cdp lookup <player>- 查看指定玩家的客户端信息。/cdp lockdown <enabled|disabled>- 启用或禁用服务器锁定。/cdp tempwhitelist <add|remove> <player>- 临时添加或移除玩家的检查绕过权限(此列表在插件重载时会恢复为配置文件的默认值)。/cdp reload- 重载插件配置。
权限
主权限节点 clientdetectorplus.* 默认授予 OP,包含所有子权限。
通知权限
clientdetectorplus.notify.*- 接收所有客户端检测通知。clientdetectorplus.notify.join- 接收玩家加入通知。
绕过权限
clientdetectorplus.bypass.*- 绕过所有客户端检测。clientdetectorplus.bypass.whitelist- 绕过白名单。clientdetectorplus.bypass.blacklist- 绕过黑名单。
命令权限
clientdetectorplus.command.*- 使用所有 CDPlus 命令。clientdetectorplus.command.cdp- 使用主命令。clientdetectorplus.command.cdp.reload- 重载插件。clientdetectorplus.command.cdp.list- 列出客户端。clientdetectorplus.command.cdp.lockdown- 使用服务器锁定。
- `clientdetectorplus.command.cdp.lockdown.enabled` - 启用锁定。- `clientdetectorplus.command.cdp.lockdown.disabled` - 禁用锁定。clientdetectorplus.command.cdp.tempwhitelist- 管理临时白名单。
- `clientdetectorplus.command.cdp.tempwhitelist.add` - 添加玩家。- `clientdetectorplus.command.cdp.tempwhitelist.remove` - 移除玩家。clientdetectorplus.command.cdp.lookup- 查看玩家客户端信息。
GUI 权限
clientdetectorplus.gui.*- 访问所有 GUI。clientdetectorplus.gui.openactions- 打开操作 GUI。clientdetectorplus.gui.openjavalist- 打开 Java 客户端列表 GUI。clientdetectorplus.gui.opengeyserlist- 打开 Geyser 客户端列表 GUI。clientdetectorplus.gui.kick- 从 GUI 踢出玩家。clientdetectorplus.gui.ban- 从 GUI 封禁玩家。clientdetectorplus.gui.mute- 从 GUI 禁言玩家。clientdetectorplus.gui.op- 从 GUI 授予玩家 OP。clientdetectorplus.gui.deop- 从 GUI 撤销玩家 OP。clientdetectorplus.gui.unmute- 从 GUI 解除玩家禁言。clientdetectorplus.gui.inventory- 从 GUI 查看玩家背包。clientdetectorplus.gui.enderchest- 从 GUI 查看玩家末影箱。
如何安装
单 Spigot/Bukkit 服务器
- 将插件文件放入服务器的
plugins文件夹。 - 下载并安装最新版本的 PacketEvents。
- 重启服务器。
- 配置插件。
兼容性
- ClientDetector 支持从 1.16.5 开始的所有版本。
- 兼容大多数服务端分支,如 Spigot、Paper、PaperSpigot 和 Folia。
- 注意:未在 Archlight 及其他混合类型服务端上进行测试。
变量占位符
%clientdetectorplus_pluginVersion%%clientdetectorplus_pluginAuthor%%clientdetectorplus_baseServerVersion%%clientdetectorplus_serverPackage%%clientdetectorplus_isPluginEnabled%%clientdetectorplus_isPluginUpdateAvailable%%clientdetectorplus_isFloodgateEnabled%%clientdetectorplus_isViaVersionEnabled%%clientdetectorplus_isProtocolLibEnabled%%clientdetectorplus_isPAPIEnabled%%clientdetectorplus_isJavaClient%%clientdetectorplus_isBedrockClient%%clientdetectorplus_javaClientName%%clientdetectorplus_javaClientVersion%%clientdetectorplus_javaClientUuid%%clientdetectorplus_javaClientUsername%%clientdetectorplus_bedrockClientVersion%%clientdetectorplus_bedrockClientXuid%%clientdetectorplus_bedrockClientUsername%
客户端/模组检测
以下列出部分可被检测的常见客户端。如果客户端报告了品牌名称,则可以被检测,否则很可能仅显示为 Vanilla(原版)。
- Forge
- 5Zig Mod
- LabyMod
- Lunar/Apollo Client
- Polar Client
- MysteryMod
- Pixel Client
- LiteLoader
- PvPLounge Client
- Fabric
- Rift
- Cracked Vape
- Vivecraft
- Hyperium
- PXMod
- Winterware
- Feather Client
- Minecraft-Console-Client
- Optifine
- Vanilla
客户端控制
支持对以下客户端/模组进行功能限制
- Badlion:允许禁用任何模组。
- Lunar Client:允许禁用任何模组(此功能需要安装服务端 LunaAPI 才能生效)。
- LabyMod:允许禁用特定模组和部分 GUI。
- BetterSprinting:允许禁用整个模组或部分功能。
- FiveZig:允许禁用特定模组。
- WorldDownloader:允许完全禁用该模组。
- Axolotl Client:允许禁用特定模组和原生客户端的部分功能。
支持与反馈
如果您有任何问题、错误或漏洞报告,请加入我们的 Discord 支持频道,我们将尽力为您提供帮助。
- Discord: https://discord.gg/gwsSTykWbu
如果您喜欢本插件,我们非常感谢您留下正面评价。
请注意:请勿在评论区发布问题或错误报告!在此发布的任何问题都将被忽略!请在讨论区发帖,或加入我们的 Discord 并创建支持工单!
ClientDetectorPlus 是一款功能强大的 Minecraft 服务器插件,由 Loving11ish 开发。它能够精确检测玩家使用的客户端(如 Fabric、Forge、Lunar、Badlion 等),并提供丰富的管理功能,包括客户端控制、白名单/黑名单、服务器封锁以及直观的 GUI 管理界面,帮助管理员维护公平的游戏环境并执行服务器规则。
核心功能
- 客户端检测:精准识别玩家使用的客户端及其版本。
- 客户端控制:可禁用特定客户端模组中的功能(如透视、自动点击、坐标显示等)。
- 白名单/黑名单系统:允许或禁止特定客户端或玩家加入。
- 服务器封锁模式:紧急情况下可封锁服务器,仅允许特定 UUID 的玩家进入。
- GUI 管理界面:提供可视化的玩家列表和操作菜单(踢出、封禁、禁言、传送等)。
- 实时通知:玩家加入时,向有权限的管理员发送客户端使用情况通知。
- PlaceholderAPI 支持:可与其他插件联动,显示客户端信息。
- 自动更新检查:插件内置更新通知系统。
配置文件详解
插件包含四个主要的配置文件:config.yml, messages.yml, gui.yml, clientcontrol.yml。所有配置均有详细注释。
config.yml - 主配置
此文件控制插件的主要行为。
客户端检测设置
client.lockdown.bypass-uuids.list:设置可绕过服务器封锁的玩家 UUID 列表(仅在线模式有效)。client.detection.delay-detections.ticks:设置客户端检测的延迟时间(单位:游戏刻,20刻=1秒),用于网络较慢或使用自定义资源包的服务器。client.detection.whitelisted-players.list:设置完全绕过所有检测的玩家名称列表。client.detection.whitelisted-clients:启用客户端白名单,并设置允许的客户端列表(如["fabric", "forge"])。client.detection.blacklisted-clients:启用客户端黑名单,并设置禁止的客户端列表。use-strict-client-matching:启用严格匹配模式(区分大小写)。commands.enabled与commands.list:当玩家使用非白名单或黑名单客户端时,设置是否执行控制台命令及命令列表。支持变量%player_name%,%client_name%,%player_uuid%,%client_version%。
客户端控制设置
client-control.use-client-control.enabled:总开关,是否启用客户端控制功能。client-control.run-fallback-event-detection.enabled:当客户端控制失效时,可尝试启用此回退检测(最后手段)。
提示与占位符设置
alerts:控制各类通知的开关,包括加入通知、更新通知和开发者调试模式。placeholderAPI.enable-Placeholders:是否启用 PlaceholderAPI 支持(需重启服务器生效)。
messages.yml - 消息配置
此文件用于自定义插件发送的所有文本消息,支持颜色代码(&)。
主要消息类型
lockdown:服务器封锁相关的提示消息。detection:玩家客户端被检测到时发送的消息。支持变量%player_name%,%client_name%,%client_version%,%channel_name%。error:各种错误提示,如无权限、玩家不在线等。whitelisted-players:临时白名单操作反馈消息。commands:命令使用说明及查询结果格式。update:插件更新检查相关消息。
gui.yml - 图形界面配置
此文件用于自定义管理界面的外观和功能。
通用设置
gui-fillers:设置 GUI 背景填充物品的材料、名称和描述。menu-controls:设置“上一页”、“下一页”、“关闭”按钮的显示名称。
客户端列表 GUI
java-client-list与geyser-client-list:分别配置 Java 版和基岩版玩家列表 GUI 的标题、图标材料、显示名称和描述文本。描述支持变量如%client_uuid%,%client_version%。
操作菜单 GUI
actions-menu:配置对玩家可执行的操作。features:启用或禁用特定操作(如踢出、封禁、禁言、传送、OP 等),并可自定义相关命令。- 支持与 SuperVanish/PremiumVanish 联动,在传送前自动隐身。
clientcontrol.yml - 客户端控制配置
此文件用于细粒度控制特定客户端模组的功能开关。将对应选项设为 true 即可在服务器端禁用该功能。
支持的客户端模组
- BetterSprinting:修改冲刺行为。
- 5zig Mod:提供 HUD 信息、披风等。
- LabyMod:多功能模组。
- WorldDownloader:地图下载。
- Lunar Client:多功能客户端。
- Badlion Client (BAC):PVP 向客户端。
- Axolotl Client:多功能客户端。
每个模组下都列出了可控制的子功能,例如禁用自动连跳、禁用坐标显示、禁用透视材质等,管理员可根据服务器规则进行配置。
命令与权限
主要命令:/cdp
/cdp list <java|bedrock>:列出所有在线的 Java 版或基岩版玩家及其客户端。/cdp lookup <玩家名>:查询指定玩家的详细客户端信息。/cdp lockdown <enable|disable>:启用或禁用服务器封锁模式。/cdp tempwhitelist <add|remove> <玩家名>:添加或移除临时白名单玩家。/cdp reload:重载插件配置。
主要权限
clientdetectorplus.notify.join:接收玩家加入时的客户端检测通知。clientdetectorplus.update:接收插件更新通知。clientdetectorplus.command.*:使用插件命令的权限。
安装与使用
- 安装插件
- 将
ClientDetectorPlus.jar放入服务器的plugins文件夹。 - 重启服务器。
- 基础配置
- 首次运行后,插件会生成配置文件。
- 根据服务器需求,编辑
config.yml中的白名单、黑名单和检测设置。 - 如需控制客户端功能,编辑
clientcontrol.yml。
- 使用管理功能
- 管理员使用
/cdp命令查看和管理玩家。 - 通过
gui.yml自定义管理界面的外观。 - 通过
messages.yml自定义提示消息。
注意事项与常见问题
- 在线模式:封锁模式的 UUID 绕过功能仅在在线模式服务器上有效。
- 延迟检测:如果服务器使用了自定义资源包或网络环境较慢,可能需要适当增加
delay-detections.ticks值。 - 客户端控制:此功能仍在开发中,可能无法对所有客户端生效。如遇问题,可尝试启用
run-fallback-event-detection。 - PlaceholderAPI:启用或禁用占位符功能后,必须重启服务器才能生效。
- 获取帮助:如需进一步支持,可访问开发者 Discord:https://discord.gg/qzCVbfr8e8