Navi API docs 1.0.0English

使用例

連携クラスのサンプルには開始・通知の受け取り・経由地点更新・停止の例があります。資料生成時に配布済み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も必要です。取消と古い結果の扱いはライフサイクルを参照してください。