メインコンテンツまでスキップ

CannonRTP API

CannonRTP は、他のプラグインがフックできる 3 つの Bukkit イベントを公開しています。すべてのイベントは com.magmaguy.cannonrtp.api パッケージにあり、メインサーバースレッドで発火します。

リスナーを登録するには通常の Bukkit @EventHandler を登録します -- 別途の登録手順は不要です。

CannonRTPLaunchEvent

プレイヤーがキャノン発射シーケンスを開始しようとしているまさにその瞬間、ビジュアルやエフェクトが適用される に発火します。キャンセル可能です。

プロパティ説明
playerPlayerキャノンを起動したプレイヤー
cannonIdStringキャノンの設定 ID (.yml を除いたファイル名)
cannonDisplayNameStringキャノンの displayName フィールド
cannonLocationLocation起動された正確な配置位置
destinationLocationこの発射のために選ばれた、事前検証済みの安全な着地地点

イベントをキャンセルする と発射は完全に中止されます: プレイヤーはその場にとどまり、エフェクトは適用されず、目的地は次回の発射で再利用するためにキャノンキューの先頭に戻されます。リージョンベースのブラックリスト、クールダウンプラグイン、経済システムによるゲート、PvP リージョンチェックなどに有用です。

@EventHandler
public void onLaunch(CannonRTPLaunchEvent event) {
if (event.getPlayer().getWorld().getName().equals("event_world")) {
event.setCancelled(true);
}
}

CannonRTPLocationValidationEvent

事前読み込み検索中に CannonRTP が候補着地地点を検証する際、各候補に対して発火します。組み込みのすべてのチェック(ワールドボーダー、地表、危険マテリアル、保護統合)が通過した 後にのみ 発火します。

プロパティ説明
cannonIdString検索を行っているキャノンの設定 ID
cannonDisplayNameStringキャノンの displayName フィールド
candidateLocation検討中の候補着地地点

このイベントは Bukkit の意味でのキャンセル可能ではありません。候補を拒否するには以下を呼び出します:

event.setRejected("inside arena spawn protection");

すると CannonRTP は、内部チェックに失敗した場合と同様にその候補を破棄し、検索を続行します。リスナーは、組み込みの保護アダプターを超えるカスタムリージョンルールを実装できます。

注: 事前読み込みの試行中(全体でティックあたり 1 回、アクティブキャノン間でラウンドロビン)、メインスレッドで発火します。ハンドラーは高速に保ってください。

CannonRTPLandingEvent

プレイヤーが目的地にテレポートされ、発射シーケンスが完全に完了した後(LANDING フェーズが実行され、低速落下が解除され、衝撃エフェクトが再生された後)に発火します。キャンセル不可 -- 発射前に拒否するには CannonRTPLaunchEvent を使用してください。

プロパティ説明
playerPlayerちょうど着地したプレイヤー
cannonIdStringプレイヤーを発射したキャノンの設定 ID
cannonDisplayNameStringキャノンの displayName フィールド
destinationLocationプレイヤーが送られた目的地のコピー

初到着時の報酬付与、後続エフェクトのトリガー、リージョン権限の付与、到着の通知、分析などに有用です。

スレッディングとライフサイクル

  • 3 つのイベントすべてがメインスレッドで配信されます。
  • CannonRTPLocationValidationEvent はグローバルな事前読み込みティック中に配信されるため(サーバーティックあたり 1 試行、アクティブキャノン間でラウンドロビン)、リスナーで重い処理を行うとキャノンがキューを充電する速度が目に見えて遅くなります。
  • CannonRTPLaunchEventLaunchSequence が構築される直前に配信されるため、変更した状態(ポーション効果、インベントリ、ゲームモード)は Searching フェーズの開始前に反映されます。
  • CannonRTPLandingEvent は発射ごとに 1 回、衝撃エフェクト後の LANDING フェーズティックで配信されます。

cannonId の扱い

cannonId は、すべての管理者コマンド(/wc place/wc target など)で使用されるのと同じ ID であり、.yml を除いたキャノン設定のファイル名と一致します。1 つのキャノン設定がワールド内で多数の配置を制御する場合がありますが、それらはすべて同じ cannonIdcannonDisplayName を共有します。正確な配置が必要な場合は、CannonRTPLaunchEventcannonLocation を使用してください。