【マイクラ×MakeCode】CodeConnectFixの仕組み | 平坦な世界でこんにちは

平坦な世界でこんにちは

マイクラ初心者によるマイクラプログラミング日記。

なんだかよくわかりませんが、

私の環境ではCodeConnectFixでMakeCode接続を試みると、結構な頻度で失敗します。

接続成功後に処理が止まってしまい、CodeConnectionの画面が更新されません。

 

リトライし続けていると成功するものの、このまま使い続けるのも気持ちが悪い。

ということでCodeConnectFixの中身を覗いて、問題を特定したいと思います。

 

 

マイクラ×MakeCodeプログラミングの動作イメージ

 

マイクラ×MakeCodeプログラミングの仕組みを図にすると、こんな感じです。

 

 

 

 

 

 

 

 

 

 

 

 

処理の流れは以下でしょう。

一部想像も入っていますが、まあ大体のイメージということで。

 

1.   CodeConnection起動→TCPソケット(ポート19131)で接続待機

2.   マインクラフトで/coonectコマンドを実行→CodeConnectionに接続

3.   CodeConnection→minecraft.makecode.comに接続

 → レスポンスをCodeConnectionの画面に表示

4.   マインクラフトで発生したイベントをCodeConnectionに向けて送信

 → CodeConnectionが受け取り、MakeCodeに送信

 → MakeCodeがプログラム処理に応じたコマンドに変換してCodoConnectionに送信

 → CodeConnectionがマインクラフトにコマンドを送信

 →マインクラフトが受け取ったコマンドを実行


 

Ver.1.18.12までは上記が使えていたのですが、

その後のマインクラフトのVerUPにより、/connectの仕様(通信プロトコル)が

変わりました。にも拘わらず、CodeConnectionのプロトコルは古いまま。

実質上、CodeConnectionは使えなくなりました。

 

 

そこで、CodeConnectionとマインクラフトの間に、CodeConnectFixを挟んで

やり取り(プロトコル)を変換してあげましょうということですね。

 

 

ていうかCodeConnectionアップデートしましょうよって感じです。公式・・・!

 

まあ上記で大体あっていると思いますが、

CodeConnectFixのコードはGitHub上にありますので、一応、中身を確認してみます。

 

案の定、プロトコルが、V1,V2の2種類で定義されていました。

 

 

 

 

つまり、V2ベースのメッセージを、V1ベースのメッセージに変換しているということです。

 

 

CodeConnectFixのどこかの処理で止まるっているのだろうと思われますが、

私の環境は旧Ver(1.18.12)です。CodeConnectFixの検証をすることはできません。

 

マインクラフトを最新に上げればいいのですが、

せっかく作ったマイクラ×MakeCode環境を崩してしまうのも面倒くさいです。

息子のVerと差分がでると、一緒に遊べなくなってしまいますし。

 

ということで、まずは、旧VerのマインクラフトでCodeConnectFixを使えるようにします。

 

簡単です。CodeConnectFxにおいて、Client側(マイクラ)のVer指定は以下でされています。

 

 

 

こちらをV1に変更すると、Ver1.18.12のマインクラフトで

CodeConnectFixを経由して、MakeCodeに接続できるようになります。

 

逆に最新版では接続できなくなってしまうので、ちゃんとフラグにして

両対応にしておくのが良いでしょう。

 

次回は、こちらを使ってCodeConnectFixをデバッグしていきたいと思います。