服务器队列

服务器队列

为满员的Forge服务器添加FIFO溢出队列,无需玩家安装客户端模组。

Server Queue

让满员服务器不再直接拒绝玩家。

Server Queue 是一个轻量级的服务端 Forge 模组,它允许有限数量的额外连接按先进先出顺序排队等待,同时保持服务器的正常玩家上限不变。

当 max-players 已满时,符合条件的溢出玩家会被接纳进入一个临时的旁观者等待状态,而不是被 Minecraft 正常的服务器已满消息踢出。当有真实空位释放时,第一位等待的玩家会被自动恢复并提升为正常游玩状态。

功能

  • FIFO 等待队列 —— 第一位等待的玩家在容量释放时第一个被提升。
  • 保留原版玩家上限 —— server.properties 中的 max-players 仍然是活跃玩家上限。
  • 可配置的溢出容量 —— 选择允许超出活跃上限的连接等待者数量。
  • 安全的等待状态 —— 排队的玩家以冻结旁观者形式被保持在主世界出生点上方。
  • 持久化恢复 —— 排队前会保存原始维度、位置、朝向和游戏模式。
  • 重连恢复 —— 如果排队玩家在提升前断开连接,恢复数据仍然可用。
  • 玩家状态命令 —— /queue 报告队列位置或活跃状态。
  • 管理员诊断 —— /serverqueue status 和 /serverqueue list 显示队列状态。
  • 精确的登录行为覆盖 —— 仅覆盖 Minecraft 精确的 server_full 拒绝;无关的登录拒绝仍保持原版行为。
  • 仅服务端 —— 玩家无需在客户端安装 Server Queue。
  • 除 Forge 外无依赖。

配置

Server Queue 使用 Forge 通用配置:

  • maxQueuedPlayers=50 —— 超出 max-players 的最大连接等待者数量。
  • holdingYOffset=64 —— 等待点相对于主世界共享出生点的垂直偏移。
  • statusIntervalTicks=20 —— 动作栏队列位置更新间隔。

需求

  • Minecraft 1.20.1
  • Forge 47.4.10+
  • Java 17

在服务端安装此模组。客户端不需要。

安全移除

在从现有世界移除该模组之前,请确保当前没有人在排队。Server Queue 存储的恢复数据正是用于恢复排队玩家原始位置和游戏模式的依据。

已测试

Server Queue 1.0.0 通过了最终的 Gradle/reobfuscation 构建以及 4/4 项必需的 Forge GameTests。此外还验证了未安装 Server Queue 的干净 Forge 客户端可以正常加入,并在活跃上限已满时进入世界内队列。


由 MantiCoreForge 构建。