[MD]
# Waygate
Waygate 是一个面向 Bukkit / Spigot / Paper 的传送点插件,提供玩家自有传送点、公开访问、GUI 浏览,以及管理员全局管理能力。
## 兼容性
- 服务端:Spigot / Paper `1.20.4+`
- Java:`21`
- API 基线:`api-version: 1.20`
当前代码尽量保持 Bukkit 通用写法,但本版本的发布与人工验证基线是 Java 21 + Spigot / Paper 1.20.4+。
## 当前功能
- 玩家创建、删除、列出自己的传送点
- 玩家将自己的传送点切换为公开 / 私有
- 玩家通过 `/waygate visit <name>` 访问公开传送点
- 玩家通过 `/waygate open` 打开 GUI 浏览公开传送点
- 传送预热、冷却、移动取消、受伤取消
- 世界黑名单、跨世界限制、安全落点检查
- 管理员创建 / 删除 / 列出传送点
- 管理员将目标玩家传送到指定传送点
- 管理员重载 `config.yml` 与 `messages.yml`
- YAML 数据持久化
## 安装
1. 使用 Java 21 启动 Spigot / Paper 1.20.4+ 服务端。
2. 将 `Waygate-0.1.0.jar` 放入服务器 `plugins/` 目录。
3. 启动服务器,确认插件正常加载。
4. 首次启动后检查 `plugins/Waygate/config.yml` 与 `plugins/Waygate/messages.yml` 已生成。
5. 根据服务器需要调整配置后执行 `/waygate admin reload`,或直接重启服务端。
## 首次配置步骤
1. 确认服务端运行在 Java 21,且版本为 Spigot / Paper 1.20.4+。
2. 安装插件并首次启动服务器,生成默认配置文件。
3. 打开 `plugins/Waygate/config.yml`,至少确认以下配置:
- `max-waygates-per-player`
- `teleport.warmup-seconds`
- `teleport.cooldown-seconds`
- `teleport.allow-cross-world`
- `teleport.world-blacklist`
- `teleport.safety-check.enabled`
4. 如需本地化或调整提示文案,编辑 `plugins/Waygate/messages.yml`。
5. 给管理员授予 `waygate.admin`,给普通玩家按需授予 `waygate.use` 与玩家功能权限。
6. 使用管理员账号创建一个全局传送点,验证基础链路:
- `/waygate admin create spawn`
- `/waygate admin list`
- `/waygate open`
7. 再用普通玩家账号验证:
- `/waygate create home`
- `/waygate public home`
- `/waygate visit home`
## 命令
### 玩家命令
| 命令 | 说明 |
|------|------|
| `/waygate create <名称>` | 在当前位置创建个人传送点 |
| `/waygate public <名称>` | 将自己的传送点设为公开 |
| `/waygate private <名称>` | 将自己的传送点设为私有 |
| `/waygate delete <名称>` | 删除自己的传送点 |
| `/waygate list` | 查看自己的传送点 |
| `/waygate open` | 打开公开传送点 GUI |
| `/waygate visit <名称>` | 访问公开传送点 |
| `/waygate help` | 查看帮助 |
### 管理员命令
| 命令 | 说明 |
|------|------|
| `/waygate admin create <名称>` | 在当前位置创建全局传送点 |
| `/waygate admin delete <名称>` | 删除可唯一解析的传送点 |
| `/waygate admin list` | 列出全部传送点 |
| `/waygate admin tp <玩家> <传送点>` | 将目标玩家传送到可唯一解析的传送点 |
| `/waygate admin reload` | 重载配置与消息 |
| `/waygateadmin <...>` | 管理员兼容入口,别名:`/wga`、`/wgadmin` |
## 权限
### 玩家权限
| 权限节点 | 默认值 | 说明 |
|----------|--------|------|
| `waygate.use` | `true` | 主命令权限 |
| `waygate.create` | `true` | 创建个人传送点 |
| `waygate.public` | `true` | 公开自己的传送点 |
| `waygate.private` | `true` | 私有化自己的传送点 |
| `waygate.delete` | `true` | 删除自己的传送点 |
| `waygate.list` | `true` | 查看自己的传送点列表 |
| `waygate.open` | `true` | 打开 GUI |
| `waygate.visit` | `true` | 访问公开传送点 |
### 管理员权限
| 权限节点 | 默认值 | 说明 |
|----------|--------|------|
| `waygate.admin` | `op` | 管理员总权限 |
| `waygate.admin.create` | `op` | 创建全局传送点 |
| `waygate.admin.delete` | `op` | 删除传送点 |
| `waygate.admin.list` | `op` | 查看全部传送点 |
| `waygate.admin.tp` | `op` | 传送其他玩家 |
| `waygate.admin.reload` | `op` | 重载配置与消息 |
### 绕过权限
| 权限节点 | 默认值 | 说明 |
|----------|--------|------|
| `waygate.bypass.cooldown` | `op` | 绕过访问冷却 |
| `waygate.bypass.limit` | `op` | 绕过数量限制 |
| `waygate.bypass.world` | `op` | 绕过世界黑名单与跨世界限制 |
## 配置概览
默认 `config.yml`:
```yaml
max-waygates-per-player: 5
waygate-name:
min-length: 3
max-length: 16
allowed-pattern: "^[a-zA-Z0-9_-]+$"
teleport:
warmup-seconds: 3
cooldown-seconds: 10
allow-cross-world: true
world-blacklist: []
safety-check:
enabled: true
search-radius-y: 2
```
默认 `messages.yml` 用于统一管理玩家提示、GUI 文案与管理员消息。
运行时数据保存在 `plugins/Waygate/data.yml`。
[/MD]