Unknown Network

NPCの移動・経路探索・ウェイポイント

1. 移動機能の種類

Citizensの移動は大きく分けて次の種類があります。

  • テレポート/位置移動:NPCを実行者の位置や指定座標へ移動。経路を歩かせるわけではありません。
  • Navigatorによる経路移動:NPCがブロックや障害物を考慮して目標位置へ進みます。
  • Waypoints(ウェイポイント):複数の位置を保存し、順番・ランダム・巡回などで移動させます。
  • 追従/ホーム:プレイヤーやNPCを追いかける、決められたホーム位置へ戻るなどの動作。

2. よく使うコマンド

/npc tphere /npc moveto <座標など> /npc pathto me /npc path /npc pathopt /npc speed 1 /npc follow <プレイヤー名またはNPC ID> /npc home /npc anchor --save <名前>

これらは用途を示す例です。座標の書式や必須引数・フラグは /npc help <コマンド> で確認してください。/npc path はウェイポイント編集画面を開き、Navigatorの即時移動コマンドとは目的が異なります。

3. Waypoint Editor

ウェイポイントはNPCが通過する場所を保存したものです。/npc path でエディタを開いて位置を登録し、必要に応じてプロバイダを選択します。

公式Wikiに記載されている主なプロバイダ:

Provider動作用途
linear保存したウェイポイントを順番に巡回通路巡回、駅員の定期移動
wanderランダムに歩き回る町の住人、環境演出
guided目的地と補助点を用いてランダムに移動道に沿った巡回など

プロバイダは /waypoints provider <名前> で指定する方式が案内されています。実際の利用可能なプロバイダは /waypoints help で確認してください。

4. Waypoint Triggers

linear/guidedなどの対応プロバイダでは、ウェイポイントに到達した際のトリガーを設定できます。公式Wikiでは、特定地点での停止、速度変更、発話などを例として挙げています。

利用可能なトリガーはエディタ内の triggers 案内で確認してください。すべてのプロバイダが同じトリガーに対応するとは限りません。

5. 経路探索オプション

/npc pathopt には、現行コマンド資料で次のような項目が案内されています。

  • 水を避けるかどうか
  • ドアを開けるかどうか
  • 経路探索範囲
  • 路線から外れたときの距離マージン
  • 落下可能距離
  • Citizens独自/Minecraft系の経路探索方式
  • 攻撃範囲、目的地周辺の停止判定
  • 経路探索中のテレポートを避ける設定

項目名やデフォルト値は実装変更があり得るため、/npc help pathopt を参照してください。パスファインダーの範囲を必要以上に大きくすると負荷が増える場合があります。長距離移動は区間ごとに分けることも検討してください。

6. 詰まり・経路が見つからない場合

確認順:

  1. NPCが移動可能な状態か、AI/Navigatorが無効化されていないか。
  2. 目的地とNPCの間に通行不能なブロック、液体、段差、閉じたドアなどがないか。
  3. 経路探索範囲が目的地までの距離に足りているか。
  4. pathopt により水回避・ドア開閉・落下距離などが制限されていないか。
  5. 他プラグインがNPCの移動、ワールド保護、エンティティ移動を妨げていないか。
  6. /npc debug の経路/ナビゲーション関連情報や debug-pathfinding 設定を検討する。
  7. 短距離の開けた場所で再現テストする。

設定ファイルにある経路探索デバッグは、調査が終わったら無効に戻してください。

7. APIから移動させる

Java APIではNavigatorを通じて目的地を指定する方法が紹介されています。

npc.getNavigator().setTarget(destinationLocation);

NPCがスポーンしているか、目的地が有効か、経路移動が可能かを呼び出し側で考慮してください。APIの詳細は 公式API Wiki とJavadocを参照してください。

Citizens - Navigation Waypoints | Unknown Network