LoginSignup
26
17

More than 1 year has passed since last update.

ScratchからJava版Minecraftを操作できる拡張機能作った

Last updated at Posted at 2021-03-31

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)')

ドキュメントはまだ作成していないので、実行可能なコマンドの詳細については以下のファイルを参照してください :bow:

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版について、以下の不具合がありました :bow:
- 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.51.12.2で以下のように別々で公開しました。
- 1.16.5https://takecx.github.io/scratch-gui/1-16-5/
- 1.12.2https://takecx.github.io/scratch-gui/1-12-2/1.12.2についてはもともとのURLでも引き続き公開しています)

はじめに

2020年度から小学校でプログラミング教育が必修化になり、私の子供もChromebookが配布されてプログラミング教育が始まるようです。
巷ではScratchとMinecraftを連携させたプログラミング塾のようなものが溢れているようですが、自分でも作れそうだったので作りました(我が子が喜んでくれれば満足です:joy:
Java版のマイクラ(3000円)さえあれば誰でも無料で使えますのでぜひ使ってみてください:blush:
(Windows10版であればCode Connection for Minecraftを使って同じようなことができそうですが、Java版で同様のことが実現できるはずです)

概要

  • ScratchからMinecraftを操作できる拡張機能を作成した
  • GitHub Pagesで公開した

How to use(使い方)

  1. Minecraft Java版の購入
    MinecraftにはJava版と統合版というものが存在しています。
    今回はJava版が必要なので、以下のリンクの内容を参考にしてJava版をインストールしてください。
    マインクラフトPC版のダウンロード方法!値段と購入方法を解説!
  2. Forge 1.12.2をインストール
    今回はScratchからMinecraftを操作するために、Modを使用します。
    Modを動作させるための前提としてForgeというものをインストールする必要があるのでインストールします。
    インストールの詳細な方法については以下のページを参考にしてください。
    https://nj-clucker.com/games/minecraft-forge-mod-install/
  3. Remote Controller Modをインストール
    以下のページで公開しているRemote Controller Modをインストールします。
    Remote Control Mod
    1. 下図のDownloadボタンをクリック image.png
    2. ダウンロードされた.jarファイルをForgeをインストールした後に作成したゲームフォルダの下にあるmodsフォルダに置く(※Forgeインストール後に一度もMinecraftを起動していない場合はmodsフォルダが存在しないので、一度Minecraftを起動するかmodsフォルダを作成してください)
    3. インストール確認
      (Forgeが有効になっているMinecraftを起動してModsをクリック) image.pngRemote Controllerが表示されればOK)
      image.png
  4. Scratchにアクセスする
    image.png
  5. Minecraft用の拡張機能を追加する

    (左下のclick here!と表示されている部分をクリック)
    add_extension.png
    (最下部のMinecraft用の拡張機能を選択する)

    choose_extension.png

    (下図のような表示になればOK)

    image.png

  6. あとは好きなようにブロックを追加して遊んでください:blush:

できること

  • チャット機能
    image.png

スクリーンショット 2021-03-29 10.41.45.png

  • ブロックを一つ置く(相対座標OK)
    image.png

(before)
2021-03-29_10.54.56.png

(after)
2021-03-29_10.55.30.png

※すべてのScratchブロックについて、座標を入力できる箇所には相対座標を入力することもできます。

image.png

2021-03-29_10.58.29.png

  • ブロックを複数置く(相対座標OK)
    image.png

(before)
2021-03-29_10.54.56.png

(after)
2021-03-29_11.04.26.png

  • 周辺をリセットする image.png

(before)
2021-03-30_22.47.38.png

(after)
2021-03-30_22.48.26.png

  • Mobを召喚する(相対座標OK)
    image.png

(before)
2021-03-29_10.54.56.png

(after)
2021-03-29_11.08.54.png

  • 現在位置を調べる
    image.png

Minecraftにおけるプレイヤーの現在位置を調べてScratch上に表示することができます。

(before)
image.png

(after)
image.png

※Scratch上に現在位置を表示するには、Scratch画面上の以下のチェックボックスにチェックを入れる必要があります。

image.png

  • テレポート(相対座標OK)

    image.png

  • 特定位置のブロックを調べる(相対座標OK)
    image.png

image.png

※Scratch上に現在位置を表示するには、Scratch画面上の以下のチェックボックスにチェックを入れる必要があります。
image.png

※特定位置のブロックを調べたあと、以下のScratchブロックを使って調べたブロックに従って条件分岐させることができます。

image.png

(石の上を通ったら雨を降らせる例)
image.png

  • 天気変更
    image.png

(before)
2021-03-30_22.48.26.png

(after)
2021-03-31_08.55.39.png

  • ゲームモード変更
    image.png

(before)
2021-03-30_22.48.26.png

(after)
2021-03-31_08.57.33.png

  • 難易度変更
    image.png

(before)
2021-03-30_22.48.26.png

(after)
2021-03-31_08.59.29.png

  • エンチャント付与
    image.png

(before)
2021-03-31_09.01.46.png

(after)
2021-03-31_09.02.56.png

  • パーティクル出現(相対座標OK)
    image.png

(before)
2021-03-30_22.48.26.png

(after)
2021-03-31_09.09.46.png

  • 接続先変更(IPアドレス指定)
    image.png

サーバーで遊んでいる場合などに使えると思います。(すみませんテストしてません:sweat_smile:
サーバーに接続する際には14711ポートを開放してください。

  • インベントリアイテム
    image.png

「E」キーを押した際に表示されるカテゴリ毎にアイテムを選択できるようにしました。

2021-03-31_09.20.44.png

さいごに

基本的な動作はできるようになっているので、Scratchの制御構文と組み合わせるとかなりいろんなことができるんじゃないかなと思います。
追加で欲しい機能などがあればぜひコメントください!
リポジトリにissue立ててもらってもOKです!👌

26
17
15

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
26
17