クロームブックのマインクラフトでmcws.jsを使ってみる


クロームブックのマインクラフト統合版でプログラミングをしてみるで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

が出力されています。

マインクラフト用ビジュアルエディタを開発しています。
詳しくはinunosinsi/mcws_blockly - githubをご覧ください。