跳到主要内容

CannonRTP 保护插件集成

CannonRTP 可以在将候选落点加入队列之前,针对多个保护插件对其进行验证。

支持的集成

当前的软依赖为:

  • WorldGuard
  • Towny
  • Lands
  • GriefPrevention
  • HuskTowns
  • HuskClaims

它们在 plugin.yml 中被声明为 softdepend。即便未安装任何一个,CannonRTP 也能正常工作;缺失的插件会被静默跳过。

保护检查的运作方式

  • 适配器按固定顺序检查:WorldGuard、Towny、Lands、GriefPrevention、HuskTowns、HuskClaims。
  • 仅当 (a) protection.yml 中的 enabled 开关为 true (b) 该插件已在服务器上加载并存在时,才会注册对应的保护适配器。
  • 第一个阻止该位置的适配器会停止后续检查,并成为上报的原因。
  • 如果保护 API 抛出错误,CannonRTP 默认会阻止该落点(fail-closed,即默认拒绝)。该行为由 landing.yml 中的 failOpenOnProtectionErrors 控制。

API 失败时的全局安全开关为:

  • failOpenOnProtectionErrors(位于 landing.yml

默认:false

设为 true 时,当无法安全查询保护插件时,CannonRTP 仍会允许落地继续。

/wc probe 命令

管理员可以站在任意位置并执行 /wc probe 来测试该位置是否能通过所有已启用的保护检查。结果会报告是哪个插件阻止了该位置以及原因,或确认该位置有效。

配置文件

所有保护开关都位于 plugins/CannonRTP/protection.yml。键为顶层键(例如 worldGuard.enabled,而非 protection.worldGuard.enabled)。

各插件行为

WorldGuard

配置键:

  • worldGuard.enabled
  • worldGuard.allowGlobalRegionOnly
  • worldGuard.allowBuildAllowedRegions
  • worldGuard.allowPassthroughRegions

默认行为:

  • 默认启用
  • 仅被 __global__ 覆盖的位置默认允许
  • build=ALLOW 的区域默认允许
  • passthrough=ALLOW 的区域默认允许
  • 其他匹配的受保护区域被阻止

Towny

配置键:

  • towny.enabled
  • towny.allowWilderness
  • towny.allowNationZones
  • towny.allowClaimedTownBlocks

默认行为:

  • 默认启用
  • 荒野允许
  • 国家区域被阻止
  • 已认领的城镇方块被阻止

Lands

配置键:

  • lands.enabled
  • lands.allowUnclaimedAreas
  • lands.allowClaimedAreas

默认行为:

  • 默认启用
  • 未认领区域允许
  • 已认领区域被阻止

GriefPrevention

配置键:

  • griefPrevention.enabled
  • griefPrevention.allowWilderness
  • griefPrevention.allowAdminClaims
  • griefPrevention.allowPlayerClaims

默认行为:

  • 默认启用
  • 荒野允许
  • 管理员领地被阻止
  • 玩家领地被阻止

HuskTowns

配置键:

  • huskTowns.enabled
  • huskTowns.allowWilderness
  • huskTowns.allowAdminClaims
  • huskTowns.allowRegularClaims
  • huskTowns.allowFarmClaims
  • huskTowns.allowPlotClaims

默认行为:

  • 默认启用
  • 荒野允许
  • 管理员领地被阻止
  • 常规城镇领地被阻止
  • 农场领地被阻止
  • 地块领地被阻止

HuskClaims

配置键:

  • huskClaims.enabled
  • huskClaims.allowWilderness
  • huskClaims.allowAdminClaims
  • huskClaims.allowPlayerClaims

默认行为:

  • 默认启用
  • 荒野允许
  • 管理员领地被阻止
  • 玩家领地被阻止

非保护类验证依然适用

保护插件集成只是落点验证的一部分。落点仍可能因以下原因被拒绝:

  • 位于世界边界之外
  • 不存在安全表面
  • 脚部或头部空间被阻挡
  • 地形匹配已配置的不安全材料列表
  • CannonRTPLocationValidationEvent 监听器否决了它(见 API 事件

失败原因上报

当炮台变为耗尽状态(在 searchTimeoutAttempts 用完前找不到足够的有效落点)时,状态输出和面向玩家的消息中会包含常见拒绝原因的分类汇总。如果大多数拒绝来自受保护的领地,则会如实上报。这有助于管理员判断其服务器的保护设置是否过于严格。