CannonRTP (WorldCannon)
CannonRTP 是一个适用于 Minecraft 服务器的多炮台随机传送插件。项目内部名称为 WorldCannon,但插件在 Bukkit 中注册为 CannonRTP,这是玩家和管理员看到的名称。
重要命名详情:
- 插件名称:
CannonRTP - 根命令:
/cannonrtp - 别名:
/crtp,/wc - 权限:
cannonrtp.admin,cannonrtp.use - 配置文件夹:
plugins/CannonRTP/
功能介绍
CannonRTP 是一个多炮台随机着陆系统,而不是单一固定发射器。
每个炮台可以:
- 检测进入触发半径的玩家
- 在配置的目标世界中预加载并维护安全着陆点队列
- 拒绝不安全的地形、被堵塞的空间和受保护的土地
- 可选要求每个炮台的额外权限
- 通过预热、坐标预览、加速、传送和缓降序列发射玩家
- 可选在炮台位置显示 FreeMinecraftModels 自定义模型
发射流程
当玩家走进符合条件的炮台触发半径时:
- CannonRTP 检查
cannonrtp.use。 - 检查炮台的可选
requiredPermission。 - 验证炮台已启用、拥有有效配置且已预加载着陆点。
- 从该炮台的队列中消耗一个预加载的安全着陆点。
- 发射预热开始:玩家获得漂浮效果,看到带有随机坐标预览的标题/副标题倒计时。
- 预热结束后,播放发射音效,施加垂直加速,玩家被传送到目的地上方 50 个方块,并施加缓慢下降。
- 当玩家着地时,缓慢下降效果会提前移除。
如果炮台配置了 customModel 且 FreeMinecraftModels 的 fire 模型存在,则使用替代发射动画,玩家在预热期间会坐在炮台位置。
着陆安全规则
在位置被接受进入预加载队列之前,当前代码会检查:
- 目标世界是否已加载
- 搜索中心是否有效
- 位置是否在世界边界内
- 是否存在最高安全表面(固体、非液体、非空气)
- 脚部和头部空间是否可通行
- 着陆表面是否不在配置的不安全地面材料列表中
- 脚部和头部方块是否不在配置的不安全身体材料列表中
- 所有已启用的保护插件集成是否允许该位置
炮台状态
每个炮台都有一个内部状态,可通过 /wc status 查看:
| 状态 | 含义 |
|---|---|
| Charging | 仍在预加载第一批安全位置 |
| Ready | 已有足够的预加载位置来发射玩家 |
| Maintaining | 已就绪但仍在补充已消耗的位置 |
| Exhausted | 超时未找到足够的有效位置 |
| Invalid | 配置错误(如目标世界未加载) |
炮台在存储了至少 chargedLocationsPerCannon 个有效目的地后变为发射就绪状态。
运行要求
- Minecraft API:
1.21 - Java:
21 - 推荐服务器软件:Paper 或当前兼容的分支
- 可选依赖:FreeMinecraftModels(用于自定义炮台模型)