クマでも分かる!お手軽ボス作成コマンド講座!(前編)
※本記事は、「超まいくらひろば2018」にて開催された「Ta.K.Mi」での私の発表の大元の文章となります。発表とは表記揺れ等もあります。ご了承下さい。
動画はこちら
皆さんこんにちは!クマと申します。
今回はコマンド講座と銘打ち、発表を行わせて頂きます。
まず簡単に自己紹介をさせていただきます。
私の名前はクマ、Twitterアカウントはこちら(@Kuma_TachiRen)になります。
私のMinecraftの遊び方は、「コマンド機構制作」です。Twitterでは時々自身で作ったものの紹介動画を上げたりしています。
今回は、前編にて使用する基礎知識の解説、後編にてその知識を利用したボス基礎システムの解説を行います。
- はじめに (前編)
- 基礎知識解説 (前編)
- システム解説 ~HPを検知しよう~ (後編)
- おわりに (後編)
目次
1.はじめに
今回の発表の最終目標は、「コマンドで何かを作り、それを皆が遊んだりできるような形で公開してくれる人を増やすこと」です。
今回の発表では、ボスを作る上では欠かせない基礎システムの解説を行います。この機構をどう活かすかはすべてあなた次第です!
2.基礎知識解説
まず前編では、ボスの基礎システムを組むにあたって使用するコマンド知識の解説を行います。解説するものは以下の通りです。
- NBT
- セレクタ
- /scoreboard
- /execute
- コマンドブロック
1.NBT
NBTとは、「Named Bynari Tag」の略称で、一種のデータの保存形式です。
Minecraft内の様々なデータは、この形式で保存されています。
例えば、プレイヤーのインベントリや村人の交易内容、スポーンブロックから沸くMOBなど、非常に多くの情報はNBTで保存されています。
NBTは基本的に次のような形をしています。
<名前>:<値>
NBTには値の種類によって大きく3つの型に分けることができます。
- 数値型…整数型4種、小数型2種
- 文字列型…値を「”」で囲って表記
- 列挙型…NBTを列挙し、「{}」や「[]」でまとめる
今回使用するNBTは「Tags」と「Attributes」、そして「Health」です。
「Tags」は”tag”と呼ばれる、”同一エンティティに複数追加できる任意の文字列”を列挙型で保存しています。
「Attributes」はエンティティの基礎的な情報を同じく列挙型で保存しています。今回は最大体力を設定するために使用します。
「Health」はエンティティの体力を保存しており、型は数値型の中でも小数型で、floatと呼ばれる値の形を取ります。
Healthの値はプレイヤーで言うハート半分を1として考えます。
先程数値型は6種あると述べました。しかし、全て値は数値なので、型の見分けが付きません。どうすればよいのでしょう。
実は、数値型の値の後ろには型によって決まっている英字1字を付け足す約束になっています。
先程のHealthの場合、例えば「HPが20である」ことを「Health:20f」と表します。
それではNBTについてはこのくらいにして、次の説明に参ります。
2.セレクタ
セレクタは、コマンド内でプレイヤー等を指定する際に、指定の条件を満たすプレイヤーを一括で指定するために使われます。
基本的に次のような形をしています。
@<ターゲットセレクタ>[引数1,引数2,...]
ターゲットセレクタとは、このセレクタが指定する対象をまずざっくりと指定するためのものです。
ターゲットセレクタには次の5種類があります。今回は応用編にて@eを使用します。
名称 | 説明 |
@p | 最寄りのプレイヤーを指定します。 |
@a | 全てのプレイヤーを指定します。 |
@r | ランダムなプレイヤーを指定します。 |
@e | 全てのエンティティを指定します。 |
@s | コマンドの実行者を指定します。 |
次に引数です。引数では、ターゲットセレクタに更に条件を付け加えます。
今回は、「score_<score>(_min)」引数と、「tag」引数を使用します。
前者の「score_<score>(_min)」は、引数の値以下(以上)の指定したscoreの値を持つエンティティを指定します。「score」については後ほど解説します。
後者の「tag」は、NBTの方で紹介した「Tags」を持つエンティティを指定するための引数です。
それでは、続いて/scoreboardの説明です。
3./scoreboard
scoreboard(スコアボード)コマンドでは、様々な処理をするために用いられるコマンドです。
今回は/scoreboardの中でも、score(スコア)と呼ばれる数値に関する分野を使用します。
scoreとは、非常に簡潔に述べると「int型の変数」です。
scoreは「名前」、「型」、「表示名称」の情報を持ち、以下のコマンドで追加可能です。(表示名称は無くても良い)
/scoreboard objectives add <名前> <型> <表示名称>
そして、下のコマンドを使用することで、指定したプレイヤーの指定した名前のscoreの値を、指定した数値に設定することが出来ます。
/scoreboard players set <セレクタ(前述)> <scoreの名前> <値>
また、下のコマンドを使用することで、指定したプレイヤーの指定した名前のscoreの値を、指定した数値分増減させることも出来ます!
/scoreboard players add <セレクタ> <scoreの名前> <値> /scoreboard players remove <セレクタ> <scoreの名前> <値>
でも、このままではリアルタイムで数値をみる事が出来ませんよね?
そんな時には下のコマンドを実行することで、画面右側に指定したスコアの値を持つプレイヤーの一覧がリアルタイムで表示されるはずです。
/scoreboard objectives setdisplay sidebar <scoreの名前>
これでエンティティ毎に変数をもたせることが可能になりました。では続いて/executeについての説明を行います。
4./execute
execute(エグゼキュート)コマンドは、指定したエンティティにコマンドを実行させるためのコマンドです。
コマンドの中で唯一引数にコマンドを書きます。
/executeコマンドの基本形は次の形です。
/execute <セレクタ> <座標> <実行するコマンド>
今回は、「指定したエンティティが存在しているならコマンドを実行する」ために使うので、次のような形になります。
/execute <セレクタ> ~ ~ ~ <実行するコマンド>
では最後にコマンドブロックの解説を行います。
5.コマンドブロック
コマンドブロックは、簡単に言うとコマンドを実行するブロックです。
コマンドブロックにコマンドを入力後レッドストーン信号を送ることで、入力されたコマンドを実行する、という機能を持っています。
コマンドブロックには3種類あります。
- インパルスコマンドブロック
レッドストーン信号を受けた時に一度だけコマンドを実行する - チェーンコマンドブロック
レッドストーン信号を受けている間、自身の方向に向いているコマンドブロックがコマンドを実行した時に同時にコマンドを実行する - リピートコマンドブロック
レッドストーン信号を受けている間常時コマンドを実行する
また、「条件」と呼ばれるものが2種類あります。
- 無条件
通常はこれ - 条件付き
自身の後側のコマンドブロックがコマンドの実行に成功している場合のみコマンドを実行
以上で使用する基礎知識の解説は終了です。
時間の都合上ほとんど使用するものしか解説していませんので、興味を持たれた方は解説されていない事についてもご自身で調べてみて下さい。
それでは以上で、クマでも分かる!お手軽ボス作成コマンド講座!前編を終わります。ここまでご覧いただきありがとうございました。また、後編も是非ご覧ください。