CannonRTP 保護插件整合
CannonRTP 可以在將候選降落位置加入使用佇列之前,對其進行多個保護插件的驗證。
支援的整合
支援的保護插件為:
- WorldGuard(同時需要 WorldEdit,而 WorldGuard 本來就需要它)
- Towny
- Lands
- GriefPrevention
- HuskTowns
- HuskClaims
以上全部在 plugin.yml 中以 softdepend 宣告(與 WorldEdit 和 FreeMinecraftModels 並列)。即使未安裝任何一個,CannonRTP 仍可運作;缺少的插件會被默默略過。
保護檢查的運作方式
- 介接器以固定順序進行檢查:WorldGuard、Towny、Lands、GriefPrevention、HuskTowns、HuskClaims。
- 保護介接器只在 (a) 其
enabled開關於protection.yml中為true,且 (b) 該插件已於伺服器上存在並載入時才會被註冊。 - 第一個阻擋位置的介接器會停止檢查,並成為回報的原因。
- 若保護 API 拋出錯誤,CannonRTP 預設會阻擋該降落(fail-closed,失敗封閉)。此行為由
landing.yml中的failOpenOnProtectionErrors控制。 - 若某個介接器已啟用且其插件存在,但介接器本身載入失敗(缺少類別、API 版本不相容),CannonRTP 會記錄
Failed to hook into <plugin>,並在檢查鏈中為該插件保留一個佔位項,因此該失敗不會被當作該插件根本沒安裝。failOpenOnProtectionErrors決定佔位項的行為:false(預設):佔位項會以its adapter failed to initialize (...)為原因阻擋每個位置,且大砲會停止搜尋。每座大砲都會被標記為 Exhausted,原因為受保護領地,而不會繼續取樣無法通過的位置。請修正該整合,或在protection.yml中停用它,然後執行/wc reload。true:佔位項會允許每個位置,其他介接器仍會照常執行。
API 失敗時的全域安全切換為:
failOpenOnProtectionErrors(位於landing.yml)
預設:false
當設為 true 時,CannonRTP 會在保護插件無法被安全查詢時允許降落繼續。設為 false 時,查詢錯誤會以 its API could not be queried safely 為原因阻擋該位置。無論哪種設定,查詢錯誤都會以警告形式記錄。
/wc probe 指令
管理員可在任何位置執行 /wc probe,檢查該位置是否通過所有已啟用的保護檢查。結果會指出哪個插件拒絕該位置及其原因,或確認保護介接器允許它。此指令不驗證地形、空投整列空間、搜尋半徑,也不觸發 API 的位置驗證事件。
設定檔
所有保護開關位於 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
預設行為:
- 預設啟用
- 未啟用 Towny 的世界一律被允許
- 荒野被允許
- 國家區域被阻擋
- 已佔領的城鎮方塊被阻擋
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 事件)
失敗報告
大砲用盡 searchTimeoutAttempts 仍未找到足夠有效降落點,或因保護整合載入失敗而提早停止時,狀態與玩家訊息會列出該輪搜尋遇到的拒絕類別。即使只有一個樣本因受保護領地而被拒絕,也會列出該類別。預設文案雖有「most samples」等說法,但不提供次數,也不按頻率排序。請用它判斷應調查哪些檢查,而非衡量哪項檢查拒絕了最多位置。