使用例
連携クラスのサンプルには開始・通知の受け取り・経由地点更新・停止の例があります。資料生成時に配布済みAPIに対してコンパイルを確認しています。コールバックから自分のMODの保存・UI処理をキューへ渡す構成で、ローダーごとの起動処理を含む一式ではありません。
経由地点と到着
var request = NavigationRequest.builder(new NavigationRequest.Location(
WorldPosition.block("minecraft:overworld", 100, 64, 200)))
.name("Home")
.waypoints(List.of(new NavigationRequest.PointWaypoint(
WorldPosition.block("minecraft:overworld", 80, 64, 160), "Entrance")))
.autoEnd(NavigationRequest.AutoEnd.AUTO)
.arrivalRadius(3)
.build();
残りの経由地点を通る順に最大16個指定します。到着半径は0〜3ブロック、既定は3です。AUTO は通過可能な目的地で自動終了し、固体の対象やエンティティでは停止するまで案内を残します。ON・OFF で上書きできます。プレイヤーはNaviのHUDからも停止できます。
エンティティを追跡
var request = NavigationRequest.builder(new NavigationRequest.Entity(entityUuid))
.name("Companion")
.build();
開始時に対象が観測できる必要があります。その後観測範囲から外れた場合は、最後に分かった位置を保持します。エンティティ案内は歩行可能な経路を使い、転送経由地点は指定できません。マーカーを指定する場合は、同じエンティティを対象にします。
既知のポータル接続
var entrance = new TransitNetwork.Endpoint("village",
WorldPosition.block("minecraft:overworld", 80, 64, 80));
var exit = new TransitNetwork.Endpoint("nether_hub",
WorldPosition.block("minecraft:the_nether", 10, 64, 10));
var connection = TransitNetwork.Connection.builder("to_hub",
new TransitNetwork.FixedSource("village"), "nether_hub", "Enter the portal")
.seconds(5)
.evidence(TransitNetwork.Evidence.OBSERVED)
.availability(TransitNetwork.Availability.AVAILABLE, "")
.build();
var network = new TransitNetwork(List.of(entrance, exit), List.of(connection));
var request = NavigationRequest.builder(new NavigationRequest.Location(exit.position()))
.network(network)
.waypoints(List.of(new NavigationRequest.TransferWaypoint("to_hub", "Village portal")))
.build();
接続には方向があります。逆方向も存在するなら別に登録してください。呼び出し側は、接続情報の根拠と、その接続を利用できるかどうかを指定します。利用可否の既定値は UNKNOWN なので、接続を登録するだけでは利用可能とは判断されません。Naviは指定された案内を表示して移動を観測し、装置自体は操作しません。ネットワークは地点・接続をそれぞれ最大512個保持できます。
現在地からアイテムを使用する転送は、FixedSource の代わりに ItemSource(dimension, itemId) を使います。この転送は明示的な経由地点の先頭に限ります。使用後は消費やクールダウンを含め、利用できるかどうかを再確認します。既知のネザー接続を使い、オーバーワールドの地点間の移動を短縮することもできます。
意図的な掘削
.routeStyle(NavigationRequest.RouteStyle.STAIRCASE) は目的地へ階段状に掘り下がる案内、VERTICAL は対象の上まで接近してから下降する案内です。既定の WALKABLE は掘削を求めません。掘削も表示による案内に限ります。プレイヤーが掘る意図を持っている依頼で使用してください。
案内を補足・更新
navigation.read()で状態を読み取り、返された依頼revisionを使って refine を呼びます。目的地と通過済みの経由地点は保持されます。ネットワーク更新には観測したnetwork revision、移動対象の経由地点更新にはtarget revisionも必要です。取消と古い結果の扱いはライフサイクルを参照してください。