マイクラリモコン(Minecraft Remote / mc-remote)のサーバー側プラグインです。Paper サーバーで動き、Scratch や Python などのクライアントから届いた命令を、マインクラフトの世界へ反映します。
🏠 公式サイト: mc-remote.com
Note
🌐 言語方針について / Language Policy
本リポジトリは、一次情報(SSOT)の鮮度と正確性を保つため、日本語を正本として記述しています。多言語参加やIssue/PRの利用方針については 主要言語についての方針転換 / Language Policy をご覧ください。
This repository is maintained in Japanese as its primary Single Source of Truth (SSOT). Multi-language contributions are welcome. Please see our Language Policy.
マイクラリモコンは、コーディングでマイクラの世界を動かしながら「学び方を学ぶ」ためのオープンソースのツール群です。Scratch や Python などで書いたコードから、マインクラフトのサーバーへブロックを置いたり、プレイヤーを動かしたりできます。
ヘルパープラグインとしてGeyser/Floodgateを使用することで、Java 版でも統合版でも接続できます。また、ViaVersion / ViaBackwards を使うと、Java版のバージョンを気にせず接続できるようになります。
- サーバーのプラグイン(McRemote、このリポジトリ)
- 各言語のクライアント(Scratch、Python、Java など)
- 通信の中身を観察する WireScope
- サーバーの構築・運用パッケージ(mc-remote-stack)
はじめかた、考え方、ロードマップなどは、公式ホームページへ:https://mc-remote.com/
McRemote は マイクラサーバー(Paper)で動くプラグインで、各言語のクライアントからの接続を受けるマイクラリモコンサーバーとして働きます。マイクラリモコンクライアントのコードは、マイクラ自体とは別の接続( TCP ポート、規定番号は 25575)で McRemote に命令を送ります。McRemote はその命令をマイクラサーバーの世界へ反映し、結果を返します。
マイクラサーバー(Paper) ---------------- マイクラアプリ(Java版、統合版)
マイクラリモコンサーバー(McRemote) -------- マイクラリモコンクライアント(Scratch、Python など)
まずは、公式ホームページで紹介している箱庭サーバーセット(マインクラフト - Scratch)で気軽に試してから、自分のサーバーへのプラグイン導入を検討できます。https://mc-remote.com/#lan
minecraft-remote-api の最短クイックスタートの address を、箱庭サーバーから自分のサーバーに変えて試す流れです。
前提: プラグインMcRemoteのリリースに記載されている対応MCバージョンのPaperが、LAN内のPCやレンタルサーバーなど動いている。
リリース一覧から使いたいリリースのJARファイルをダウンロードし、サーバーの plugins/ に置いてサーバーを起動します。
クライアントコードで接続先を自分のサーバー(port 25575)にして、コードを実行します。
デフォルトでは、認証が有効になっています。クライアントが接続すると、McRemote はペアリングコードを生成し、クライアントに返します。クライアントが表示する /mcremote pair NNN-NNN をゲーム内のチャットコマンドとして実行すると、接続が認証されます。
2分以内に入力しないと、ペアリングコードは無効になるので、再度、新しいコードを取得してください。ペアリングが成功した場合、認証の有効期限は2時間です。期限が切れた場合は、再度ペアリングが必要です。
Scratchで使う場合は、LAN版Scratchの案内へ進んでください。
おすすめプラグインのページで、LuckPerms、ViaVersion / ViaBackwards、Geyser / Floodgate、DirectionHUD、WorldEdit、DiscordSRV、BlueMapを紹介しています。
Javaの配布元はEclipse Temurinを使い、各系列の最新パッチを推奨します。miseの最新版で、サーバーのフォルダーごとに必要なJavaの系列を設定してください。
| Paper | Java |
|---|---|
| 1.21.11 | Temurin Java 21 |
| 26.3 | Temurin Java 25 |
miseの導入・シェル設定後、サーバーのフォルダーで次を実行します。
mise use java@25 # Paper 26.3。Paper 1.21.11のフォルダーでは java@21
mise exec -- java -version
mise exec -- java -jar paper.jar noguimise.tomlにはjava = "25"(または"21")が保存されます。パッチの更新は月1回ほど確認し、サーバーを停止した保守時にmise upgrade javaで明示的に更新して再起動します。mise useの繰り返しでは、導入済みの版が使われることがあります。
導入、mise ls javaでの確認、Bashの補完、既存環境の整理は、Java・miseガイドを参照してください。
設定ファイルは plugins/McRemote/config.yml です。初回起動時に既定値で作られます。設定値を変更した場合は、サーバーを再起動して反映させてください。
- マイクラリモコンの通信のため、TCPポート(
api_port、デフォルト値は25575)を使います。 セキュリティに留意してポート開放してください。 - プラグイン
LuckPermsは、グループや大人数で使う場合には特におすすめですが、使う場合は、接続するプレイヤーにmcr.onlineまたはmcr.offlineの権限、及びmcr.build.rangeとmcr.build.blocksについての meta を付与する必要があります。 「なんか、よくわからないけど入れておこう」だと、マイクラリモコンが使えなくなってしまうので要注意。 詳しくは、LuckPermsの使い方へ。 auth.enforcementの既定はtrueです。falseは認証障害の診断や移行試験のための一時的なバイパスです。 認証なしで接続できてしまう ので、検証環境だけで使用します。- 認証情報の保存先が起動時に欠けている場合、プラグインは新しい保存領域を自動で作り、サーバーログに通知します。この場合、以前の token は使えなくなり、再び、ペアリングが必要となります。保存済みデータの破損や ID 不一致などでは認証を停止し、原因をログに出します。
接続と権限:
| 項目 | 既定値 | 意味 |
|---|---|---|
api_port |
25575 |
client が接続する TCP port。ゲームの port とは別です |
luckperm_permissions.online |
mcr.online |
プレイヤーがゲームに入っている(online)間に、client からの建築などを許す LuckPerms の permission node |
luckperm_permissions.offline |
mcr.offline |
プレイヤーがゲームに入っていない(offline)ときに、client からの建築などを許す permission node |
luckperm_permissions.build.range |
mcr.build.range |
プレイヤーごとの build range を読む LuckPerms の meta key |
luckperm_permissions.build.blocks |
mcr.build.blocks |
プレイヤーごとの1操作あたりの対象block数を読む LuckPerms の meta key |
default_build_range |
1000 |
LuckPerms が無いときなどに使う build range(ブロック)。建築原点から X 方向と Z 方向それぞれにこの距離まで建築できます |
default_build_blocks |
32768 |
LuckPerms が無いときの1操作あたりの対象block数。既存configの明示値は 0 も含めて保持します |
supported_mc_versions |
配布JARの宣言から生成 | helloはJAR同梱の対応版一覧を使います。この設定は広告を変更しません。既存値は保持し、宣言と違えば起動時にwarningを出します |
hud.enabled |
true |
ゲーム内に座標・時刻HUDを表示する |
hud.toggle_on_swap |
true |
参加時の交換入力によるHUD切替の初期値。本人のコマンドでログアウトまで上書きできる |
mcr.build.blocks は world.setBlock/world.setBlocks の1操作で指定する対象block数の上限です。setBlocks は両端を含む直方体の体積で数え、元から同じblockだった場所も含めます。
LuckPerms の継承・contextを含む実効metaを接続時に読み、変更は再接続で反映します。LuckPermsがある場合、meta未設定は 0(block編集禁止)です。LuckPermsが無い場合はconfigの default_build_blocks(配布既定32768)を使います。metaの 0、負値・不正な整数も編集を禁止します。
上限超過は既存の build_denied で拒否し、範囲内の一部だけを変更しません。
例えばグループごとに、次のように設定できます。
/lp group visitor meta set mcr.build.blocks 256
/lp group member meta set mcr.build.blocks 32768
このmetaはwork予算を増やしません。既定の1要求のwork上限は32768、1接続の1tickのwork上限は4096です。 setBlocksは既定tick予算に収まる分ずつ施工し、同じ接続の後続操作を待たせます。id付き要求は全量の施工後に result:nullを返し、FAST通知の後に送るconnection.flushも完了まで待ちます。開始前に予算がまったく無ければid付きはbackpressure、FASTは延期します。施工開始後の予算不足では進捗を保って待ちます。
途中失敗や切断では施工済み部分が残るため、操作全体の自動再送は避けてください。tokenに束縛されない明示的な認証bypassではこのプレイヤーmetaを適用せず、既存のwork予算を適用します。
認証(auth):
| 項目 | 既定値 | 意味 |
|---|---|---|
auth.enforcement |
true |
接続に token を求めるか。false は一時的な bypass に限ります(上記) |
auth.pair_code_ttl_seconds |
120 |
ペアリングコードの有効期間(秒) |
auth.session_token_ttl_seconds |
7200 |
ペアリングで発行する session token の有効期間(秒) |
auth.max_sessions_per_uuid |
16 |
同じ プレイヤーが同時に持てる接続の数 |
auth.credential_store_path |
credential-store/snapshot.json |
認証情報の保存先。相対パスは plugins/McRemote から |
auth.revocation_authority_path |
credential-revocations |
失効記録の保存先。上と入れ子にしないでください |
auth.max_long_lived_credentials_per_uuid |
16 |
プレイヤーごとの長期 credential の上限。同時接続数とは別です |
認証情報は、すべてのOSでPaperが提供するSQLite JDBCを使って保存します。既存configの auth.credential_store_path に .sqlite を付けたDB(既定 credential-store/snapshot.json.sqlite)と、auth.revocation_authority_path に -sqlite を付けた別directory内の authority.sqlite(既定 credential-revocations-sqlite/authority.sqlite)を使います。旧JSONは読み取り・移行・削除・退避しません。旧ファイル方式からの更新時は、新しい認証domainが作られるため、ペアリングし直してください。既存の有効なSQLite DBは引き続き使います。
Minecraftサーバーのフォルダーは、OneDriveなどのクラウド同期の対象に置かないでください。
Java 25ではSQLite native libraryの読み込み時に警告が出ることがあります。読み込みは追加flagなしでも可能で、java --enable-native-access=ALL-UNNAMED ... -jar paper.jar とするとこの警告を抑えられます。
各DBとその -wal は一組の復旧単位です。稼働中のDBだけをコピーせず、整合したバックアップを取ってください。snapshotだけを復元する際にauthorityを書き戻さないことが、失効したtokenを再び有効にしないための条件です。明示resetでは旧SQLite stateを各DB内へ保持して、新しいdomainを作ります。
実行時の上限: プラグインが一度に抱える量の上限です。protocol の定数ではありません。サーバーの負荷を見て調整します。
認証前にも接続・受信・pairing の上限を適用します。接続数や頻度、入力サイズ、待ち時間、保留 pair 数が上限を超えた場合は TCP 接続を閉じます。新しい認証 error や token を返さず、 自動再試行もしません。接続数と頻度は Bridge 配下も含めたサーバー全体の値です。
接続・pairing の値は個別に設定せず、起動時の Paper の有効な max-players から内部テーブルを選びます。16 以下は16人向け、17–24は24人向け、25–32は32人向けです。33以上では32人向けの上限を使い、想定範囲外であることを起動ログへ通知します。設定人数は建築処理性能の保証ではありません。
以下は試用で較正する有限な暫定値です。
| 上限 | 16人向け | 24人向け | 32人向け |
|---|---|---|---|
| 全接続数(hello後も含む) | 64 | 96 | 128 |
| hello前の同時接続数 | 32 | 48 | 64 |
| 1秒の受付窓内の接続試行数 | 80 | 112 | 144 |
| 1秒の窓内のpairBegin数 | 20 | 28 | 36 |
| 1秒の窓内のpairPoll数 | 64 | 96 | 128 |
| 保留pair数 | 32 | 48 | 64 |
人数に関係なく、入力1行は改行を除くUTF-8で64KiB、接続ごとの入力queueの保存量は1MiBです。保存量は各行を 40 + 2 × UTF-16長 byteで見積もります。これらはhello後も適用します。
hello前の入力待ちは30秒、hello成功までの絶対期限は180秒で、継続入力やpairingでも延長しません。auth.pair_code_ttl_seconds が120秒より長い場合は、絶対期限をその値+60秒へ自動的に延ばします。hello成功後の入力待ちには、このtimeoutを適用しません。
以前の10個の個別設定キーは起動時に削除し、対象キーと内部テーブルへの切替をログへ通知します。Paperの max-players を変更した後は、サーバーを再起動してください。起動ログには選択テーブルと実効値を表示し、使用中は30秒間隔で変化のあった集計を表示します。
rejected は前回集計からの理由別件数、*_peak は起動後の最高値、queue_waits はqueue空き待ち回数です。通常の切断は上限拒否へ計上せず、IP・UUID・token・入力本文を集計へ含めません。停止時にも残りを出力します。入力 queue は件数か保存量の上限に達すると受信側を待機させ、TCP の backpressure を掛けます。hello 前はこの待機にも絶対期限を適用します。
| 項目 | 既定値 | 意味 |
|---|---|---|
connection.command_queue_capacity |
1024 |
接続ごとに、受け付けて未実行の命令を溜められる数 |
connection.response_queue_capacity |
64 |
接続ごとに、未送信の応答を溜められる数。あふれるとその接続を切ります(黙って捨てません) |
events.ring_capacity |
256 |
接続ごとに溜めておくイベントの数 |
events.ring_bytes |
262144 |
溜めておくイベントの合計バイト数の上限 |
events.poll_default |
64 |
events.poll が件数を指定しないときに返す件数 |
events.poll_limit |
64 |
events.poll が一度に返す件数の上限。client の指定がこれより大きければ、この値に縮めます |
entities.handle_capacity |
256 |
接続ごとに発行できる entity handle の数 |
entities.nearby_max_radius |
64 |
world.getNearbyEntities で指定できる半径の上限(ブロック)。下げられますが、64 より上には上げられません |
entities.nearby_max_entities |
64 |
world.getNearbyEntities で一度に返せる entity の数の上限。下げられますが、64 より上には上げられません |
particles.max_count |
1000 |
1 回の spawnParticle で出せる数の上限 |
work.per_request |
32768 |
1 つの命令の作業量の上限。接続・プレイヤー・全体のtick予算も別に適用します |
work.per_session_tick |
4096 |
1 tick あたり、接続ごとの作業量の上限 |
work.per_player_tick |
8192 |
1 tick あたり、プレイヤーごとの作業量の上限 |
work.global_per_tick |
32768 |
1 tick あたり、サーバー全体の作業量の上限 |
sound.per_connection_per_tick |
16 |
1 tick に、接続ごとに鳴らせる音の数(world.playSound、world.playBlockSound)。超えると backpressure |
sound.global_per_tick |
64 |
1 tick に、サーバー全体で鳴らせる音の数 |
lightning.connection_cooldown_ticks |
20 |
同じ接続から落雷を続けて呼べる間隔(tick) |
lightning.player_cooldown_ticks |
20 |
同じ プレイヤーが落雷を続けて呼べる間隔(tick) |
lightning.global_per_tick |
2 |
サーバー全体で 1 tick に起こせる落雷の数 |
lightning.rolling_window_ticks |
20 |
下の上限を数える期間(tick) |
lightning.global_per_window |
8 |
上の期間にサーバー全体で起こせる落雷の数 |
既存の config.yml に指定した work.per_request の値は維持します。既定値32768を使うには、この項目が未設定であるか、設定値を32768へ変更する必要があります。
以前の config.yml に b5:/b7: の項目が残っていると、McRemoteはエラーをログに出してPaperサーバー全体を停止します。自動移行や旧項目の読み替えは行いません。b7以前から更新する場合は、旧設定の直し方を確認してください。
ゲームに入ると、画面上部のボスバーに次の一行を表示します。
絶対X Y Z / 相対X Y Z / #方位# / tick / hh:mm
| 項目 | 足元 | 照準先 |
|---|---|---|
| 絶対座標 | #e6c78a |
#e6a117 |
| 相対座標 | #e68ac7 |
#e617a1 |
| 方位文字 | 視線の向きに応じた色相 | 視線の向きに応じた色相 |
方位の前後の# |
視線の向きに応じた色相 | 視線の向きに応じた色相 |
| tick | #2bd9bc |
#2bd9bc |
| 時計 | #2bd92b |
#2bd92b |
セパレーター/ |
#999999 |
#999999 |
文字色はサーバー起動時にhud.colorsから読みます。以下は配布既定値です。既存configの不足項目は起動時に補われます。hud:の中のcolors:を変更して調整できます。
hud:
colors:
relative_target: {h: 320, s: 90, b: 90}
relative_legs: {h: 320, s: 40, b: 90}
absolute_target: {h: 40, s: 90, b: 90}
absolute_legs: {h: 40, s: 40, b: 90}
direction_mark: {s: 75, b: 100}
direction: {s: 40, b: 90}
tick: {h: 170, s: 80, b: 85}
time: {h: 120, s: 80, b: 85}
separator: {h: 0, s: 0, b: 60}座標の色相は絶対が40度、相対が320度です。照準は彩度90%、脚は40%とし、照準の対象を鮮やかな色で強調します。既存configに明示した配色は維持します。
hは色相0〜360度(360は0と同じ)、sは彩度0〜100%、bは明度0〜100%です。小数も使えます。absolute/relativeは絶対/相対、target/legsは照準/足元です。tickと時計のtimeは別々に設定できます。separatorは全4箇所の/に共通です。
方位は#北#/#NE#のように前後へ#を付けます。#だけを太字にし、方位文字は日本語・英語とも通常の太さで表示します。方位名は8方位のまま、方位と#の文字色は実際の水平の視線に合わせて連続的に変わります。北はH=0(赤)、東は90(黄緑)、南は180(シアン)、西は270(紫)。方位文字の彩度・明度はdirection、両側の#はdirection_markで独立して調整できます。両方ともHは視線から求めるため、設定するのはS/Bだけです。色の更新も10 tick間隔です。
文字だけを白に近い淡色にする例はdirection: {s: 20, b: 100}、記号を鮮やかに保つ例はdirection_mark: {s: 100, b: 100}です。文字側も薄く色を残したまま、向きに応じて色相が変わります。既存のdirectionの値は文字側へ引き継ぎ、不足するdirection_markには独立した既定値S=75/B=100を補います。
省略した値には既定値を使います。数値以外・範囲外の値などがあれば、起動ログに設定名を出し、その色全体を既定値へ戻します。色の変更を反映するにはサーバーを再起動してください。
足元は、足の位置を含むブロックの座標です。立っている床のブロックではありません。照準は16ブロック先までの形状で判定し、当たったブロックそのものを表示します。液体そのものとentityは対象にしません。
相対座標は、本人の有効な接続の建築原点をXYZすべてで引いた値です。接続や原点がない場合、または原点と別worldの場合は[ - - - ]。照準が外れたときは絶対部分を[-]とし、原点が有効なら相対部分も[-]、原点が使えなければ[ - - - ]となります。前の照準先は残しません。
複数接続では、最初は有効な接続の受け付け順の先頭を使い、選択中の接続が切れたら残る接続の先頭へ移ります。建築原点の変更も表示へ反映します。
方位は水平の視線方向を8方位で表示します。クライアントが日本語なら「北・北東・東…」、それ以外は「N・NE・E…」です。更新は10 tickごと(通常約0.5秒)。時刻tickの一の位を0にし、その値から24時間時計hh:mmを求めます。0 tickは06:00、6000 tickは12:00です。
/mcremoteの短縮aliasとして/mcrを使えます。
| ゲーム内コマンド | 操作 |
|---|---|
/mcr hud off / on |
自分のHUDを隠す/表示する |
/mcr hud toggle |
足元と照準先ブロックの座標を交互に表示する |
/mcr hud legs / target |
足元/照準先ブロックに直接切り替える |
/mcr hud toggle-on-swap on / off |
自分のオフハンド交換操作をHUD切替へ置き換える/通常の交換にする |
/mcr hud status |
表示状態・対象点・交換入力による切替のon/offを確認する |
toggleは表示のon/offではなく、足元/照準のモード切替です。
実行後はHUD: on / 足元の座標 / toggle-on-swap: onのように、状態の値を入力と同じ小文字のon/offで表示します。
オフハンド交換の標準キーはFです。既定では、本人のHUD表示中は交換動作を取り消し、足元/照準を切り替えます。Shiftは使いません。/mcr hud toggle-on-swap offにするかHUDを隠すと、通常の交換として動きます。他のプラグインが既に取り消した入力は処理しません。各クライアントで交換操作を別のキーへ割り当てることもできます。
config.ymlのhud.toggle_on_swap(既定true)は参加時の初期値です。各自がコマンドで変更しても他の人へ影響せず、ログアウト・サーバー再起動で初期値に戻ります。既存configにfalseがあれば、その設定は保持します。表示状態と対象点も一時設定で、ログアウト・再起動で表示はon・足元へ戻ります。設定fileを変更した場合はサーバーを再起動します。
サーバー全体でMcRemoteのHUDを無効にするにはhud.enabled: falseを設定します。DirectionHUDも併用する場合は、それぞれの表示を必要に応じて選んでください。
- stream-local な dimension/origin と、構造化された block set/get
- paired プレイヤーの position/pose/direction
- bounded event poll と opaque entity handle
- particle(色・ブロックの指定、全員/本人への表示)、entity spawn、height query
- 周囲の entity の検索、position/pose/direction の取得・変更、削除
- 落雷、位置やブロックからのサウンド再生
- sign の get/replace/1行 update
- catalog、pairing、session/long-lived credential
- notification と
connection.flushbarrier
使える命令は公開版の API 一覧で確認できます。
params、result、error の詳しい契約は protocol SSOT を参照してください。
更新前にサーバーを停止し、使用中の JAR と plugins/McRemote/config.yml を控え、world をバックアップします。新しい JAR へ置き換えるときは、plugins/ に McRemote の JAR が1つだけある状態にして起動してください。クライアントも対象リリースに対応する版へ揃えます。認証情報の保存領域は保持します。
beta の問題は通常、次の beta で修正します。前の版へ戻す必要がある場合は、同じ Minecraft の版の中で、控えておいた JAR とその版の設定を使い、クライアントの版も合わせてください。JARだけを戻しても設定は元に戻りません。world の変更は JAR の交換では元に戻りません。版を戻した後は、起動・認証・代表操作を確認します。release ごとの検証状況は release gate の記録を参照してください。
2321.0.0rc2以降は、旧設定が残っているとPaper全体が停止します。起動ログに残っているキーと新しいキー名を出します。サーバーを停止した状態で、plugins/McRemote/config.ymlを控えてから、旧項目の値を次の項目へ移し、b5:/b7:のセクションを削除してください。新しい項目も既にある場合は、使いたい値を確認して新しい項目に設定します。
| 旧項目 | 新しい項目 |
|---|---|
b5.connection_queue_capacity |
connection.command_queue_capacity |
b5.connection_response_queue_capacity |
connection.response_queue_capacity |
b5.event_ring_capacity |
events.ring_capacity |
b5.event_ring_bytes |
events.ring_bytes |
b5.event_poll_default |
events.poll_default |
b5.event_poll_limit |
events.poll_limit |
b5.entity_handle_capacity |
entities.handle_capacity |
b5.max_particle_count |
particles.max_count |
b5.max_work_per_request |
work.per_request |
b5.session_work_per_tick |
work.per_session_tick |
b5.player_work_per_tick |
work.per_player_tick |
b5.global_work_per_tick |
work.global_per_tick |
b7.lightning.connection_cooldown_ticks |
lightning.connection_cooldown_ticks |
b7.lightning.player_cooldown_ticks |
lightning.player_cooldown_ticks |
b7.lightning.global_per_tick |
lightning.global_per_tick |
b7.lightning.rolling_window_ticks |
lightning.rolling_window_ticks |
b7.lightning.global_per_window |
lightning.global_per_window |
空のb5:/b7:セクションや、表に無い旧セクション内の項目が残っていても停止します。rc1までの版で移行が済み、旧セクションが残っていない設定はそのまま使えます。修正後にPaperを起動し、McRemoteの有効化・接続・代表の読み書きを確認してください。
- beta 間では protocol minor と利用可能 method が変わることがあります。client と plugin の protocol version を合わせてください。
- world mutation は取り消し transaction ではありません。重要な world はバックアップし、 build origin と range を確認してから接続してください。
- notification は個別 result を返しません。順序の確定が必要な場合は
connection.flushを使います。 - token、credential store、private host、FTP 設定を repository に commit しないでください。
reloadPlugin、live、deploy task はローカル server や外部環境を変更します。通常の build/test とは分けて実行してください。
配布版・Minecraft/Paper API の版・toolchain は gradle.properties が所有します。
hello で使う protocol 版は ProtocolInfo.PROTOCOL が所有します。
設計と wire contract の正本は mc-remote-knowledge にあります。
./gradlew build別の Paper API に対する一時的な compatibility compile は、対象の検証指示に従い、 -PmcJavaVersion、-PpaperApiVersion、-PpluginApiVersion で値を指定して compileJava を実行します。compile の成功だけでは、その Minecraft 版での動作確認や対応版の追加を意味しません。
local server task は環境固有の server directory を使用します。
./gradlew runServer
./gradlew stopServer
./gradlew restartServerscripts/smoke_test.py は Python 標準ライブラリだけで接続し、hello、build context、 block set/get、catalog error を一往復確認します。auth.enforcement: false にした隔離した開発設定で、サーバー起動後に実行します。
python3 scripts/smoke_test.py \
--host 127.0.0.1 --port 25575 \
--dimension overworld --ox 200 --oy 0 --oz 200成功時は最後に PASS が表示されます。この smoke は実 world を変更し、既定では minecraft:overworld の絶対座標 (200,0,200) から上へ4ブロックを置きます。使い捨ての開発 world で実行するか、確認後にその4ブロックを削除してください。
pairing と プレイヤーposition/pose の代表往復は、サーバー内で pair code を承認できる状態で次を使えます。
python3 scripts/player_test.py --host 127.0.0.1 --port 25575検証スクリプトはこの checkout 内で使います。protocol の既定値は scripts/protocol_version.py が ProtocolInfo.PROTOCOL から読み取るので、スクリプトごとの更新は不要です。
別の版を検証するときは --protocol で指定できます。live_auto.py、live_human.py、 sign_live_auto.py の --expect-mc は、検証指示に書かれた Minecraft 版を明示してください。
接続先の hello.mc_version が違う場合は、試験本体を実行せず失敗します。
issue と contribution は GitHub repository で受け付けます。ライセンスは LICENSE を参照してください。本 project は wensheng/JuicyRaspberryPie を起点にしています。
認証情報の保存には、Paperが提供する SQLite JDBC を使います。McRemoteのJARにはSQLite JDBCやnative libraryを同梱しません。