凌晨一点,服务器列表里冒出一个从没见过的名字。你确定没把地址发给这个人——但地址可能被转发过;如果你还关了正版验证,任何人只要知道 IP 就能进来。
白名单、OP、封禁,是三个最常被混为一谈的东西:白名单决定“谁能进”,OP 决定“进来的人能做什么”,封禁决定“谁暂时或永久别进来”。它们存在不同的文件里,生效条件也不一样。
白名单、OP、封禁是三份不同的名单,存在不同文件里,生效条件也不同。
白名单开关只发命令,重启后回到配置文件的值。
加人、删人、开关都要求服务端正在运行,服务端没跑按钮就是灰的。
手动选 OP 等级 1–4 要停止再启动才生效,默认等级不用重启。
应用提示“已加入”只代表命令发出去了,它不解析服务端回执。
先分清:白名单、OP、封禁各管什么#
| 你要解决的问题 | 用哪个 | 数据存在哪 | 改完什么时候生效 |
|---|---|---|---|
| 只让认识的人进服 | 白名单 | whitelist.json + server.properties 的 white-list | 命令即时;改配置要重启 |
| 让朋友能飞、能传送、能管人 | OP | ops.json | 默认等级即时;手动等级要重启 |
| 把捣乱的人挡在门外 | 封禁 | banned-players.json | 命令即时 |
三者是叠加关系,不是替代关系:开了白名单,普通玩家必须在名单里;Java 版的 OP 可以绕过白名单直接进(这一点后面会细说)。封了玩家,他就算在白名单里也进不来。Minexa 的「玩家」页把在线、OP、白名单、封禁分成四个标签,对应的就是这四类数据。页面位置和按钮说明见 玩家页:在线、OP、白名单与封禁。
白名单的两种开法,别只做一半#
白名单有两条开启路径,很多人只做了其中一步,然后奇怪“为什么还是谁都能进”。
方式一:改 server.properties,长期有效。
# server.properties
# 改完必须重启服务端才生效
white-list=true这是“根上的开关”。服务端每次启动都会读这个值,所以它决定重启之后白名单还在不在。
方式二:在控制台发 whitelist on,立即生效。
whitelist on这条命令只改变当前这次运行的状态,不会回写 server.properties。用命令打开的白名单,重启后会回到配置文件里的值。
whitelist on 只是把门锁上,不会自动把谁加进去。如果名单是空的,普通玩家一个都进不来。Java 版的 OP 可以绕过白名单进服,所以最稳的顺序是:先把自己加进名单(或先把自己设为 OP),再加朋友,最后 whitelist on。
在 Minexa 里,玩家页的白名单标签也有一个开关,它做的是同一件事:发 whitelist on 或 whitelist off,不改 server.properties。所以只拨应用开关的话,重启后照样恢复成文件里的状态。想长期生效,去 服务器配置页 把 white-list 改成 true,或在文件管理里编辑 server.properties。
两种方式的差别可以记成一张表:
| 方式 | 入口 | 生效速度 | 重启后 | 适合 |
|---|---|---|---|---|
改 white-list=true | 配置页 / server.properties | 重启后 | 仍然开启 | 长期开服 |
whitelist on | 控制台 / 玩家页开关 | 立即 | 可能被配置覆盖 | 临时开关、测试 |
把人加进去:应用里两步,命令里一行#
在 Minexa 里加白名单,顺序不要反:
先启动服务端。玩家页所有写操作都要求服务端正在运行,未运行时按钮是灰的,横幅会写「服务器未运行 · 所有命令操作不可用,请先启动服务端」。
打开白名单开关(如果还没开)。开关只负责
whitelist on,不负责加人。在「添加白名单」里输入玩家名,点「添加」。应用会发
whitelist add <玩家名>,成功后提示「已将 X 加入白名单」。让玩家进服验证。白名单按 UUID 匹配,名字打错、大小写不对,都可能加进去一个“不存在的人”。
用命令更直接,下面几条都在控制台执行(控制台不需要 /):
whitelist add <玩家名>
whitelist remove <玩家名>
whitelist list
whitelist reload<玩家名>是占位符,要换成真实名字,尖括号不要一起输入。whitelist list用来确认到底加了谁。whitelist reload在你手动改过whitelist.json之后用,让服务端重新读文件。加人、删人都是即时命令,不需要重启。
最稳的做法是让玩家先进一次服(或临时关白名单),从在线列表里复制他的名字,再粘到添加框。离线模式下名字的大小写不同会被算成不同的 UUID。
OP 等级 1–4:每一级多出什么#
OP(Operator,管理员)不是“开”或“关”这么简单,它有一个 1–4 的等级。下面这张表按原版规则整理,也是 Minexa「OP 等级指引」页展示的内容:
| 等级 | 能做什么 | 典型用途 | 风险 |
|---|---|---|---|
| 1 | 仅绕过出生点保护,没有额外命令 | 几乎用不到 | 低 |
| 2 | 单人作弊类命令,如 /gamemode、/give、/tp | 给朋友发物品、换模式 | 中,能刷物品 |
| 3 | 多人管理命令,如 /op、/deop、/kick、/ban | 信任的管理员 | 高,能踢人封人 |
| 4 | 全部命令,含 /stop、/save-all 等(默认等级) | 只有你自己 | 最高,能停服、能给别人 OP |
新 OP 的默认等级由 server.properties 的 op-permission-level 决定,默认是 4 级,点一下就拿到最高权限。给不熟的人 OP,等于把服务器钥匙交出去。
4 级 OP 可以执行 /stop 停服、/op 给自己人提权、/ban 封掉你。需要朋友帮忙管理时,先想清楚他需不需要 3 级;只是想让朋友飞行、传送,2 级就够。装了权限管理插件(例如应用 OP 指引里提到的 LuckPerms)时,还可以做到更细的权限分配,但那是插件的能力,不是原版 OP 等级。
加 OP 为什么有时要重启#
Minexa 的 OP 标签里有一个复选框:「使用配置文件默认 OP 等级(无需重启服务器)」。
保持勾选:应用发一条普通的
op <玩家名>,服务端按当前op-permission-level给等级。这条路径不需要重启。取消勾选、手动选等级:原版
/op不支持指定等级。应用的做法是先发 op,约 800ms 后改 ops.json:服务端已经把旧等级读进内存了,所以界面会用红字提示「下次重启服务器后生效」。
也就是说,手动等级不是“点了就生效”,而是要停一次服再启动。Minexa 没有独立的重启按钮,做法是先点「停止」,等它正常退出,再点「启动」。停止最多等 180 秒,超时不会强杀,会提示你可以强制停止。
反过来,如果你只是想把某个人加进来当普通管理员,保持勾选默认等级最省事;要精确控制等级,就接受一次重启。两种路径的按钮文案也不一样,一个是「添加 OP(默认等级)」,一个是「添加 OP(等级 N)」,点之前看清楚。
封禁:应用能封玩家,不能封 IP#
玩家页的「封禁」标签做两件事:封玩家、解封。封禁时可以填原因,永久封禁走 ban,限时封禁走 tempban,时长有 30 分钟、1 小时、6 小时、1 天、7 天、30 天几档,结果写进 banned-players.json。
ban <玩家名> [原因]
pardon <玩家名>这里有两个必须知道的边界:
限时封禁依赖
tempban,而tempban不是原版命令,原版服没有这一条。多数只装基础插件的 Paper 服也不带它。Minexa 不检测核心是否支持,所以限时封禁可能看起来“点了”,实际没有生效。用之前先在控制台试一次,或者改用永久封禁加手动解封。应用没有
banned-ips管理入口。玩家页只有玩家封禁,没有 IP 封禁的列表或按钮。文件banned-ips.json确实存在,但应用不读也不写它。
要封 IP,只能在控制台发命令:
ban-ip <IP地址>
ban-ip <玩家名>
pardon-ip <IP地址>ban-ip <玩家名> 会封掉该玩家当前登录的 IP。改 banned-ips.json 也能达到目的,但必须先停服再改;格式写错时,封禁列表可能整份读不出来。
同一个家庭、同一个学校、同一个运营商大内网(CGNAT)下的玩家,可能共用出口 IP。封一个 IP,可能把一整批人挡在外面,而真正想封的人换个网络就进来了。优先封玩家名;IP 封禁只作为临时手段。
离线模式:白名单挡不住“同名的人”#
白名单只有在“名字能代表身份”的前提下才有意义,而离线模式恰好破坏了这个前提。
关闭正版验证(online-mode=false)后,服务端不再向 Mojang 验证账号。玩家的 UUID 由名字直接算出来:同一个名字,谁用都能得到同一个 UUID。于是会出现这种情况:
你把
Steve加进白名单;一个陌生人把客户端名字改成
Steve;服务端认为他就是白名单里的
Steve,放行。
更细的一点:离线 UUID 对名字是敏感的,Steve 和 steve 会被算成两个不同的人。这既会让“加错大小写”变成加了个空气,也会让冒名者只要拼得一模一样就能混进来。
所以,白名单不是万能锁。它能挡住“随手连进来的人”,挡不住“知道你名单里有什么名字的人”。
如果你为了让人进来而关了 online-mode,请同时做到:开白名单、只把地址发给信任的人、不要把端口长期暴露在公网、定期备份。离线模式下,管理员权限尤其危险——冒名者只要顶着一个 OP 的名字进来,就继承了他的权限;而 Java 版的 OP 还能绕过白名单,等于后门开得更大。能恢复正版验证就恢复;确实不能,就按“所有人都是潜在冒名者”来设计权限。
加了白名单还是有人进?按这几条查#
| 现象 | 最可能的原因 | 怎么处理 |
|---|---|---|
| 谁都能进 | 只改了 whitelist.json,没开 white-list,也没发 whitelist on | 先开开关,再让人进 |
| 重启后又谁都能进 | 用命令或应用开关开的,没写进 server.properties | 把 white-list=true 写进配置 |
| 朋友加不进去 | 名字打错、大小写不对、带了空格 | 从在线列表复制名字,重新 whitelist add |
| 手动改完文件不生效 | 服务端还在用旧名单 | 控制台 whitelist reload,或重启 |
| 应用提示“已加入”,但人进不来 | 应用只确认命令发出去了,不解析服务端回执 | 去终端看有没有报错,用 whitelist list 复核 |
| 名单里的人都进不来 | 白名单开了但名单是空的,或配置写错 | 先确认自己是不是 OP;没有 OP 就用控制台 whitelist add 自己 |
“应用提示已加入,但人进不来”这条尤其容易误判:Minexa 的玩家页在命令发出 600 毫秒后就刷新列表,它不解析服务端的返回内容。名字打错时,服务端可能回一句“玩家不存在”,但应用仍可能弹出“已将 X 加入白名单”。
玩家页「白名单」标签里的名单,能看到你自己和刚加的朋友。
控制台发
whitelist list,返回的名字和你加的一致,没有拼错。重启一次服务端后
white-list仍是true(说明写进了文件,不只是拨了开关)。刚加过的人能真的进服一次,不只看那句“已将 X 加入白名单”。
手动选过 OP 等级的,界面提示过「下次重启服务器后生效」,并且你已经重启过。
下一步#
想知道每条管理命令的完整语法:管理员命令速查与实战
想把正版验证、白名单、人数写进配置:server.properties 基础项逐项详解
玩家页每个按钮对应什么命令:玩家页:在线、OP、白名单与封禁