2021/06/22 追記
ソケット通信を用いた通信ができるようにしたバージョンをリリースしました!
ポート番号14712で接続して通信することが可能です。
例えばPythonから以下のようにして通信することが可能です。
import socket
ip = 'localhost'
port = 14712
server = (ip, port)
socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
socket.connect(server)
socket.send(b'chat.post(socket test)')
ドキュメントはまだ作成していないので、実行可能なコマンドの詳細については以下のファイルを参照してください
APIHandler.java
// Commands
protected static final String WORLDGETPLAYERIDS = "world.getPlayerIds";
protected static final String GETBLOCKWITHDATA = "world.getBlockWithData";
protected static final String SETBLOCK = "world.setBlock";
protected static final String SETBLOCKS = "world.setBlocks";
protected static final String WORLDSPAWNENTITY = "world.spawnEntity";
protected static final String WORLDCHANGEWEATHER = "world.changeWeather";
protected static final String WORLDCHANGEGAMEMODE = "world.changeGameMode";
protected static final String WORLDCHANGEDIFFICULTY = "world.changeDifficulty";
protected static final String WORLDSPAWNPARTICLE = "world.spawnParticle";
protected static final String ENTITYGETPOS = "entity.getPos";
protected static final String ENTITYSETPOS = "entity.setPos";
protected static final String CHAT = "chat.post";
protected static final String GIVEENCHANT = "giveEnchant";
2021/06/20 追記
1.16.5
版について、以下の不具合がありました
- Minecraftのワールドを開く前にScratchのMinecraft拡張機能をロードすると、ScratchからMinecraftへの通信ができない
- ScratchのMinecraft拡張機能をロードしている状態でワールドから出て再度入ると、ScratchからMinecraftへの通信ができない
上記問題を修正したバージョンのmodを以下にアップロードしました。
https://www.curseforge.com/minecraft/mc-mods/remote-controller/files/3357426
2021/06/05 追記
マインクラフトのバージョン1.16.5
に対応しました!
CurseForgeから1.16.5用のmodファイルをダウンロードしてください。
また、Scratch自体も1.16.5
と1.12.2
で以下のように別々で公開しました。
-
1.16.5
:https://takecx.github.io/scratch-gui/1-16-5/ -
1.12.2
:https://takecx.github.io/scratch-gui/1-12-2/(1.12.2
についてはもともとのURLでも引き続き公開しています)
はじめに
2020年度から小学校でプログラミング教育が必修化になり、私の子供もChromebookが配布されてプログラミング教育が始まるようです。
巷ではScratchとMinecraftを連携させたプログラミング塾のようなものが溢れているようですが、自分でも作れそうだったので作りました(我が子が喜んでくれれば満足です)
Java版のマイクラ(3000円)さえあれば誰でも無料で使えますのでぜひ使ってみてください
(Windows10版であればCode Connection for Minecraftを使って同じようなことができそうですが、Java版で同様のことが実現できるはずです)
概要
- ScratchからMinecraftを操作できる拡張機能を作成した
- GitHub Pagesで公開した
How to use(使い方)
-
Minecraft Java版の購入
MinecraftにはJava版と統合版というものが存在しています。
今回はJava版が必要なので、以下のリンクの内容を参考にしてJava版をインストールしてください。
マインクラフトPC版のダウンロード方法!値段と購入方法を解説! -
Forge 1.12.2
をインストール
今回はScratchからMinecraftを操作するために、Modを使用します。
Modを動作させるための前提としてForgeというものをインストールする必要があるのでインストールします。
インストールの詳細な方法については以下のページを参考にしてください。
https://nj-clucker.com/games/minecraft-forge-mod-install/ -
Remote Controller Mod
をインストール
以下のページで公開しているRemote Controller Mod
をインストールします。
Remote Control Mod -
ダウンロードされた
.jar
ファイルをForgeをインストールした後に作成したゲームフォルダの下にあるmods
フォルダに置く(※Forgeインストール後に一度もMinecraftを起動していない場合はmods
フォルダが存在しないので、一度Minecraftを起動するかmods
フォルダを作成してください) -
インストール確認
(Forgeが有効になっているMinecraftを起動してMods
をクリック)
(Remote Controller
が表示されればOK)
-
Scratchにアクセスする
-
Minecraft
用の拡張機能を追加する
(左下のclick here!
と表示されている部分をクリック)
(最下部のMinecraft
用の拡張機能を選択する)
(下図のような表示になればOK)
-
あとは好きなようにブロックを追加して遊んでください
できること
-
Minecraftにおけるプレイヤーの現在位置を調べてScratch上に表示することができます。
※Scratch上に現在位置を表示するには、Scratch画面上の以下のチェックボックスにチェックを入れる必要があります。
-
※Scratch上に現在位置を表示するには、Scratch画面上の以下のチェックボックスにチェックを入れる必要があります。
※特定位置のブロックを調べたあと、以下のScratchブロックを使って調べたブロックに従って条件分岐させることができます。
-
サーバーで遊んでいる場合などに使えると思います。(すみませんテストしてません)
サーバーに接続する際には14711ポートを開放してください。
さいごに
基本的な動作はできるようになっているので、Scratchの制御構文と組み合わせるとかなりいろんなことができるんじゃないかなと思います。
追加で欲しい機能などがあればぜひコメントください!
リポジトリにissue立ててもらってもOKです!👌