ダウンロードはこちら
https://lemon-slime.com/resources/scriptAPI_template.zip
概要
突然ですが、皆さんは「スクリプトAPI」をご存じでしょうか?
「スクリプトAPI」とは、マインクラフトの統合版においてプログラミング言語(Javascript)を用いてゲームシステムをカスタマイズできる機能のこと。Javascriptの知識さえあれば、マインクラフトのシステムをある程度いじることができるんです。普通のゲームはそんなことできません。マインクラフトのこういうところが私は好きです。以下は「スクリプトAPI」の一例です。
しかし、このスクリプトAPIの使用にはある程度の事前準備が必要です。この点で、初心者には一定のハードルがあり、この事前準備の段階で躓いてしまう人も存在するものとみられます。これは非常に勿体ない。
本記事では、「スクリプトAPI」のテンプレートを配布することで、この事前準備の段階を飛ばし、すぐにコードを書き始められるようにすることを目的としています。ダウンロードは上のリンクをクリックすることで可能です。ご自由にお使いください。
使い方
上記のzipファイルをダウンロードし、com.mojangフォルダ内のdevelopment_behavior_packs内に展開してください。フォルダcom.mojangは
C:\Users\(ユーザー名)\AppData\Local\Packages\Microsoft.MinecraftUWP_8wekyb3d8bbwe\LocalState\games\com.mojang
に存在します。エクスプローラー上で、「AppData」というファイルは隠しファイルなので、これを選択するためには、エクスプローラーの「表示」設定から隠しファイルのチェックをオンにしてください。または、「ファイル名を指定して実行」というアプリを起動し、
「%LocalAppData%\Packages\Microsoft.MinecraftUWP_8wekyb3d8bbwe\LocalState\games\com.mojang」
と入力することでも開けます。
展開が完了したら、マインクラフトを起動してみてください。ワールド起動時に、ビヘイビアパックの一覧を確認してみてください。その一つに「ScriptAPIのテンプレート」があれば成功です。
Youtube動画もあります
本記事の内容について詳細に解説したYoutube動画を作成しました。こちらも併せてご覧いただくと、APIスクリプトに関してより理解が深まります。
動画内でいくつかスクリプトが登場しますが、以下にその内容を記載しておりますので、コピー&ペーストしてご利用ください。
スクリプトを記述
さて、基本的な準備は整いました。あとは、オリジナルのコードを書いていくだけです。
先ほどダウンロードしたScriptAPI_templateフォルダ内のscriptsフォルダ内にある、main.jsを開きましょう。メモ帳などのテキストエディタであれば大丈夫です(VSCodeなどの専門のテキストエディタがあるならそれを使うことをお勧めします)。
すると、おそらくこのように表示されることでしょう。
import * as server from '@minecraft/server';
//ここにスクリプトを記述
最初の1行目は、「minecraft/serverモジュールを使用する」ことを表しています。これによってマインクラフトの世界に干渉できるようになるので、ScriptAPIの記述においてこれは必須です。
「ここにスクリプトを記述」とあるところにスクリプトを実際に書いていきます(これはコメントなので消しても残してもどちらでも良いです)。実際に、スクリプトを書いてみましょうか。試しに以下をコピー&ペーストしてみてください。
server.system.runInterval(ev => {
server.world.sendMessage("Hello!");
})
スクリプト全体は以下のようになります。
これを保存し、マインクラフトを起動しましょう。そして、「ScriptAPIのテンプレート」アドオンを有効化し、ワールドを作成します。すると、毎ティック「Hello!」と表示されるようになったのが分かるでしょうか?これが「スクリプトAPI」の効果です。
このようにして「スクリプトAPI」は動作します。
同様にして、「アイテムを使ったらコマンドが発動するスクリプト」を作ってみましょう。テンプレートはこんな感じです。
server.world.beforeEvents.itemUse.subscribe(ev => {
if (ev.itemStack.typeId == "minecraft:stick"){
ev.source.runCommandAsync("give @a diamond 1");
}
})
上記は、棒を使ったら「give @a diamond 1」というコマンドが発動する例です(動画内で説明済み)。これをお好みにアレンジして、オリジナルのスクリプトを作ってみてください。
ちなみに、「使用可能なアイテム」の制作についてはこちらの記事がとても詳しいです。この記事では、任意のアイテムを使用可能にする方法に加えて、クールダウンの実装方法やアイテム使用時の条件を設定する方法、1つのアイテムに複数の機能を搭載する方法などを扱います。
スクリプトの書き方
前述したように、スクリプトAPIはJavascriptを基本としています。従って、Javascriptを理解しているとスクリプトの記述が容易になります。一応、Javascriptの習熟にあたっての良書を紹介します。
また、スクリプトAPIにおける教科書的存在が公式ドキュメントです。こちらは非常に参考になるので、目を通しておいて損はないでしょう(言語が英語しかない点に注意)。
また、ScriptAPIにおけるよく使うフレーズについては以下でまとめています。これらのフレーズを組み合わせることで効率的にスクリプトを書くことができます。
カスタマイズ
本ビヘイビアパックはあくまでテンプレートですので、アドオンの説明文や名前に「テンプレート」である旨が記述されてしまいます。これは些か実用には不向きですね。
(説明動画より抜粋)
これを回避するため、本スクリプトを公開する場合にはmanifest.jsonの改変が必要になるでしょう。ダウンロードしたzipファイルの中にmanifest.jsonというファイルが含まれていると思います。これは、このアドオンの基本的な要項をjson形式で記述したファイルで、中身はこんな感じです。
このheaderにあるnameとdescriptionを変更することでアドオンの名称と説明文を変更できますので、スクリプトを公開する場合には是非参考にしてみてください。また、uuid(アドオン固有の一意の文字列)も変更することをお勧めします。他のアドオンと重複すると面倒なことになってしまいますからね。uuidは以下の外部サイトから自動生成できます。
また、パックのアイコンはpack_icon.pngを上書きすることで変更できます。
おしまい
このように、本記事ではスクリプトAPIのテンプレートを配布しながら、スクリプトAPIに関する基本情報とテンプレートの使い方について解説しました。スクリプトAPIを使いこなせるようになると、マインクラフトにおける自由度が格段に上がりますので、是非皆さんも触ってみてください!
ScriptAPIに関する質問(本テンプレートについても可)は、本記事かYoutube動画のコメント欄にて受け付けております。また、本記事をSNSリンクボタン等を介して拡散していただくと、執筆者のモチベーションが上がりますので、是非お願いします。
さらなる深みへ・・・
APIScriptの旅はこれで終わりません。例えば、スクリプトを記述することでオリジナルのUIを表示することができます。以下はその一例です。画像をクリックすることで解説記事に飛びます。
また、拡張性・自由度を上げるために、一からAPIScriptの環境を構築することもできます。詳細についてはこちらが詳しいです。