跳到主要内容

CannonRTP (WorldCannon)

CannonRTP 是一个适用于 Minecraft 服务器的多炮台随机传送插件。项目内部名称为 WorldCannon,但插件在 Bukkit 中注册为 CannonRTP,这是玩家和管理员看到的名称。

重要命名详情:

  • 插件名称:CannonRTP
  • 根命令:/cannonrtp
  • 别名:/crtp, /wc
  • 权限:cannonrtp.admin, cannonrtp.use
  • 配置文件夹:plugins/CannonRTP/

功能介绍

CannonRTP 是一个多炮台随机着陆系统,而不是单一固定发射器。

每个炮台可以:

  • 检测进入触发半径的玩家
  • 在配置的目标世界中预加载并维护安全着陆点队列
  • 拒绝不安全的地形、被堵塞的空间和受保护的土地
  • 可选要求每个炮台的额外权限
  • 通过预热、坐标预览、加速、传送和缓降序列发射玩家
  • 可选在炮台位置显示 FreeMinecraftModels 自定义模型

发射流程

当玩家走进符合条件的炮台触发半径时:

  1. CannonRTP 检查 cannonrtp.use
  2. 检查炮台的可选 requiredPermission
  3. 验证炮台已启用、拥有有效配置且已预加载着陆点。
  4. 从该炮台的队列中消耗一个预加载的安全着陆点。
  5. 发射预热开始:玩家获得漂浮效果,看到带有随机坐标预览的标题/副标题倒计时。
  6. 预热结束后,播放发射音效,施加垂直加速,玩家被传送到目的地上方 50 个方块,并施加缓慢下降。
  7. 当玩家着地时,缓慢下降效果会提前移除。

如果炮台配置了 customModel 且 FreeMinecraftModels 的 fire 模型存在,则使用替代发射动画,玩家在预热期间会坐在炮台位置。

着陆安全规则

在位置被接受进入预加载队列之前,当前代码会检查:

  • 目标世界是否已加载
  • 搜索中心是否有效
  • 位置是否在世界边界内
  • 是否存在最高安全表面(固体、非液体、非空气)
  • 脚部和头部空间是否可通行
  • 着陆表面是否不在配置的不安全地面材料列表中
  • 脚部和头部方块是否不在配置的不安全身体材料列表中
  • 所有已启用的保护插件集成是否允许该位置

炮台状态

每个炮台都有一个内部状态,可通过 /wc status 查看:

状态含义
Charging仍在预加载第一批安全位置
Ready已有足够的预加载位置来发射玩家
Maintaining已就绪但仍在补充已消耗的位置
Exhausted超时未找到足够的有效位置
Invalid配置错误(如目标世界未加载)

炮台在存储了至少 chargedLocationsPerCannon 个有效目的地后变为发射就绪状态。

运行要求

  • Minecraft API:1.21
  • Java:21
  • 推荐服务器软件:Paper 或当前兼容的分支
  • 可选依赖:FreeMinecraftModels(用于自定义炮台模型)

开始使用