# BanTools - Velocity 封禁管理插件
  
**BanTools** 是一个专为 Minecraft Velocity 服务器设计的先进的封禁管理插件。它支持通过 UUID、IP 地址或用户名封禁玩家,并提供动态配置重新加载和在线玩家的实时踢出功能。
> **注意**: 此插件由 AI 开发,旨在帮助服务器管理员更有效地管理玩家封禁。
---
## 功能
- **封禁功能**:
- 支持通过 UUID、IP 地址或玩家名称进行封禁。
- 默认封禁时长为永久(如果未指定时长)。
- 支持指定封禁时长(例如 `7d` 表示 7 天,`2024/1/10-2025/01/10` 表示自定义日期范围)。
- 自动踢出在线封禁的玩家。
- **解封功能**:
- 支持使用 `/bantools unban` 命令解封玩家。
- 解封不会删除封禁记录,而是将封禁状态标记为无效。
- **踢出功能**:
- 支持使用 `/bantools kick` 命令立即踢出玩家。
- 可以指定自定义踢出原因(默认使用配置文件中配置的原因)。
- **自动解封机制**:
- 如果指定了封禁时长,当时间结束时,封禁将自动过期。
- **多条件匹配**:
- 在登录时,检查 UUID、IP 地址或玩家名称是否匹配任何封禁记录。
- 如果任何条件匹配,则会将玩家视为已封禁。
- **配置文件支持**:
- 所有封禁记录都存储在 `config.conf` 文件中,支持手动编辑。
- 配置文件允许设置默认封禁和踢出原因。
- **动态配置重新加载**:
- 支持通过 `/bantools reload` 命令动态重新加载配置文件,无需重启服务器。
- **实时同步**:
- 所有封禁、解封和踢出操作都在所有下游服务器之间实时同步。
---
## 安装
### 1. 下载插件
从 [GitHub](https://github.com/NSrank/BanTools) 或其他分发渠道下载最新版本的 `BanTools.jar` 文件。
### 2. 安装插件
将下载的 `BanTools.jar` 文件放入 Velocity 服务器的 `plugins/` 目录中。
### 3. 启动服务器
启动 Velocity 服务器。插件将在 `plugins/BanTools/config.conf` 自动生成默认配置文件。
## 配置文件(`config.conf`)
```
defaults {
ban_reason = "违反服务器规则"
kick_reason = "管理员强制踢出"
}
bans {
"Player1": {
name: "Player1"
uuid: "069a79f4-44e9-4726-a5be-fca90e38aaf5"
ip: "192.168.1.100"
reason: "作弊行为"
start_time: 1698765432
end_time: null # 永久封禁
state: true # 封禁状态(true:生效,false:解除)
}
}
```
- `defaults.ban_reason`: 默认封禁原因。
- `defaults.kick_reason`: 默认踢出原因。
- `bans`: 存储所有封禁记录,每个条目包含以下字段:
- `name`: 玩家名称。
- `uuid`: 玩家 UUID。
- `ip`: 玩家 IP 地址。
- `reason`: 封禁原因。
- `start_time`: 封禁开始时间(Unix 时间戳)。
- `end_time`: 封禁结束时间(Unix 时间戳),永久封禁时设置为 `null`。
- `state`: 封禁状态(true 为生效,false 为解除)。
---
## 使用方法
### 命令
| 命令 | 权限节点 | 描述 |
|-------------------------------------|-------------------------------|--------------------------------------|
| `/bantools reload` | `bantools.command.reload` | 重新加载插件配置文件。 |
| `/bantools ban ` | `bantools.command.ban` | 封禁指定的玩家。 |
| `/bantools unban ` | `bantools.command.unban` | 解封指定的玩家。 |
| `/bantools kick ` | `bantools.command.kick` | 踢出指定的玩家。 |
### 示例
1. 封禁名为 `Bianpao_xiaohai` 的玩家:`/bantools ban Bianpao_xiaohai`(默认封禁时长为永久;可以之后添加原因)。
2. 解封名为 `Steve` 的玩家:`/bantools unban Steve`。
3. 踢出名为 `Steve` 的玩家:`/bantools kick Steve`。
---
### 支持与反馈
如果您遇到问题或有任何建议,请通过以下方式联系我们:
- **GitHub Issues**: [提交问题](https://github.com/NSrank/BanTools/issues)
---
### 许可证与免责声明
- **开发通知**: 此插件由 AI 开发,旨在为 Minecraft Velocity 社区提供高效的封禁管理工具。
- **许可证**: 在 GPL v3.0 总条款下分发。您可以根据许可条款使用、修改和分发它。
- **免责声明**: 开发人员不对因使用此插件而产生的问题负责。
---
### 鸣谢
特别感谢以下技术和工具:
- [Velocity API](https://papermc.io/software/velocity)
- [Typesafe Config](https://github.com/lightbend/config)
- [Adventure API](https://github.com/KyoriPowered/adventure)