CannonRTP 保護插件整合
CannonRTP 可以在將候選降落位置加入使用佇列之前,對其進行多個保護插件的驗證。
支援的整合
目前的軟體相依為:
- WorldGuard
- Towny
- Lands
- GriefPrevention
- HuskTowns
- HuskClaims
這些在 plugin.yml 中以 softdepend 宣告。即使未安裝任何一個,CannonRTP 仍可運作;缺少的插件會被默默略過。
保護檢查的運作方式
- 介接器以固定順序進行檢查:WorldGuard、Towny、Lands、GriefPrevention、HuskTowns、HuskClaims。
- 保護介接器只在 (a) 其
enabled開關於protection.yml中為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.enabledworldGuard.allowGlobalRegionOnlyworldGuard.allowBuildAllowedRegionsworldGuard.allowPassthroughRegions
預設行為:
- 預設啟用
- 僅由
__global__覆蓋的位置預設被允許 - 設定
build=ALLOW的區域預設被允許 - 設定
passthrough=ALLOW的區域預設被允許 - 其他匹配的受保護區域被阻擋
Towny
設定鍵:
towny.enabledtowny.allowWildernesstowny.allowNationZonestowny.allowClaimedTownBlocks
預設行為:
- 預設啟用
- 荒野被允許
- 國家區域被阻擋
- 已佔領的城鎮方塊被阻擋
Lands
設定鍵:
lands.enabledlands.allowUnclaimedAreaslands.allowClaimedAreas
預設行為:
- 預設啟用
- 未佔領區域被允許
- 已佔領區域被阻擋
GriefPrevention
設定鍵:
griefPrevention.enabledgriefPrevention.allowWildernessgriefPrevention.allowAdminClaimsgriefPrevention.allowPlayerClaims
預設行為:
- 預設啟用
- 荒野被允許
- 管理員領地被阻擋
- 玩家領地被阻擋
HuskTowns
設定鍵:
huskTowns.enabledhuskTowns.allowWildernesshuskTowns.allowAdminClaimshuskTowns.allowRegularClaimshuskTowns.allowFarmClaimshuskTowns.allowPlotClaims
預設行為:
- 預設啟用
- 荒野被允許
- 管理員領地被阻擋
- 一般城鎮領地被阻擋
- 農地領地被阻擋
- 地塊領地被阻擋
HuskClaims
設定鍵:
huskClaims.enabledhuskClaims.allowWildernesshuskClaims.allowAdminClaimshuskClaims.allowPlayerClaims
預設行為:
- 預設啟用
- 荒野被允許
- 管理員領地被阻擋
- 玩家領地被阻擋
非保護驗證同樣適用
保護插件整合只是降落驗證的一部分。位置仍可能因下列原因被拒絕:
- 位於世界邊界外
- 不存在安全表面
- 腳部或頭部空間被阻擋
- 地形與設定的不安全材質清單匹配
CannonRTPLocationValidationEvent監聽器否決該位置(見 API 事件)
失敗報告
當大砲變為 exhausted(在 searchTimeoutAttempts 用盡之前無法找到足夠的有效位置)時,狀態輸出與面向玩家的訊息會包含常見拒絕原因的細項。若大部分拒絕來自受保護的土地,該情況會被回報。這有助於管理員診斷其保護設定是否對伺服器過於嚴格。