WorldCannon 配置
WorldCannon 使用一个全局配置文件,并为每个炮台单独使用一个配置文件。
文件布局
- 全局配置:
plugins/FunRTP/config.yml - 每个炮台的配置:
plugins/FunRTP/custom/fun_rtps/<id>.yml
该插件还附带了一个名为 example_world_cannon 的示例炮台包。它默认处于禁用状态。
全局配置结构
主配置按以下区块组织:
runtime.*landing.*messages.*protection.*
运行时设置
| Key | Default | Behavior |
|---|---|---|
runtime.scanIntervalTicks | 10 | 炮台检查附近玩家的频率 |
runtime.particleIntervalTicks | 15 | 空闲炮台粒子效果的渲染频率 |
落点搜索设置
| Key | Default | Behavior |
|---|---|---|
landing.searchAttemptsPerTick | 2 | 预加载期间,每个炮台每 tick 进行的搜索尝试次数 |
landing.preloadedLocationsPerCannon | 5 | 插件尝试为每个炮台排队保留的安全目的地数量 |
landing.searchTimeoutSeconds | 1000 | 炮台持续搜索超过该时间后会被标记为耗尽 |
landing.slowFallingSeconds | 60 | 到达后获得缓降效果的持续时间(玩家落地时效果会提前移除) |
landing.failOpenOnProtectionErrors | false | 如果保护 API 报错,默认会阻止此次落点 |
落点音效
以下音效键可以配置:
landing.sounds.levitationStart.soundlanding.sounds.levitationStart.volumelanding.sounds.levitationStart.pitchlanding.sounds.blastOff.soundlanding.sounds.blastOff.volumelanding.sounds.blastOff.pitch
默认音效为:预热使用 BLOCK_BEACON_ACTIVATE,发射使用 ENTITY_GENERIC_EXPLODE。
不安全材料列表
WorldCannon 会根据两个材料列表拒绝候选落点:
landing.unsafeGroundMaterialslanding.unsafeBodyMaterials
默认不安全地面材料:
LAVAMAGMA_BLOCKCAMPFIRESOUL_CAMPFIRECACTUSPOWDER_SNOW
默认不安全身体空间材料:
LAVAWATERFIRESOUL_FIRESWEET_BERRY_BUSHPOWDER_SNOWCOBWEB
消息设置
该插件在以下路径下公开消息和标题键:
messages.prefixmessages.helpHeadermessages.createdCannonmessages.deletedCannonmessages.movedCannonmessages.targetWorldUpdatedmessages.searchCenterUpdatedmessages.reloadmessages.noPermissionmessages.cannonDisabledmessages.queueCalibrationmessages.noValidLocationYetmessages.noValidLocationFoundmessages.invalidConfigurationmessages.statusLinemessages.probeAllowedmessages.probeBlockedmessages.unknownCommandmessages.titles.launchQueuedTitlemessages.titles.launchQueuedSubtitlemessages.titles.destinationPreviewTitlemessages.titles.destinationPreviewSubtitlemessages.titles.destinationConfirmedTitlemessages.titles.destinationConfirmedSubtitlemessages.titles.arrivalSubtitles
标题键控制自动发射和到达时的消息。arrivalSubtitles 是一个列表;插件每次发射时会随机选择其中一行。当前实现中没有手动确认提示。
每个炮台的配置字段
每个炮台文件会存储以下字段:
| Field | Default | Notes |
|---|---|---|
isEnabled | 新创建的炮台默认为 true | 被禁用的炮台不会触发 |
displayName | 将 id 净化后,把下划线替换为空格 | 用于消息和状态输出 |
cannonLocation | 必填 | 炮台触发器所在的位置 |
targetWorld | 创建时的当前世界 | 运行时必须已加载 |
searchCenter | 创建时的当前世界出生点 | 如果之后未设置,插件会回退到目标世界的出生点 |
triggerRadius | 1.75 | 用于检测附近玩家的半径 |
minSearchRadius | 500 | 从搜索中心开始的最小落点搜索距离 |
maxSearchRadius | 5000 | 从搜索中心开始的最大落点搜索距离 |
launchWarmupSeconds | 6 | 发射前的漂浮/倒计时持续时间 |
verticalBoostTicks | 45 | 传送前向上推进的 tick 数 |
verticalBoostVelocity | 1.35 | 发射时施加的向上速度 |
enableParticles | true | 控制空闲炮台粒子效果 |
requiredPermission | 空白 | 该炮台的可选额外权限门槛 |
炮台创建默认值
当你运行 /wc create 时:
- 炮台 id 会被转换为小写,并将
a-z、0-9、_和-以外的字符替换为_ - 显示名称默认使用净化后的 id,并将下划线转换为空格
cannonLocation会设为你当前所在的位置targetWorld会设为你当前所在的世界searchCenter会设为该世界的出生点
运行时验证行为
当以下任一检查失败时,WorldCannon 会拒绝候选落点:
- 目标世界未加载
- 搜索中心无效
- 随机采样点落在世界边界之外
- 找不到安全的实体地表
- 脚部或头部空间被阻挡
- 地形或身体空间方块匹配已配置的不安全材料列表
- 某个保护集成阻止了该落点
如果某个炮台在 landing.searchTimeoutSeconds 之前无法找到有效位置,它会变为耗尽状态,并开始返回已配置的失败消息,而不是发射玩家。