コンテンツにスキップ
🛠️ OP・運営向けページ — 運営スタッフ向けの導入・設定情報です。遊び方は 👤 プレイヤー向けページ をご覧ください。

BoatGP ― OP・運営ガイド

BoatGP の導入・config・items.yml・サーキット作成・権限・管理コマンドをまとめます。

基本情報

項目
プラグイン名 BoatGP
バージョン 1.0.0
api-version 26.1.2
メインコマンド /race(エイリアス /boatgp
依存プラグイン なし
設定ファイル plugins/BoatGP/config.ymlitems.ymlmessages.ymlsurfaces.ymlcircuits/<名前>.yml

実装状況:Phase 2(アイテムバトル)

現在は Phase 2(アイテムバトル) までが実装済みです。カート物理・路面・チェックポイント判定・順位HUD・コース外復帰・簡易報酬に加え、アイテムシステム(6種)・アイテムボックス・ラバーバンド抽選・ボスバー表示・ロケットスタート が動作します。ベストタイム記録・リーダーボードなどは未実装です。詳細は下記「実装状況」の節を確認してください。

導入手順

  1. ビルドした boatgp-1.0.0.jar をサーバーの plugins/ フォルダに配置する。
  2. サーバーを起動すると plugins/BoatGP/config.yml / items.yml / messages.yml / surfaces.yml が自動生成され、circuits/ フォルダが作られる。
  3. レース専用ワールド(フラットまたはボイド推奨)を用意する。
  4. 後述の手順でサーキットを作成する(アイテムボックスの配置を含む)。
  5. 設定を変更したら /race reload で再読み込みする。

既存サーバーを更新する場合の注意(messages.yml)

messages.yml既存ファイルがあると新しいメッセージキーが自動追記されません。アップデートで sign:(看板。join-created / leave-created / start-created / info-created / look-at-sign / no-circuit / invalid-type)・admin.startspawn-set / finish-a-set / checkpoint-a-setlobby.rejoin / lobby.waiting-next(連続プレイ)・show:(チェックポイント表示)・admin.checkpoint-deleted / finish-deleted / checkpoints-cleared / spawn-deleted / spawn-cleared(削除系)が追加されています。特に 情報看板を使う場合は sign.info-created / sign.invalid-type が必須 です。これらが空欄表示になる場合は、既存の messages.yml を一度退避してサーバー再起動で再生成するか、不足キーを追記してください。config.ymlitems.ymlsurfaces.yml の項目は今回変更ありません。

サーバー実装について

エンティティ(ボート)を多用するミニゲームのため、設計上は Paper の採用が推奨 されています。Spigot でも動作しますが、イベント処理・最適化の面で Paper が有利です。

config.yml 主要項目

レース設定(race

キー 既定値 説明
race.min-players 1 レース開始に必要な最少人数(同梱configは実験用に1。通常運用は2以上推奨)
race.max-players 12 1レースの最大人数(実際の上限はスタートグリッド数で決まる)
race.lobby-countdown 30 最少人数到達後、ロビーで開始までカウントする秒数
race.start-countdown 3 スタートグリッド整列後の 3-2-1 カウント秒数
race.default-laps 3 サーキット側で周回数未指定の場合の既定周回数
race.finish-timeout 60 1位ゴール後、残り走者を待つ制限時間(秒)。超過で強制終了

カート物理(kart

キー 既定値 説明
kart.acceleration 0.10 1tickあたり現在速度を目標速度へ近づける割合
kart.deceleration 0.18 1tickあたりの減速割合
kart.default-grip 0.85 既定グリップ(路面側で上書きされる)
kart.stuck-speed-threshold 0.04 この移動量(blocks/tick)未満が続くとスタック判定
kart.stuck-ticks 60 スタックと判定するまでの継続tick数
kart.off-track-reset true コース外・危険路面・落下・スタック時にチェックポイントへ復帰させるか
kart.void-y 0 このY座標を下回ったら落下とみなし復帰
kart.corner-speed 0.72 操舵中(パドル左右入力中)の速度倍率。小さいほどコーナーで減速して曲がりが詰まる(推奨 0.6〜0.85)

ワールド・HUD・報酬

キー 既定値 説明
world.default "race_world" レース専用ワールド名(サーキットyml側の指定が優先)
hud.update-interval 10 HUD(スコアボード)の更新間隔(tick/20=1秒)
reward.enabled true 順位連動の簡易報酬を有効にするか
reward.places.p1p3 DIAMOND:3 ほか 1〜3位の報酬アイテム(Material名:個数
reward.finish BREAD:2 4位以下の完走者への参加賞

報酬の指定形式

報酬は Material名:個数 の形式で指定します(例: DIAMOND:3)。経済プラグイン連携は行わず、報酬はすべてプラグイン内で完結します。reward.places.p4 以降を追加すれば、その順位専用の報酬も指定できます。

items.yml 主要項目(アイテムバトル)

アイテムシステムの設定は plugins/BoatGP/items.yml にまとめられています。/race reload で再読み込みされます。

アイテムボックス・ロケットスタート

キー 既定値 説明
item-box.cooldown-ticks 80 アイテムボックス通過後、再出現までのtick数(20=1秒)
item-box.default-radius 3.0 additembox で半径を省略したときの既定判定半径
rocket-start.window-ticks 11 GO の何tick前から「良いタイミング」とみなすか
rocket-start.boost-speed 2.1 ロケットスタート成功時のブースト速度
rocket-start.boost-ticks 45 ロケットスタート成功時のブースト継続tick数

アイテムの出現重み(ラバーバンド)

items.<アイテム>weight-front / weight-mid / weight-back で、順位帯(上位/中位/下位)ごとの抽選重み を設定します。値が大きいほど出やすく、0 で出現しません。下位ほど強力なアイテムが出るよう重み付けされています。

アイテム weight-front(上位) weight-mid(中位) weight-back(下位)
dash_mushroom(ダッシュキノコ) 30 28 16
green_shell(みどりこうら) 26 20 10
red_shell(あかこうら) 4 18 24
banana(バナナ) 34 19 8
star(スター) 2 10 22
lightning(サンダー) 0 5 20

各アイテムの display で、ボスバー等に表示される名前(& カラーコード対応)を設定できます。

アイテム効果パラメータ(effects

キー 既定値 説明
effects.dash-boost-speed / dash-boost-ticks 1.95 / 50 ダッシュキノコの加速量・継続tick
effects.green-speed / green-lifetime 1.7 / 110 みどりこうら(直進弾)の速度・寿命tick
effects.red-speed / red-lifetime / red-homing 1.45 / 150 / 0.30 あかこうら(ホーミング弾)の速度・寿命・追尾の強さ
effects.banana-lifetime 700 バナナ(後方トラップ)が残るtick数
effects.star-ticks / star-boost-speed 150 / 1.8 スターの無敵+加速の継続tick・加速量
effects.lightning-slow-ticks 70 サンダーで全員が減速するtick数
effects.spinout-ticks 32 命中時のスピンアウト継続tick
effects.hit-radius 2.2 弾・トラップ・体当たりの命中半径

アイテムの操作仕様

アイテムの発動は 降車操作(VehicleExitEvent)の再利用 で実装されています。レース中の降車ボタン押下=所持アイテムの発動、カウントダウン中の降車ボタン押下=ロケットスタート判定になります。Java版・統合版の双方で同じ操作になるよう設計されています。

路面定義(surfaces.yml

路面は「見た目のブロック」ではなく「最高速+グリップ」のパラメータで定義します。surfaces.yml でブロックの割り当てを自由に編集できます。

路面区分 speed grip 既定の対象ブロック
standard(標準) 0.85 0.90 石・石レンガ・コンクリート・草ブロック など
ice(氷) 1.25 0.55 青氷・氷塊・氷
boost(ブースト) 1.90 0.95 薄水色/黄色コンクリート
offroad(オフロード) 0.35 0.80 砂・赤い砂・ソウルサンド・砂利・土の道 など
danger(危険) 0.0 0.50 マグマ・マグマブロック・水(reset: true で復帰トリガー)

未定義ブロック上の挙動は default-surface(既定 standard)で決まります。

サーキット作成手順

コマンド体系が刷新されました

従来の /race admin <サブ> 方式に加え、/race <サブ> のトップレベル形式 で実行できるようになりました(/race admin <サブ> も引き続き使えます)。また 変更は自動保存 されるため、save の実行は不要です。チェックポイント/ゴールラインは 半径の円ではなく「A→Bの2点で引くライン(ゲート)」 に変更され、コースを横切る直線として通過判定するようになりました。さらに 看板での参加・離脱・開始setsign / setstart)と 初期スポーンsetstartspawn)に対応しています。

サーキットは /race コマンドで作成し、plugins/BoatGP/circuits/<名前>.yml に保存されます。yml の手書きは不要です。OP権限を持った状態でレース専用ワールドに入り、設置したい地点に立って(またはラインの端点に立って)コマンドを実行します。

標準フロー(create → setlobby → setstartspawn → setspawn → setfinish a/b → addcheckpoint a/b → additembox → setsign/setstart → laps):

① 新規サーキットを作成して選択(現在のワールドが対象)
/race create <名前>
② 待機ロビーを現在地に設定
/race setlobby
③ 初期スポーン(離脱時の戻り先)を現在地に設定
/race setstartspawn
④ スタートグリッドを現在地に追加(参加可能人数ぶん繰り返す)
/race setspawn
⑤-1 ゴールライン(=CP0)の始点Aを現在地に記録
/race setfinish a
⑤-2 ゴールラインの終点Bを現在地に記録(A→Bを結ぶラインになる)
/race setfinish b
⑥-1 チェックポイントの始点Aを記録(コース順に繰り返す)
/race addcheckpoint a
⑥-2 チェックポイントの終点Bを記録(A→Bのラインで追加)
/race addcheckpoint b
アイテムボックスを現在地に追加(任意・複数可・半径省略可)
/race additembox [半径]
周回数を設定
/race laps <周回数>
既存サーキットを選択して編集する
/race select <名前>
設定状況を確認(不足項目も表示)
/race status

ラインの引き方(setfinish / addcheckpoint)

ゴールラインとチェックポイントは a(始点)→ b(終点)の2回 でコースを横切る直線として引きます。コースの片端に立って ... a、反対の端に立って ... b を実行してください。高さ(Y許容)は ... b [高さ] で指定でき、省略時は ±4.0 ブロックです。通過判定は「前tick→現tick の移動線がラインを横切ったか」で行うため、コース幅いっぱいにラインを張る とショートカット防止になります。addcheckpoint は先に setfinish でゴールラインを引いてから実行してください。

保存(自動)と有効化の条件

各設定コマンドは実行のたびに 即時自動保存 されます(save は不要、cancel で編集破棄)。レース開始に使える状態になる条件は ロビー地点・スタートグリッド1個以上・チェックポイント2個以上(ゴールライン+通常CP) です。setstartspawn・アイテムボックス・看板は必須ではありません(初期スポーン未設定時は離脱時の戻り先がロビーになります)。/race status で不足項目を確認できます。

アイテムボックスの配置

additembox任意 です。置かないサーキットも走行できます(その場合アイテムは出現しません)。半径を省略すると items.ymlitem-box.default-radius(既定3.0)が使われます。

チェックポイントとスタートグリッド

チェックポイントの index0 は必ずゴールライン(setfinish)です。addcheckpoint でコースの進行順にラインを追加します。スタートグリッド数(setspawn の数)が そのサーキットの実質の最大参加人数 になります(config.ymlrace.max-players と、グリッド数の小さい方が上限)。設計上はコース幅7ブロック前後・壁の高さ3ブロック以上・1周400ブロック前後が目安です。

チェックポイントの可視化(/race show

チェックポイント/ゴールラインは パーティクルの「ゲート(縦のカーテン)」 として表示されるようになりました。色はゴール/スタート=金、次に通過すべきCP=緑、その他=水色です。表示は 見ている本人だけ に出ます(他プレイヤーには見えません)。

  • レース中の参加者には自動表示 されます(次に通過すべきCPが緑で強調)。
  • OPは設定確認用に、同じワールドの全サーキットのゲートを プレビュー表示 できます。
チェックポイント表示のプレビューをON/OFF(自分のみ・トグル)
/race show

表示範囲

ゲートは約60ブロック以内のものだけが描画されます。ライン(A→B)がコースを正しく横切っているか、/race show をONにして歩きながら確認すると設置ミスに気づきやすくなります。

チェックポイント・スタートグリッドの削除

設置をやり直したいとき用に、削除コマンドが追加されました(いずれも自動保存)。

指定番号のチェックポイントを削除(1以上。0=ゴールは対象外)
/race delcheckpoint <番号>
ゴール/スタートライン(CP0)を削除(/race setfinish で再設定)
/race delfinish
全チェックポイント(ゴール含む)を削除
/race clearcheckpoints
指定番号のスタートグリッドを削除(1以上)
/race delspawn <番号>
全スタートグリッドを削除
/race clearspawn

看板の設置(参加・離脱・開始・情報)

プレイヤーは 看板のクリック でも参加・離脱・開始できます(コマンド /race join 等も併用可)。看板の作成には 2通りの方法 があります。どちらも boatgp.admin 権限が必要です。

方法A:コマンドで設定(参加・離脱・開始)

看板を設置し、看板を見ながら(6ブロック以内)以下を実行すると、プラグインが自動でテキストを書き込みます。

参加看板を設定(クリックで参加。コース名が書き込まれる)
/race setsign join
離脱看板を設定(クリックで離脱)
/race setsign leave
開始看板を設定(クリックでレース強制開始)
/race setstart

setsign / setstart は引数でサーキットを明示することもできます(省略時は編集中のサーキット)。

サーキットを指定して参加看板を設定
/race setsign join <サーキット名>
サーキットを指定して開始看板を設定
/race setstart <サーキット名>

方法B:看板に直接書き込んで作成(参加・離脱・情報)

新規に設置する看板へ、行を手入力しても作成できます。1行目に [boatgp](大文字小文字不問)、2行目に種別、3行目にサーキット名を入れて確定すると、プラグインが整形済みテキストへ自動的に書き換えます。

  • [boatgp] / join / <サーキット名> … 参加看板(コース名は登録済みである必要があります)
  • [boatgp] / leave … 離脱看板(3行目は不要)
  • [boatgp] / info / <サーキット名>情報看板(後述)

方法Bでは開始看板(START)は作れません

看板への直接書き込みで作れるのは join / leave / info の3種です。開始看板(START)はコマンド /race setstart でのみ作成 できます。2行目に上記以外を入れるとエラーになります。

情報看板([BoatGP-Info])

方法Bの info で作成する 情報看板 は、指定サーキットの 募集状況と参加人数を約5秒ごとに自動更新 して表示します(クリック動作はありません)。

  • 表示内容:状態(募集中/開始間近/進行中/終了)と「現在人数 / グリッド数」。
  • 設置後すぐに1度更新され、以降は5秒間隔で最新化されます。

看板の仕組み

クリック動作のある看板は1行目に [BoatGP] タグ、2行目に種別(JOIN / LEAVE / START)、3行目にコース名が入ります。情報看板は1行目が [BoatGP-Info] になります。クリック判定は 看板のテキスト で行うため、設置位置は自由です。setsign 実行時に編集中のサーキット(または引数で指定したサーキット)名が書き込まれます。開始看板は誰でもクリックできますが、強制開始は内部で boatgp.admin を確認します(参加者がいないと開始されません)。クリック看板には連打防止のため1秒のクールダウンがあります。

権限ノード

権限 既定 用途
boatgp.play 全員 レースに参加できる
boatgp.admin OP サーキットの作成・管理、レース強制操作(start/stop/reload/admin)

管理コマンド

コマンド 権限 説明
/race start boatgp.admin 自分が参加中のレースを強制開始する
/race stop boatgp.admin または OP 自分が参加中のレースを強制中止する(OP は権限ノードなしでも実行可)
/race reload boatgp.admin config.yml・items.yml・surfaces.yml・サーキットを再読み込み
/race create <名前> boatgp.admin 新規サーキットを作成して選択する
/race select <名前> boatgp.admin 既存サーキットを編集対象に選択する(edit も可)
/race setlobby / setstartspawn / setspawn boatgp.admin ロビー・初期スポーン・スタートグリッドを現在地に設定
/race setfinish <a\|b> / addcheckpoint <a\|b> boatgp.admin ゴールライン・チェックポイントを2点ラインで設定
/race delcheckpoint <番号> / delfinish / clearcheckpoints boatgp.admin チェックポイント/ゴールの削除・全消去
/race delspawn <番号> / clearspawn boatgp.admin スタートグリッドの削除・全消去
/race additembox [半径] / laps <数> / world [名前] boatgp.admin アイテムボックス追加・周回数・対象ワールド
/race setsign <join\|leave> / setstart boatgp.admin 看板を参加/離脱/開始看板に設定
/race show boatgp.admin チェックポイント表示プレビューのON/OFF(自分のみ)
/race status boatgp.admin 設定状況を確認する(info も可)
/race admin <サブ> ... boatgp.admin 上記設定コマンドの旧形式(互換のため引き続き使用可)
/race join [サーキット名] boatgp.play レースに参加する(看板クリックでも可)
/race leave boatgp.play レースから離脱する(看板クリックでも可)
/race list 全員 サーキット一覧を表示する

自動保存・強制開始・強制中止について

設定系コマンドは 実行のたびに自動保存 されるため save は不要です(/race cancel で編集破棄)。/race start/race stopコマンド実行者が参加中のレース に作用します。設定(config・items.yml・路面・サーキット)を変更したら /race reload で反映できます。

実装状況(Phase 2)

実装済みは Phase 2(アイテムバトル) までです。具体的には「カート物理(オート加速・路面システム)/ライン(A→B 2点)方式のチェックポイント・ラップ判定チェックポイントのパーティクル可視化(レース中は自動・OPは /race show でプレビュー)/順位計算・サイドバーHUD/スタート演出(3-2-1-GO)/コース外・スタック復帰/順位連動の簡易報酬/サーキット作成・削除コマンド(フラット化・自動保存)/看板での参加・離脱・開始初期スポーン(離脱時の戻り先)レース終了後の自動ロビー帰還・連続プレイ/アイテムシステム6種・アイテムボックス・ラバーバンド抽選・ボスバー表示・ロケットスタート」が動作します。

未実装の主要機能(Phase 3 以降予定)

以下は 未実装 です。本番イベントでの利用前に必ず把握してください。

  • ドリフト/ミニターボ
  • コース別ベストタイム・勝利数などの記録永続化(SQLite)、リーダーボード
  • カートスキン/トレイルなどのカスタマイズ
  • 同時複数レースのインスタンス化、コース投票、トーナメントモード

なお、設計案にあった「ニセアイテムボックス・トリプルキノコ・ゲッソー・キラー」は現バージョンでは未実装で、コアアイテム6種(ダッシュキノコ・みどりこうら・あかこうら・バナナ・スター・サンダー)のみが動作します。

トラブルシューティング

レースに参加できない / サーキットが見つからない

/race list でサーキットが登録されているか確認してください。1件もない場合は /race create <名前> から作成が必要です。また、サーキットの対象ワールドが読み込まれていないと参加できません。

サーキットが「設定OK」にならない / レースが始められない

レース開始に使える条件は ロビー・スタートグリッド1個以上・チェックポイント2個以上 です。/race status で不足項目を確認し、/race setlobby / setspawn / setfinish a→b / addcheckpoint a→b で補ってください(変更は自動保存されます)。アイテムボックス・初期スポーン・看板は必須ではありません。

チェックポイント(ライン)が通過判定されない

ゴールライン・チェックポイントは a→b の2点で引いたライン をコースを横切る形で通過する必要があります。ラインがコース幅をまたいでいない、または高さ(Y許容)が足りないと通過になりません。/race setfinish a→反対側で setfinish baddcheckpoint ab の順で、コース幅いっぱいに引いてください。高さは ... b [高さ] で調整できます(既定±4.0)。

看板をクリックしても参加・開始できない

/race setsign join(または setstart)で看板を設定済みか確認してください。看板の1行目が [BoatGP] タグになっている必要があります(情報看板の [BoatGP-Info] はクリック動作がありません)。看板を直接書き込んで作る場合は1行目 [boatgp]・2行目 join/leave/info で確定します(START は /race setstart でのみ作成)。開始看板は内部で boatgp.admin 権限を確認するため、一般プレイヤーがクリックしても開始できません。クリック直後は1秒のクールダウンがあります。

アイテムボックスを通ってもアイテムが出ない

そのサーキットに additembox でアイテムボックスが追加されているか /race status で確認してください。また、プレイヤーが すでにアイテムを所持している とアイテムボックスは反応しません。取得直後のボックスは items.ymlitem-box.cooldown-ticks(既定80tick)の間は再出現しません。

看板や設定のメッセージが空欄 / 表示されない

既存サーバーで messages.yml をそのまま使っている場合、新しい sign:admin.startspawn-set などのキーが無いと空欄表示になります。messages.yml を退避して再生成するか、不足キーを追記してください(導入手順の注意書きを参照)。

アイテムの出現バランスを変えたい

items.ymlitems.<アイテム>.weight-front / weight-mid / weight-back を編集し、/race reload で反映してください。0 にするとその順位帯では出現しなくなります。効果の強さは effects.* で調整できます。

レースが満員になる / 参加人数を増やしたい

実際の上限は スタートグリッド数config.ymlrace.max-players の小さい方です。人数を増やしたい場合は /race setspawn でスタートグリッドを追加してください。

カートの挙動がおかしい / 壁をすり抜ける

カート駆動は setVelocity ベースのため、高速移動時にチャンク境界や壁ですり抜けが起きる可能性があります。設計上は 壁を厚く・高く(3ブロック以上)、サーキット範囲のチャンクを常時ロードすることが推奨されています。

コースアウト復帰が頻発する / 復帰してほしくない

危険路面・落下・スタックで直近チェックポイントへ復帰します。挙動を止めたい場合は config.ymlkart.off-track-resetfalse に、落下判定のしきい値は kart.void-y で調整できます。スタック判定は kart.stuck-speed-thresholdkart.stuck-ticks で調整します。

氷やブーストが効かない / 路面の挙動を変えたい

路面はブロック種別で判定されます。surfaces.yml で対象ブロックや speedgrip を編集し、/race reload で反映してください。未定義ブロックは default-surface の挙動になります。


← 👤 プレイヤー向けページへ ← BoatGP 概要へ