Minecraft Java版 と Raspberry Pi に MCreator Link を入れて、 Minecraft と Raspberry Pi で通信できるようにする方法です。
(最後におまけで、Minecraftの操作でkintoneにPOSTできるようなコードもあるよ。)
MCreator Link の環境構築の手順としてはコチラに書いてある通りに進めます。
Minecraft (Java版) 側の設定
PC側の設定からやっていきましょう👀
MCreator Link をダウンロードする
↓コチラからお好みのMinecraft Java版のバージョンに合った MCreator Linkをダウンロードします。
Forgeをインストールする
↓コチラの手順通りにインストールしました。
MCreator Link(MCreator Link 1.3 [1.16.5].jar) を mods フォルダに移動する
↓ダウンロードしたMCreator Link 1.3 [1.16.5].jar
をコチラを参考に移動させました。
Raspberry Pi の設定
MCreator Link のインストール
Java8がインストールされていない場合は、こちらでのコマンドでJava8をインストールします。
$ sudo apt-get install openjdk-8-jdk
Rassberry Pi に ssh接続して下記のコマンドを実行します。
$ curl -sL https://mcreator.net/linkpi | sudo bash
しばらく待つとMCreator Linkがインストールされます。
インストールが終わったら、Ctrl + Cなどを押してbashに戻ります。
Python
RPi.GPIOパッケージをインストールします。
$sudo pip install rpi.gpio
コードを書きます。
1秒ごとに Raspberry Pi の18番ピン(Minecraftからは1番ピンのことを指しているみたい)を読み取って
1だったら0に書き換えるだけのプログラムです。test.pyというファイル名で保存しておきます。
import RPi.GPIO as GPIO
import time
GPIO.setmode(GPIO.BCM)
GPIO.setup(18, GPIO.OUT)
for i in range(0, 60):
print GPIO.input(18)
if GPIO.input(18) == 1:
GPIO.output(18, 0)
time.sleep(1)
GPIO.cleanup()
Minecraft の操作
先程のMod導入済みの起動構成で立ち上げ、
タイトル画面が表示されたら「L」キーを押します。
するとMCreator Link のdevice設定画面が表示されます
IP Connect ボタンをクリックします。
Raspberry Pi のIPアドレスを入力して、Connect ボタンをクリックします
完了ボタンをクリックします
コマンドを入力
Minecraft 側と Raspberry Pi 側でコマンドを入力します。
Minecraftの準備
接続デバイスの確認
/link device
pinmode を output にします。
/link pinmode output
ここまでできたら、Raspberry Pi で先程のPythonのコードを実行します。
python test.py
Pythonが動いている間に
Minecraft側のコマンドで1ピンに1を書き込みます
/link digitalwrite 1 1
Minecraft側で1を立てたらRaspberry Pi側で0に戻しているのが分かるかと思います。
kintone に応用してみる
さきほどのコードですが、下記のように書き換えると
Minecraftで1ピンに1を立てたらkintoneにPOSTするという仕組みが作れたので紹介しておきます。
kintoneとRaspberry Piの連携については↓まずはこちらご参照ください。
コマンドブロックやレッドストーン回路を組み合わせて
出退勤システムなどが作れそうです。(はたして需要はあるのか)
import RPi.GPIO as GPIO
import time
import requests
import json
GPIO.setmode(GPIO.BCM)
GPIO.setup(18, GPIO.OUT)
for i in range(0, 60):
print GPIO.input(18)
if GPIO.input(18) == 1:
GPIO.output(18, 0)
url = 'https://【kintoneのサブドメイン】.cybozu.com/k/v1/record.json'
payload = {'app':'【アプリID】', 'record':{'test':{'value':'from_RaspberryPi'}}}
headers = {'content-type': 'application/json', 'X-Cybozu-API-Token':'【APIトークン】'}
r = requests.post(url, data=json.dumps(payload), headers=headers)
print r.text
time.sleep(1)
GPIO.cleanup()
参考リンク集