クロームブックのマインクラフト統合版でプログラミングをしてみるでpy-mcwsというPythonのライブラリでマインクラフトを操作してみました。
今回はNode.jsのmcws.jsでマインクラフトを操作してみます。
今回の内容を進める前に、クロスティーニに最新版のNode.jsをインストールするを参考にして、最新版のNode.jsをインストールしておきましょう。
※今回の内容ではNode.jsはv21.6.2でした。
最初にクロスティーニに振り当てられたIPアドレスを調べておきます。
クロスティーニを起動し、下記のコマンドを実行します。
$ hostname -I
100.115.92.206 240d:1e:3bb:5500:216:3eff:fe45:baf8
のような出力がされたら、100.115.92.206の方を記録しておきます。
続いて、マインクラフトとNode.jsを繋ぐ為のライブラリをインストールします。
今回はHRTK92/mcws.js: Library for easy connection with Minecraft Bedrock and Websocketを利用します。
クロスティーニを開き、下記のコマンドを実行します。
$ cd ~ $ npm install --global yarn $ yarn --version
続いて、マインクラフトと接続するNode.jsのサーバを作成します。
今回はプロジェクト名をmcws_jsにして話を進めます。
下記のコマンドを実行します。
$ cd ~ $ mkdir workspace $ cd workspace $ mkdir mcws_js $ cd mcws_js $ yarn add @hrtk92/mcwsjs
続いて下記のパスになるようにファイルを作成します。
/home/******(ユーザ名が入る)/workspace/mcws_js/index.mjs
import { mcws, Events } from '@hrtk92/mcwsjs' const mcserver = new mcws('100.115.92.206', 8000) mcserver.onReady((host, port) => { console.log('Server started') console.log(`/wsserver ${host}:${port}`) }) mcserver.onConnection(() => { console.log('Connected to Minecraft') mcserver.sendCommand('say Connected') // send command mcserver.subscribe(Events.PlayerMessage) // register events to receive }) mcserver.on(Events.PlayerMessage, (data) => { console.log(`${data.body.message} by ${data.body.sender}`) }) mcserver.onDisconnect(() => { console.log('Disconnected') }) mcserver.createServer() // start the server
const mcserver = new mcws('100.115.92.206', 8000)
では、先程調べましたクロスティーニに割り当てられたIPアドレスを指定します。
下記のコマンドでサーバを立ち上げます。
$ node ~/workspace/mcws_js/index.mjs
Server started /wsserver 100.115.92.206:8000
クロスティーニに上の文字列が出力されたら、サーバの立ち上げは成功です。
続いて、マインクラフトを立ち上げ、コマンド使用が許可されているワールドを作成します。
ワールドが作成できたら、プレイを開始します。
ゲームが始まったら、キーボードのTを押し、チャットとコマンドを開きます。
コマンドの入力フォームに/connect クロスティーニのIPアドレス:クロスティーニで表示されたポートを入力して送信します。
今回の内容を例にすれば、コマンドは下記のようになります。
/connect 100.115.92.206:8000
しばらく待つと、
画面左上に
サーバーへの接続を確立しました: ws://100.115.92.206:8000 [外部] Connected
のような表示があります。
これで、Node.jsでマインクラフトを操作する準備ができました。
一応、クロスティーニの方の出力も確認しておきますと,
Connected to Minecraft
が出力されています。