为什么要限制昵称
第一个原因是机器人。攻击工具按模板生成昵称,一条规则就能挡住一整波。
第二个原因是离线服务器。在离线模式下,Velocity 几乎接受任何字符,包括空格。用西里尔字母“А”拼成的 Admin,或者末尾带空格的昵称,在聊天中看起来和管理员的昵称一模一样,但其实是另一个账号。只允许拉丁字母的规则可以堵住这种手法。
默认规则
每个新服务器都开启了“同 Paper”规则:
^[a-zA-Z0-9_.]{1,16}$它放行拉丁字母、数字、下划线和点,长度 1 到 16 个字符。点是为 Bedrock 玩家准备的:Floodgate 会在昵称开头加一个点,比如 .Steve。西里尔字母、空格和特殊字符无法通过。
在免费套餐上,这条规则始终开启且不能修改。从 Basic 套餐起可以添加自己的规则。
两种规则
“昵称必须符合”:昵称符合模式时玩家才能进服。“昵称中不允许”:昵称中找到该模式时玩家无法进服。
模式会在昵称的任意位置查找,所以 bot 同时拦截 bot123 和 Robot。要检查整个昵称,在开头加 ^,结尾加 $。不区分大小写:对规则来说 Bot 和 BOT 是一样的。
没有哪种规则能让某个昵称不受其他规则限制。需要放行某人时,把他加进白名单。
模式示例
| 模式 | 类型 | 作用 |
|---|---|---|
^[a-zA-Z0-9_]{3,16}$ | 必须符合 | 与 nLogin 和 AuthMe 相同的昵称:不含点,3 到 16 个字符。会挡住昵称以点开头的 Bedrock 玩家 |
^[0-9]+$ | 不允许 | 纯数字昵称 |
launcher | 不允许 | 任意位置含有 launcher 一词的昵称 |
^bot_?[0-9]+$ | 不允许 | bot123、bot_42 |
^lobby_[0-9]+$ | 不允许 | 某次攻击用的前缀加编号:lobby_1、lobby_2048 |
前三个模式在面板中已经预置好,点一下就能添加。
语法简介
^表示昵称开头,$表示结尾;[a-z0-9_]表示列出的字符中的任意一个;{3,16}表示重复 3 到 16 次,+表示一次或多次;a|b表示二者之一。
这些是普通的正则表达式,和 Java 中的一样,但不支持先行断言、后行断言和反向引用。模式最长 200 个字符。模式有错误时,面板不会保存。
如何避免误伤自己的玩家
和 VPN 检测不同,昵称规则在观察模式下也会生效。所以保存之前,用“测试昵称”按钮拿几个自己玩家的昵称试一下模式。
开启规则后,查看进服记录(Basic 套餐起)。被规则挡住的玩家会看到“昵称”消息。在消息里写明允许哪些昵称,这样玩家就知道该怎么改。
为某次攻击设置的模式,比如 ^lobby_[0-9]+$,攻击过后可以关闭而不用删除:每条规则都有开关。