API リファレンス
bedrock-protocol パッケージからエクスポートされる主な要素のリファレンスです。型定義はリポジトリの index.d.ts が正式な情報源です。
エクスポート一覧
js
const {
createClient,
createServer,
ping,
Relay
} = require('bedrock-protocol')| 名前 | 型 | 説明 |
|---|---|---|
createClient(options) | (options: ClientOptions) => Client | クライアントを作成し、サーバーへ接続する |
createServer(options) | (options: ServerOptions) => Server | サーバーを作成し、待ち受けを開始する |
ping({ host, port }) | Promise<ServerAdvertisement> | サーバーへ ping を送り、状態を取得する |
Relay | class extends Server | MITM プロキシ。new Relay(options) + listen() |
Client / Server | class | クラス本体。delayedInit などによる手動ライフサイクル用に直接コンストラクト可能 |
title | prismarine-auth の Titles | 認証タイトル定数(Titles.MinecraftNintendoSwitch など)。詳細はエコシステムガイド |
ServerAdvertisement | class | MOTD データクラス。toString() / fromString() / toBuffer() を持つ(下記) |
Connection(共通基底クラス)
Client と Player の共通の親クラスです。
プロパティ
| 名前 | 型 | 説明 |
|---|---|---|
status | ClientStatus | 接続状態(Disconnected / Authenticating / Initializing / Initialized) |
メソッド
write(name, params)
パケットを Protodef でシリアライズし、キューを介さず即座に送信 します。
js
client.write('text', { /* ... */ })queue(name, params)
パケットを送信キューに入れ、次の送信バッチでまとめて送ります(デフォルト 20ms 間隔)。通常はこちらを推奨。
sendBuffer(buffer, immediate?)
Protodef シリアライズを スキップ して、既に構築済みの MCPE バイト列(Buffer)をそのまま送ります。immediate: true でキューを無視して即送信します。低レベル操作用です。
バージョン比較ヘルパー
接続相手のバージョンと比較します。バージョン分岐の実装に使えます。
js
if (player.versionLessThan('1.21.130')) {
// 古いバージョン向けのフィールド構成
}| メソッド | 意味 |
|---|---|
versionLessThan(v) | 相手 < v |
versionGreaterThan(v) | 相手 > v |
versionGreaterThanOrEqualTo(v) | 相手 >= v |
versionLessThanOrEqualTo(v) | 相手 <= v(index.d.ts 未記載だが実装あり) |
Client
Connection を継承。サーバーに接続する側です。型定義にないメンバーも含めて記載します。
| メンバー | 説明 |
|---|---|
entityId (readonly) | サーバーが割り当てたエンティティ ID(BigInt)。実体は startGameData.runtime_entity_id |
startGameData | 受信した start_game パケットの中身(スポーン座標・ゲームモード・ワールド設定など) |
profile / username | 認証後に確定するプロファイル { name, uuid, xuid } と表示名 |
ping() | 接続先への RakNet ping(接続前の疎通確認) |
connect() | 手動フロー用。delayedInit: true + connect_allowed 後に呼ぶ(ガイド) |
close(reason?) | 接続を閉じて退出する |
disconnect() | disconnect パケットを送ってから切断する |
Player
Connection を継承。サーバーに接続してきたプレイヤーを表します。
プロパティ
| 名前 | 型 | 説明 |
|---|---|---|
profile | { xuid, uuid, name } | undefined | 検証済みプロファイル情報 |
version | string | クライアントのプロトコルバージョン(数値) |
authentication | AuthenticationResult | 認証結果。詳細はサーバーガイド参照 |
userData | object | ログイン JWT の identity ペイロード全体(displayName / XUID / identity(UUID) 等)。getUserData() と同一 |
skinData | object | ログイン JWT の clientData ペイロード(スキン情報)。Relay では上流への転送に使われる |
メソッド
| メソッド | 説明 |
|---|---|
getUserData() | ユーザーデータ(XUID・UUID・表示名・スキン等)を取得 |
sendDisconnectStatus(playStatus) | ログイン完了前に PlayStatus で切断する(例: 'failed_server_full') |
disconnect(reason, hide?) | 理由を表示して切断。hide: true で理由を非表示 |
close() | RakNet 接続を閉じる(disconnect からも呼ばれる) |
Server
| メンバー | 説明 |
|---|---|
clients | 接続中のプレイヤー一覧。実装はオブジェクト(キーは 接続アドレス、値は Player)。index.d.ts では Map 扱いだが実体は plain object |
clientCount | 現在の接続数 |
advertisement | 内部保持の ServerAdvertisement インスタンス(オンライン人数は毎秒自動更新) |
conLog | ログ出力関数 |
listen() | 待ち受けを開始する(Promise) |
close(disconnectReason?) | 全員に切断を通知して終了する(Promise) |
getAdvertisement() | 現在の告知データを返す。advertisementFn 指定時はその結果 |
setCompressor(algorithm, level, threshold) | 圧縮設定を実行時に変更('none' / 'deflate' / 'snappy') |
versionLessThan(v) 等 | サーバー自身のバージョン比較ヘルパー |
ServerAdvertisement
ping 応答・サーバー告知のデータクラスです。既定値:motd = 'Bedrock Protocol Server'、levelName = 'bedrock-protocol'、playersMax = 5(createServer では maxPlayers で上書き)、gamemode = 'Creative'。
フィールド一覧は ping ガイド を参照してください。
js
const adv = new ServerAdvertisement({ motd: 'My Server' }, 19132, '1.21.50')
adv.playersMax = 100
adv.toString() // RakNet の PONG 文字列形式(MCPE;...;)
ServerAdvertisement.fromString(str) // 文字列 → インスタンス
adv.toBuffer() // length プレフィックス付き BufferRelay
Server を継承した MITM プロキシクラスです。詳細は Relay ガイド を参照してください。
| メンバー | 説明 |
|---|---|
upstreams | Map<addressHash, Client> — 上流(バックエンド)への接続一覧 |
forceSingle | 1 クライアント制限の有効フラグ |
enableChunkCaching | チャンクキャッシュの有効フラグ |
openUpstreamConnection(player, addr) / closeUpstreamConnection(addr) | 上流接続の手動管理 |