WarZRandomTeleport - 一款支持智能地图轮换的随机传送插件|进度条|丰富音效|高度自定义

原创 世界管理 WarZRandomTeleport - 一款支持智能地图轮换的随机传送插件|进度条|丰富音效|高度自定义 1.5.1

请登录后获取
[MD] ### v1.5.1 - ✅ 修复部分服务端(如 1.18)加载失败:`Unsupported API version 1.2` - ✅ 修复 `plugin.yml` 中 `api-version: 1.20` 被 YAML 解析为浮点数 `1.2` 的问题 - ✅ 将 `api-version` 改为字符串 `'1.13'`,避免在 1.13–1.19 服务端因 API 声明过高被拒载 - ✅ 配置无需改动,建议从 1.5.0 升级到本版本 [/MD]
  • 新增玩家自助命令 /warzrtp tp <地图名>
  • 新增权限节点 warzrtp.tp.self
  • tp 命令同时兼容玩家自助传送和管理员强制传送
  • 更新帮助信息、权限说明、命令补全和 Wiki 文档
  • 新增固定地图模式:支持 rotation.mode: fixed 和 rotation.fixed-map
  • 修复小地图下附近玩家检测过严,导致一直提示“找不到可用传送位置”
  • 修复 /warzrtp tp 时把目标玩家自己算进附近玩家检测的误判
  • 修复 maps 列表配置读取不正确,地图显示名、地图列表和重载逻辑恢复正常
  • 优化配置结构:config.yml 只保存地图元信息,实际传送点统一以 data/points.yml 为准
  • 新增附近玩家检测开关,支持把检测半径设为 0 直接关闭
本次更新版本号为 1.3.2 ,主要修复了传送安全问题并增强了配置灵活性。具体内容如下:

### 1. 核心修复:防止“传脸”
- 严格的安全检查 :修复了当找不到安全位置(如所有点都在玩家附近)时,插件会强制随机传送导致“传脸”的问题。
- 逻辑优化 :现在如果找不到符合 nearby-check-radius (附近玩家检测半径)条件的传送点,插件会直接取消传送并提示玩家,而不是冒险传送。
### 2. 新功能:分地图检测半径
- 独立配置 :支持为每个地图单独设置 nearby-check-radius 。
- 应用场景 :可以在小地图(如死斗模式)设置较小的安全半径(例如 20),而在大地图(如生存模式)保持较大的安全半径(例如 70)。
### 3. 配置文件变更 (config.yml)
- 默认值调整 :全局 nearby-check-radius 默认值从 20 增加到 70 。
- 新增示例 :在 maps 列表下增加了单地图配置示例。
```
maps:
- name: world1
display-name: "&a主世界"
nearby-check-radius: 100 #
<--- 新增:该地图使用独立的 100 格
检测半径
random_points: ..
```
1. 修改 TeleportPointManager.java :

- 增加了一个 unloadedPoints 列表,用于暂存那些所属世界尚未加载的传送点数据。
- 在加载数据时,如果世界不存在,不再丢弃数据,而是存入 unloadedPoints 。
- 在保存数据时,会将 unloadedPoints 中的数据一并写回配置文件,防止数据丢失。
- 新增 onWorldLoad 方法,当世界加载时,自动将 unloadedPoints 中的数据恢复到内存中供使用。
2. 创建 WorldLoadListener.java :

- 监听 WorldLoadEvent 事件。
- 当一个世界延迟加载完成时,通知 TeleportPointManager 尝试恢复该世界的传送点数据。
3. 修改 WarZRandomTeleport.java :

- 注册了 WorldLoadListener 监听器。
修改后的行为:

- 服务器重启后 :即使多世界插件加载较慢,本插件也会保留这些世界的传送点数据在配置文件中,不会被清空。
- 世界加载时 :一旦世界加载完成(例如 Multiverse 加载了该世界),插件会自动识别并恢复该世界的传送点,无需重载插件即可正常使用 RTP。
修复消息丢失错误:
消息未找到:commands.force-teleport-target
如果您希望只通过 BossBar 提示玩家,
请在 config.yml 中将 rotation.teleport.chat 设置为 false ,并确保 bossbar 设置为 true
后退
顶部 底部