# SmartRejoin for Velocity


**SmartRejoin** 是一个现代化的重连插件替代方案,它基于高度可定制的规则引擎构建。
---
## 特性
- 🧠 自动将玩家返回他们断开连接的服务器。
- ⚙️ 根据玩家的最后服务器定义自定义规则。例如,将来自 `bedwars_` 游戏的玩家发送到人口最多的 `bedwars_lobby`。
- ⚖️ 通过将他们连接到玩家人数**最多**或**最少**的服务器,或随机的服务器来在各个大厅之间分配玩家。
- 🛡️ 为新玩家或目标服务器离线时配置安全的回退服务器(或服务器池)。
- ⚡ 使用简单的命令即时重新加载配置。
---
## 安装
1. 下载插件
2. 将插件放入 Velocity 代理的 `/plugins` 目录中。
3. 重启 Velocity 代理。将在 `/plugins/SmartRejoin/` 目录中生成一个 `config.yml` 文件。
---
## 命令 & 权限
| 命令 | 别名 | 权限 | 描述 |
| :--- | :--- | :--- | :--- |
| `/smartrejoinreload` | `/srr` | `smartrejoin.command.reload` | 重新加载 `config.yml` 文件。 |
---
## 配置 (`config.yml`)
配置分为三个主要部分:**回退**、**默认规则**和**自定义规则**。
### 快速开始
对于最简单的设置,只需安装插件即可。默认情况下 (`rule: SAME`),它将自动将玩家重连到他们离开的服务器。新玩家将由您的 `velocity.toml` 配置处理。要使用插件的回退机制处理新玩家,请将 `fallback.enabled: true` 设置为真。
### 示例用例
- **床战争大厅**: 如果玩家离开 `bedwars_12`,请将他们发送到拥有最多玩家的 `bedwars_lobby`。
- **持久生存**: 如果玩家离开 `survival`,始终将他们返回 `survival`。
- **随机大厅**: 如果玩家在任何 `lobby_` 服务器中,请将他们随机发送到另一个 `lobby_` 服务器。
- **AFK 逃脱**: 如果玩家在 `afk` 服务器中,请将他们发送到拥有最少玩家的 `lobby`。
### 完整配置示例 (与默认配置不同!)
```yml
# --------------------------------------------------- #
# SmartRejoin 配置 #
# --------------------------------------------------- #
# --- 通用设置 ---
settings:
# 如果为真,插件将在控制台中打印信息性消息。
# 关键错误始终会记录。
logging_enabled: true
# --- 回退配置 ---
# 用于新玩家或目标服务器来自规则离线时。
fallback:
# 如果为 'enabled',将使用此插件的回退逻辑。
enabled: true
# 'RANDOM': 连接到名称包含 'name' 值的随机服务器。
# 'SERVER': 连接到具有完全 'name' 的特定服务器。
type: RANDOM
name: "lobby"
# --- 默认规则 ---
# 如果玩家的最后服务器不匹配下面的任何自定义规则,则应用此规则。
default:
# 'SAME': 连接到完全相同的服务器。(最常见)
# 'FALLBACK': 立即使用回退规则。
# 'SMART': 查找相关的休息室。有关详细信息,请参阅下面的注释。
rule: SAME
# 'SMART' 规则的参数。
# 示例: ['MOST', '%last_seen%_lobby']
arguments: []
# --- 自定义规则 ---
# 在这里定义特定的重定向规则。它们按顺序检查。
rules:
stay_on_survival:
last_seen:
# 条件: 玩家的最后服务器名称必须完全匹配。
type: EQUALS
name: "survival"
where_to_join:
# 操作: 连接到具有完全相同名称的服务器。
type: EQUALS
name: "survival"
bedwars_lobby_fallback:
last_seen:
# 条件: 玩家的最后服务器名称必须包含 "bedwars"。
type: CONTAINS
name: "bedwars"
where_to_join:
# 操作: 查找所有包含 "bedwars_lobby" 的在线服务器并
# 连接到拥有最多玩家的服务器。
type: MOST
name: "bedwars_lobby"
```