【Minecraft BE】の ScriptingAPI開発講座(4)
今回からバージョンを1.11から1.12βに上げてやっていきます。
1.12から少し書き方が変わったりするのでご注意ください。
注意
ScriptingAPI は現段階でWindows10にしか対応していません。
Android,iOS,XboxOne,Switchでは開発できません。(AndroidはBlockLauncherという外部ツールを使えばできます)
開発環境
windows10 Minecraft ver 1.12.0.2β
1.11から何が変わったの?
まずは、チャットに出力する、
this.broadcastEvent("minecraft:display_chat_event", "hoge");
がありましたが、これ単体では使えません。ではどうするか、
let BroadcastEventData = this.createEventData("minecraft:display_chat_event");
BroadcastEventData.data.message = "I like hogehoge!";
this.broadcastEvent("minecraft:display_chat_event", BroadcastEventData);
2行増えましたね。
面倒くさいですが覚えなおしてくださいね( 'ω')
それでは新しいことをやっていきましょう!
##Scriptingからコマンドを実行する
なんとScriptingからコマンドが実行できちゃいます!
それではさっそくサンプルコードから
let ExecuteEventData = this.createEventData("minecraft:execute_command");
ExecuteEventData.data.command = "/me I like hogehoge!";
this.broadcastEvent("minecraft:execute_command", ExecuteEventData);
実はもう一つコマンドを実行する方法があります。
それがこちら
this.executeCommand("/me I like hogehoge!", (commandData) => this.commandCallback(commandData) );
はい、1行です。なんだよこっち使ったほうがいいじゃねぇか、そうです。
それと、なんと実行したコマンドのデータなどを取得できます!
とりあえずコード
const Server = server.registerSystem(0, 0);
//~~~省略~~~
Server.update = function () {
this.executeCommand("/me I like hogehoge!", (commandData) => this.commandCallback(commandData) );
};
Server.commandCallback = function (commandData) {
//コマンドのデバックなんかにつかえるぞ!
};
updateで回しちゃってますが…まあいいでしょう。
しかしこれにはデメリットがあります。
for文で回しているif文の中に入れると、正常に動作しなくなります。
これは原因不明です、ごめんなさい。
さぁて次回は何を作りましょうか( 'ω')