概要
中級程度コマンダーのワタシが、初学者向けに知っておいたほうが良さげなことをまとめるとともに、
中級程度コマンダーの認識の例としてぼんやり眺めていただければと思います。
JEコマンド用語解説
01.コマンド勢 / コマンダー
コマンド勢 / コマンダーとは、Minecraftのコマンド(Command)というシステムを扱う人全般のことを指す用語である。
しばしば、“広義のコマンド勢 / コマンダー”、“コマンド勢 / コマンダー(広義)” といった言葉が用いられるが、
これはコマンドを扱うというだけでなく、
データパック内のWorldgenやリソースパックのバニラシェーダーのような、直接的にコマンドを扱わない場合も便宜的にコマンド勢 / コマンダーに含めることを明示する場合である。
…また、コマンダー仕草として動作テスト用のコマンドブロックの上を飛び回る通称“コマブロアスレ”と呼ばれるものがある。
そんなことをする暇があったら作業をしましょう。
02.エンティティ
エンティティ(Entity)とは、
- ゾンビやヒツジといったサバイバルで目にする“モブ(Mob)”
- 防具立てや額縁、ボートといったクラフトで作る物
- システムで使うマーカーやディスプレイ
などのことである。
F3+Bでヒットボックスの表示を行うことで、
表示されないマーカーやマーカー化したアーマースタンド({Marker:true}) 以外のエンティティのヒットボックス(白枠)と視点方向(青矢印)等を確認することができる。
↓詳細は公式Wikiから↓
03.ブロックエンティティ / タイルエンティティ
ブロックエンティティ(Block Entity) / タイルエンティティ(TileEntity)とは、
- ブロックに紐づけられたデータのこと
または
- 一部のデータを持つブロック全般
を指す。
公式Wiki的には前者が正しいが、一般的な文脈では後者のことが多く、呼び方もブロックエンティティであることが多い。
雑に、data get blockでデータを取得できるブロックのこと。
チェスト等のコンテナ類はもちろん、旗や看板等もブロックエンティティ / タイルエンティティに含まれる。
↓詳細は公式Wikiから↓
04.座標系
MinecraftではXZ平面が水平方向、Y軸が高さとなっている。
四方位+上下に対応させると
- 西: -X
- 東: +X
- 下方: -Y
- 上方: +Y
- 北: -Z
- 南: +Z
となる。
北が+Z方向でないことには注意したい。
また、F3で見られるデバッグモードのレティクル等の配色は
- X: 赤色
- Y: 緑色
- Z: 青色
である。
1ブロック=座標における1単位であり、
座標における1単位を1mと表現することもある。
また、fillやsetblock等のコマンドで座標の入力を求められた際の記述順は、“X Y Z”の順であり
setblock X Y Z minecraft:iron_block
のようになる。
絶対座標とは、実際にワールドに存在する座標系で、原点(0, 0, 0) からの距離を表す。
相対座標とは、ある任意の位置を原点としたときの座標のことで、
コマンドで記述する際は ~ (チルダ)を用いて表記する。
座標軸自体は普段の座標系に従う。
ローカル座標とは、現在持つ位置・回転をもとにした座標系のことで、
コマンドで記述する際は ^ (キャレット)を用いて表記する。
また、ローカル座標を用いる際は他の座標系と併用することは出来ず、
setblock ^ ~ ^ minecraft:iron_block
のような記述は出来ない。
向きは、
- 右方: -X
- 左方: +X
- 下方: -Y
- 上方: +Y
- 背面: -Z
- 正面: +Z
である。
executeのサブコマンドであるat,rotated、facing等で回転軸に干渉することができる。
↓詳細は公式Wikiから↓
05.実行者
実行者とは、コマンドの実行元のことであり
executeのサブコマンドであるasやon、summon等で干渉することができる。
後述する実行座標とは異なり、実行する場所は変わらない。
また、コマンドブロックやデータパックから実行するとServerが実行者となる。
↓詳細は公式Wikiから↓
06.実行座標
実行座標とは、コマンドが実際に実行される位置のことであり
executeのサブコマンドであるatやpositioned、align等で干渉することができる。
前述した実行者とは違い、実行者は変わらない。
また、データパックから実行するとOverworld(0, 0, 0)が実行座標となる。
↓詳細は公式Wikiから↓
07.セレクター
セレクターとは、実行者を指定する際などに使う @ (アットマーク) から始まる要素のことであり、
-
@a: すべてのプレイヤー -
@p: 最も近くのプレイヤー -
@e: すべてのエンティティ -
@n: 最も近くのプレイヤー -
@s: 自己
の5種類である。
また引数を設定することができ、
@e[tag=Test,distance=..10]
のように記述する。
代表的な引数として、
-
distance: 実行座標からの距離で指定する -
dx,dy,dz: 実行座標から指定した立方体内にヒットボックスが存在するエンティティを指定する -
tag: 特定のタグを持つエンティティを指定する -
sort: 実行するエンティティの順番を指定する (nearest: 近い順,furthest: 遠い順,random: ランダム,arbitrary: スポーン順(システム処理順)) -
limit: 実行するエンティティの数を制限する -
type: エンティティの種類で指定する #から始まるエンティティタイプタグも使うことができる
が挙げられる。
↓詳細は公式Wikiから↓
08.NBT
NBT(Named Binary Tag)とは、Minecraftで使用されているデータの保存形式で、intやfloat、doubleといったものに代表される、13種類の型のタグが組み合わさった樹状構造で構成される。
また、そのバイナリデータをユーザーに読みやすくしたものを、SNBT(Stringified NBT)という。
一般には単にNBTと呼ばれ、エンティティなどの持つデータについて言及する際に呼ぶことが多い。
↓詳細は公式Wikiから↓
09.コンポーネント
日常的に扱うコンポーネントとしては以下の2つが挙げられる。
データコンポーネント
アイテム・エンティティ・ブロックエンティティで使用される、追加データの保存・アクセスの仕組みのことで、
特にアイテムに対してのデータコンポーネント、アイテムコンポーネントに対しての呼称が多く使われる。
独自のデータを持たせたい場合は以下の階層に変数名とともに格納することができる。
-
item:components."minecraft:custom_data" -
entity:data -
block:components."minecraft:custom_data"
また、操作の例を以下に示す。
# item
data modify entity @s Inventory[{Slot:0b}].components."minecraft:custom_data".A set value a
# entity
data modify entity @s data.B set value b
# block
data modify block ~ ~ ~ components."minecraft:custom_data".C set value c
テキストコンポーネント
テキストコンポーネントとは高機能なリッチテキストの記述形式である。
元々はJSONとして記述していたのでRawJsonテキストやJsonテキストと呼ばれることもある。tellrawはその名残であるといえるだろう。
書式を設定するのはもちろんのこと、クリックイベントやホバーイベントを持たせることもできる。
また、スコアやデータを表示したりすることもでき、デバッグに非常に有用であるといえる。
さらに、文字をUnicode指定で表示できる他、リソースパックでフォントを追加することで画像を文字として表示することもできる。
↓詳細は公式Wikiから↓
10.フェイクプレイヤー
ダミーのプレイヤー、見せかけのプレイヤーとも言われるこれは、
スコアボードにおいて自由な変数として扱うための架空のスコアホルダーのことである。
scoreboard players set $Speed object 10
scoreboard players set $Acceleration object 3
例えば上記のようにminecraft/tags/function/load.jsonで指定する.mcfunctionファイル内で定数を定義するのに使用することができる。
また、スコア計算の際の仮の入れ物のようなものとしても活用することができる。
フェイクプレイヤーの名前の特殊な接頭記号として # (ハッシュ)があり、
#をつけることによってサイドバーに表示されなくなる。
また、フェイクプレイヤーに $ (ドルマーク)をつける慣習があるが、これは
- プレイヤーネームに
$が使えず、差別化が可能であること - 複数のプログラミング言語の変数の接頭記号であること
に起因する。
11.Temp / Tmp ...
表記方法は様々あれど、これらはTemporaryのこと。
意味としては以下のようである。
temporary: 一時の、はかない、仮の、間に合わせの
スコアなどの変数名・タグの名称などとして、一度の処理で完結する場合、または処理の量が軽微な場合に用いることがある。
以下に、スコアで計算したものをストレージに格納したい際などの仮の入れ物として使用する際の例を示す。
# Tmpに移し替える - A
scoreboard players operation $Tmp object = $Input object
# ストレージへ格納
execute store result storage _:_ A double 1.0 run \
scoreboard players operation $Tmp object += $A object
# Tmpに移し替える - B
scoreboard players operation $Tmp object = $Input object
#
execute store result storage _:_ B double 1.0 run \
scoreboard players operation $Tmp object -= $B object
12.execute幾何学
execute幾何学とは、executeのサブコマンドを複数用いて図形的な処理を行うことである。
できることの例として、
- 中点の算出
- 鏡像変換
- 並行移動
- 垂線
- 交点
- 内分・外分点
- 角の二等分線
- 外積
- 回転の向きを四方位に揃える
…
などなどご自身の数学力・図形力と相談していただければかなり自由に操作することができる。
コマンド技術の中でもかなり高度で、しかしながら取り入れることができればもう一歩進んだ処理ができる用になるだろう。
↓詳細は以下の記事などから↓
あとがき
いかがでしたでしょうか。
初学者向け~なんて豪語しましたが(そこまで豪語でもないかな?)、
私自身つよつよかと言われるとそんなことはない身なので、深くは言及せず本当にただの基礎知識なモノを集めてみました。
まぁ自分で調べられないと創作なんて出来ませんからね!(と開き直ってみる)
といいつつも間違った理解や変な誤字脱がないとも限らないので見つけた皆様に置かれましてはやさし~くコソッと教えてくださると幸いです。m^ _ ^m
それでは良きコマンドライフを。^👁️^ノシ