CannonRTP 保護プラグイン統合
CannonRTP は、候補着地地点を使用のためにキューに入れる前に、複数の保護プラグインに対して検証することができます。
サポート対象の統合
サポート対象の保護プラグインは以下のとおりです:
- WorldGuard(WorldEdit も必要です。もっとも WorldGuard 自体がこれを必須としています)
- Towny
- Lands
- GriefPrevention
- HuskTowns
- HuskClaims
これらはすべて plugin.yml で(WorldEdit および FreeMinecraftModels とともに)softdepend として宣言されています。CannonRTP はこれらのいずれもインストールされていなくても動作します。存在しないプラグインは静かにスキップされます。
保護チェックの仕組み
- アダプターは固定された順序でチェックされます: WorldGuard、Towny、Lands、GriefPrevention、HuskTowns、HuskClaims。
- 保護アダプターは、(a)
protection.ymlでenabledトグルがtrueであり、かつ (b) プラグインがサーバー上に存在しロードされている場合にのみ登録されます。 - 地点をブロックする最初のアダプターでチェックが停止し、それが報告される理由になります。
- 保護 API がエラーをスローした場合、CannonRTP はデフォルトでその着地をブロックします(フェイルクローズド動作)。これは
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 にあります。キーはトップレベルです(例: protection.worldGuard.enabled ではなく 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 イベント を参照)
失敗の報告
キャノンが exhausted になると(十分な有効地点が見つからないまま searchTimeoutAttempts を使い切った場合、または保護統合の読み込みに失敗して早期に停止した場合)、ステータスとプレイヤー向けメッセージに、その検索期間で発生した拒否理由の種類を表示します。保護された土地は、それが原因で 1 回でも拒否されれば表示されます。既定の文面に「most samples」などの表現があっても、件数や頻度順の順位は示していません。調査するチェックを見つけるために使い、どのチェックが最も多く拒否したかの判断には使わないでください。