跳到主要内容

CannonRTP 配置

CannonRTP 使用一个全局配置文件加上每个炮台一个配置文件。

文件布局

  • 全局配置:plugins/CannonRTP/config.yml
  • 炮台配置:plugins/CannonRTP/custom/fun_rtps/<id>.yml

插件还附带一个名为 example_world_cannon 的示例炮台包。默认禁用。

全局配置结构

主配置组织在:

  • runtime.*
  • landing.*
  • messages.*
  • protection.*

运行时设置

默认值行为
runtime.scanIntervalTicks2炮台检查附近玩家的频率(最小 2)
runtime.particleIntervalTicks15闲置炮台粒子渲染频率(最小 5)

着陆搜索设置

默认值行为
landing.searchAttemptsPerTick2预加载期间每炮台每刻的搜索尝试次数(最小 1)
landing.preloadedLocationsPerCannon10插件尝试为每个炮台在队列中保持的安全目的地总数(最小 1)
landing.chargedLocationsPerCannon5炮台被视为充能完成和发射就绪所需的位置数(最小 1,上限为 preloadedLocationsPerCannon
landing.searchTimeoutSeconds1000仍在搜索的炮台被标记为耗尽之前的时间(秒)(最小 10)
landing.slowFallingSeconds60到达后缓慢下降持续时间(秒);玩家着地时效果提前移除(最小 1)
landing.failOpenOnProtectionErrorsfalse如果保护 API 报错,默认阻止着陆

着陆音效

以下音效键可配置:

  • landing.sounds.levitationStart.sound(默认:BLOCK_BEACON_ACTIVATE
  • landing.sounds.levitationStart.volume(默认:1.0
  • landing.sounds.levitationStart.pitch(默认:1.15
  • landing.sounds.blastOff.sound(默认:ENTITY_GENERIC_EXPLODE
  • landing.sounds.blastOff.volume(默认:1.0
  • landing.sounds.blastOff.pitch(默认:0.9

音效值使用 Bukkit 的 Sound 注册名或命名空间键。无效的音效名会被记录为警告,音效会被静默跳过。

不安全材料列表

CannonRTP 根据两个材料列表拒绝着陆候选点:

  • landing.unsafeGroundMaterials -- 绝不应该站立其上的方块
  • landing.unsafeBodyMaterials -- 绝不应该占据脚部或头部空间的方块

默认不安全地面材料:

  • LAVA
  • MAGMA_BLOCK
  • CAMPFIRE
  • SOUL_CAMPFIRE
  • CACTUS
  • POWDER_SNOW

默认不安全身体材料:

  • LAVA
  • WATER
  • FIRE
  • SOUL_FIRE
  • SWEET_BERRY_BUSH
  • POWDER_SNOW
  • COBWEB

消息设置

所有消息支持 MagmaCore 渐变、MiniMessage 标签和旧版颜色代码。$prefix 占位符会被替换为配置的前缀值。

消息键、占位符和描述的完整列表请参考英文文档 -- 配置键不会被翻译。

预热期间的坐标预览不会显示实际目的地 -- 它显示炮台搜索区域内的随机坐标作为视觉效果。真实目的地仅在确认标题中揭示。

炮台配置字段

每个炮台文件(plugins/CannonRTP/custom/fun_rtps/<id>.yml)存储以下字段:

字段默认值说明
isEnabled新创建的炮台为 true禁用的炮台不会触发
displayNameCannonRTP(或创建时提供的名称)用于消息、状态输出和浮动标签
cannonLocation必填炮台触发器的位置
targetWorld创建时的当前世界运行时必须已加载
searchCenternull(回退到目标世界的出生点)未设置时,插件使用目标世界的出生点位置
triggerRadius1.75检测附近玩家的半径(最小 0.5)
minSearchRadius500从搜索中心的最小着陆搜索距离(最小 0)
maxSearchRadius5000从搜索中心的最大着陆搜索距离(始终至少为 minSearchRadius + 1
launchWarmupSeconds6发射前的漂浮/倒计时时间(最小 0;为 0 时立即发射)
verticalBoostTicks45传送前的向上速度刻数(最小 0)
verticalBoostVelocity1.35发射时施加的向上速度(最小 0)
enableParticlestrue控制闲置炮台粒子动画
requiredPermission此特定炮台的可选额外权限门控
customModel在炮台位置显示的可选 FreeMinecraftModels 模型名

炮台创建默认值

当你执行 /wc create <id> 时:

  • 炮台 ID 会转换为小写,a-z0-9_- 以外的字符会被替换为 _
  • 显示名未指定时默认为 CannonRTP,或提供的名称中下划线转换为空格
  • cannonLocation 设置为你的当前位置
  • targetWorld 设置为你的当前世界
  • searchCenter 未设置(回退到目标世界的出生点)

创建后,插件会输出配置文件路径并建议手动编辑以下字段:displayNamecustomModelrequiredPermissionlaunchWarmupSecondsverticalBoostTicksverticalBoostVelocity

FreeMinecraftModels 集成

如果炮台配置将 customModel 设置为有效的 FreeMinecraftModels 模型名且 FreeMinecraftModels 已安装:

  • 在炮台位置生成静态模型实体
  • 浮动文本标签会抬高以避免与模型重叠
  • 如果名为 fire 的模型也存在,则使用替代发射动画:玩家被传送到炮台座位,在 3 秒(60 刻)充能序列中保持不动,然后以爆炸粒子效果发射

运行时验证行为

CannonRTP 在以下任何检查失败时拒绝着陆候选点:

  • 目标世界未加载
  • 搜索中心无效
  • 随机样本落在世界边界之外
  • 未找到安全的固体表面
  • 脚部或头部空间被堵塞
  • 地形或身体方块与配置的不安全材料列表匹配
  • 保护集成阻止着陆

如果炮台在 landing.searchTimeoutSeconds 之前找不到足够的有效位置,它会变为耗尽状态,开始返回配置的失败消息而不是发射玩家。失败消息包含最常见拒绝原因的摘要。

炮台的搜索窗口在需要补充已消耗的位置时会重新启动(例如玩家发射后空出了一个槽位)。

交互冷却

CannonRTP 对每个玩家强制执行 3 秒的交互冷却。无论交互是成功发射、权限拒绝还是其他炮台检查,此冷却均适用。冷却时间不可配置。