OpLimitBypass

OpLimitBypass

服务器端模组,将绕过玩家上限的管理员排除在最大玩家数之外。

简介

原版游戏允许具有 bypassesPlayerLimit 权限的 OP 加入已满的服务器,但他们连接后仍会占用一个 max-players 名额。在一台上限为 20 的服务器上,三名此类 OP 只会给其他玩家留下 17 个名额。

OpLimitBypass 将他们排除在计数之外,因此上限会严格按照配置适用于其他所有玩家。当 max-players=20 时,可以同时在线 20 名玩家以及 3 名具有绕过权限的 OP。白名单和封禁检查不受影响。

这是一个服务端模组。客户端无需安装。

特性

玩家上限

  • 具有 bypassesPlayerLimit 权限的 OP 不再占用名额
  • 显示的玩家数量与执行的规则一致,因此服务器满员时不会显示 23/20
  • max-players 可以在运行时更改,无需重启

维护模式

  • 关闭服务器,只允许具有绕过权限的 OP 和指定的允许列表中的玩家进入
  • 断开不再被允许的玩家,并显示 0/0 及维护 MOTD
  • 允许列表存储在 oplimit-maintenance.json 中,重启后仍然保留

OP 标志管理

  • 直接读取和写入 ops.json 中的 bypassesPlayerLimit,即时生效
  • 原版只在启动时读取 ops.json,并且没有针对此标志的命令

本地化

  • 支持英语和日语
  • 消息以翻译键的形式发送,并带有服务端解析的回退机制,因此客户端会尽可能显示自己语言的内容

命令

所有命令都需要权限等级 4。

命令 描述
/oplimit status 当前上限、在线人数和可用名额
/oplimit reload 从磁盘重新读取 ops.json 和维护列表
/oplimit list 列出设置了 bypassesPlayerLimit 的 OP
/oplimit bypass <player> 显示某玩家的标志
/oplimit bypass <player> <true/false> 设置标志并立即生效
/oplimit max 显示 max-players
/oplimit max <n> 更改 max-players,直到下次重启(允许 0)
/oplimit maintenance 显示维护模式是否开启
/oplimit maintenance <on/off> 进入或退出维护模式
/oplimit maintenance list 显示维护允许列表
/oplimit maintenance <add/remove> <player> 编辑维护允许列表

不带参数运行 /oplimit 会显示状态。

需求

Minecraft 加载器 必需依赖
1.12.2 Forge MixinBooter 10.6+
1.20.1 Forge 47+ —

Forge 1.20.1 已内置 Mixin,因此无需额外依赖。

备注

  • 维护模式开启期间,服务器显示 0/0:被允许的玩家同样不占用名额。
  • 维护模式状态保存在内存中。重启服务器会退出维护模式,max-players 也会恢复为 server.properties 中的值。允许列表不受影响。
  • 启用维护模式会断开执行命令的 OP,除非他们被允许留下。从控制台执行不受影响。
  • 当只有具有绕过权限的 OP 在线时,显示的人数会为 0,如果你还运行了在零玩家时挂起服务器的模组,这点需要注意。
  • 在 1.12.2 上,/list 的人数来自本模组,但仍会列出所有玩家名称,因此两者可能不一致。
  • 在 1.12.2 上,运行 /op 或 /deop 会用原版对标志的看法重写 ops.json。之后需要用 /oplimit bypass <player> true 重新应用。

源代码

源代码、问题追踪器和完整文档:GitHub