凡人ゲーマーのマイクラ総合ブログ

軽い気持ちで始めたマイクラ総合ブログ‼︎ジャンルは多岐に渡っています。稀に別ゲーの記事も出すかも?気に入ったらスター、購読宜しくです。

MENU

凡人ゲーマーのコマンド教室その2 ターゲットセレクターについて解説!使いこなせば超便利!セレクターを攻略して高度な機構を作ろう!

追記:やっぱり全部に例文・構文あった方がいいなと思ったので、ぼちぼち更新していくつもりだったけど勢いで全部終わりそうです。自分が便利だと思う使用例も書けたらと思っています。

 

こんにちは!凡人ゲーマーです。なんかありがちなタイトルで始まりました。

 

…今回の解説は、みんな大好き?セレクター引数でございます!

コマンドを知る人なら、@aだとか@sぐらいは知っていると思いますが、実は、そこにをつけることで、より高度な設定を行える事は意外とご存知無いかも知れません。

今回は、配布マップを作るなら知っておきたい、ターゲットセレクターと引き数についての解説でございます!

…とはいっても、他でもいくつか解説記事は出ておりますんで、凡人目線の解説をプラスアルファしてお届けしたいと思います。自分ながら、凡人目線ってなんだ…………

 

目次

 

 

セレクター引数って何?

ターゲットセレクターだとかセレクター引数だとか言ったりしますが、簡単にいえば、コマンドを実行する対象を選ぶ機能です。/tpなどの一部のコマンドでは省略もできますが、これを知らないと使えないコマンドもあったりします。

セレクターの大まかな種類ですが、@a,@s,@p,@r,@e,(@c,@v)の七種類と、プレイヤーの名前を代わりに入力する事で、これらのセレクターの代替になります。@c,@vはエデュケーションエディション限定なので、書く意味はあまりなかったかも知れませんが、一応書いておきました。

 

@a

例: /tp @a @s 全てのプレイヤーを自分に集める(鯖で全員集合するときに便利かも)

@aは、全てのプレイヤーを対象にします。このセレクターによって、プレイヤー以外のエンティティを指定する事は出来ません。ワールド内の全員に何かをしたいときに使えます。

@s

例: /give @s command_block 自分にコマンドブロックを与える

応用効かせたバージョン

execute @e[c=1] ~~~ effect @s wither 9999999 255 近くのエンティティにウィザー(即死レベル)

@sは、コマンドを実行したエンティティそのものが対象になるものです。プレイヤー以外も対象になるという事はわりと最近知った。

また、executeを使ってエンティティに代わりにコマンドを撃たせた場合は、executeで指定したエンティティが対象になります。こちらも最近知った。

注意点は、コマンドブロックでの実行。コマンドブロックはもちろんエンティティじゃないので、このセレクターではエラーになります。

@p

例:/tellraw @p {“rawtext”:[“text”:{“読者登録してね!”}]} 近くのやつに宣伝

豆知識? tellrawはBEでは意味ないと見せかけておいて、tellと違ってささやかれましたが表示されないので便利。しかし、アドオンによってtellのささやかれましたを消せるらしいです。

@pは、最も近くのプレイヤーが対象になります。ボタンや感圧版を押したプレイヤーを対象にできるので、一番便利なセレクターです。プレイヤー以外の指定は不可能だそう。

また、ソロプレイヤー向けの配布ワールドなら、これで間に合います。

@r

例:/kill @r ロシアンルーレット

/scoreboard players add @r money 1000000000 ジャックポット

@rは、ランダムなプレイヤーを対象にします。最近プレイヤー以外も対象に出来るという記事を見たのですが、未検証。

使いどころはそこまでありませんが、ミニゲームでランダムな位置にテレポートさせたいときなどに便利です。便利です。

@e

例:/kill @e ワンクリックで簡単お掃除( ◠‿◠ )

/testfor @e[type=zombie] ゾンビが存在するかどうかテスト

@eは、全てのエンティティを対象にします。ワールドを軽量化したい時は、これを二回打つと綺麗に軽くなるけど、代わりにログが凄いことになるのでチャットが重くなります。

プレイヤー以外を対象にするときにはかなり便利です。typeやname指定を使う事で、結構色々出来る。

@c,@v

@cは自身のエージェントを対象にし、@vは全てのエージェントを対象にする。使ったことがないので詳細不明ですが、@cは@sのエージェント版、@vは@aのエージェント版のようなものだと解釈しております。

 

高度なセレクターの設定

セレクターは、@◯のすぐ後ろにをつけることで、より細かい設定をすることができます。

記入例:/tp @e[type=pig] ~~-500~ 全ての豚を奈落(-500下)にテレポートさせる

/scoreboard players add @a[r=10,tag=凡人ゲーマー] 読者数 99999

実行地点から半径10m以内かつ、tag”凡人ゲーマー”が付いている全てのプレイヤーのスコア”読者数”を99999増やす

 

ここでは、ver1.14現在に実装されているセレクター引数を全て紹介。自信はないのでこれが抜けてるよ!とかあったら教えてください。

また、m=やc=など一部のセレクター引数はJE1.13以降に名前が変更となっているので注意が必要です。

 

座標指定

座標関係で指定するもの。特定のフィールドだけ対象にしたい時に便利です。

 

x=

x=<数値(多分~と^利用可能)>

x=はコマンドの実行地点のうち、x軸の値を設定できます。xyz全て指定することでやっとオリジナルの実行地点になります。

y=

y=<数値>

y=はコマンドの実行地点のうち、y軸の値を設定できます。

z=

z=<数値>

z=はコマンドの実行地点のうち、z軸の値を設定できます。

dx=

dx=<数値(相対座標のみで、記号はいらない)>

dx=はコマンドの実行地点からx軸をいくら離した場所までが範囲かを指定できます。一番の注意点は、絶対座標ではなく相対座標(実行地点から◯ブロック先までの◯の数字を入れると考えればOK)しか使えないという事。

チルダ~は無しで大丈夫です。マイナスの方向に持っていきたい時は普通に-書けばいけます。

xyzとdxdydzを全て使ってやっとセレクターの対象範囲を全て決められます。大変なので何度か登場する場合はメモアプリにでも書いておいて、コピペして使うのがオススメ。

dy=

dy=<相対座標>

dy=はコマンドの実行地点からy軸をいくら離した場所までが範囲かを指定できます。

dz=

dz=<相対座標>

dz=はコマンドの実行地点からz軸をいくら離した場所までが範囲かを指定できます。

 

視点での指定

どっちを向いているかで指定できます。使いようによっちゃ、感圧版のいらない自動ドアなんかが作れそう。

視点においてのx軸は、真上を向いた時が-90,真下を向いた時が90で、下を向くほど値は高くなります。

視点においてのy軸は、北を向いた時が-180で、右回り(時計回り)の方向に視点を動かせば値は増加していき、最後、-180に戻ってきます。

 

rx=

rx=<数値>

rx=は視点においてのx軸(簡単にいえば縦)のどこを向いているかで指定できます。rxで設定した値より小さい値であれば、条件にあったことになります。なぜか縦がxで横がy。

ry=

ry=<数値>

ry=は視点においてのy軸(簡単にいえば横)のどこを向いているかで指定できます。ryで設定した値より小さい値であれば、条件にあったことになります。簡単に考えるとするなら、rx=が緯線で、ry=が経線と考えてみたら考えやすいのでは?

rxm=

rxm=<数値>

rxm=は、視点においてのx軸(縦)のどこを向いているかで指定できます。rxmで指定した値より大きい値であれば、条件にあったことになります。rx,ryとrxm,rymを組み合わせる事で、やっとピンポイントでの指定に成功したことになります。

rym=

rym=<数値>

rym=は、視点においてのy軸(横)のどこを向いているかで指定できます。rymで指定した値より大きい値であれば、条件にあったことになります。

 

半径での指定

コマンドの実行地点から半径何ブロックまでかで指定できます。正直球って扱いづらいので、意外と出番がありません。ただ、うまく使えばxyzとdxdydzを使わなくとも同じ範囲を指定できます!

 

r=

r=<数値(半径)>

r=はコマンドの実行地点から半径何ブロックまでを範囲にするか決められます。

rm=

rm=<数値(半径)>

rm=はコマンドの実行地点から半径何ブロックまでを範囲から除外するかを決められます。

 

ステータスでの指定

ステータスでの指定の全般をここにつっこみました。エンティティがどういう状態であるか、どういう情報かという感じで指定するものが多いです。

 

type=

type=<EntityID>

例:/replaceitem entitiy @e[type=hask] slot.weapon.mainhand 0 iron_sword ハスクに鉄の剣を装備させる

type=はそのエンティティの種類で指定できます。=の後すぐに!をつけることで打ち消しの意味(指定したエンティティを対象から除外する意味)になります。また、!をつけないバージョンは一つのコマンドで一回しか使えないので注意。

とはいえ、普通にクリーパーとかゾンビとか書いてもエラーになります。それぞれidが振られているので、確認してみましょう。いつかこちらでも記事にするかも。

NBTタグを使えないとエンティティidまでしか指定することはできないので、アイテムを対象にしても、アイテムの種類までは指定できません。JE羨ましか。

name=

name=<指定したいエンティティの名前>

例:/effect @e[name=BOSS,type=evocation] health_boost 9999999 4 “BOSS”という名前のエヴォーカーに体力増強レベルⅤを与える

/execute @e[name=下3x3air] ~-1~-1~-1 fill ~~~ ~1~~1 air 名前が”下3x3air”の床下3x3をくり抜く(実際に配布マップづくりで使っているコマンドの一部です)

私が知るセレクター引数の中で最も便利なもの。name=はエンティティの名前で指定します。type=と同じくイコールの前に!を使えばそれ以外ということになります。日本語可。ケッピーさんから教えて頂いたのですが、JEは日本語無理だそうです。多分こちらも!付けないバージョンは一度しか使えなかったと思います。

エンティティの名前で指定できるので、落っこちているアイテムの名前だとか、キャラクターとして名前をつけておけばそのキャラクターのみを対象にすることもできます。

m=

m=<0,1,2,s,c,aのいずれか(だと思う)>

m=はプレイヤーのゲームモードが何かで指定できます。tag等を併用する事で荒らし対策に使えます。

l=

l=<数値(レベル)>

例:/msg @p[l=10] §c今のレベルでは進むのは危険だ。 適性レベルに満たない者を門前払い

l=はプレイヤーのレベルがいくつかで指定できます。lで指定した値よりレベルが低いと条件にあったことになります。レベルがそれより低いとっていうのは正直そこまで出番がない。

lm=

lm=<数値(レベル)>

例:/give @a[lm=30] diamond 64 レベルが30以上の常連客にダイヤをばら撒き(サバイバル鯖だという設定)

lm=はプレイヤーのレベルがいくつかで指定できます。lmで指定した値よりレベルが高いと条件にあったことになります。これを使えば、スコアボードを使わなくともスコアボードを使わなくともRPG的なレベルシステムは作れます。

scores=

scores={<スコア名>=[..]<数値>[..][もう一方のスコア名]}

scores=は、スコアの値で指定できます。複雑だけど、これがわかれば便利なはず。

scores={スコア名=値}と書きます。いくつか例をあげます(っていうか全部例文用意した方が絶対いいな)。

 

scores={subscribers=500} スコア”subscribers”の値が500で対象

scores={お小遣い=..1200} スコア”お小遣い”の値が1200以下で対象(-値も含める)

scores={イライラ度=50..} スコア”イライラ度”の値が50以上で対象

scores={好感度=30..60}スコア”好感度”の値が30以上60以下で対象

 

ご覧の例のように、scores={スコア名=◯◯◯}の◯の部分は、数字の前にピリオドをつけると色々できます。

数字の前にピリオドを二つ付けるとその数字以下のスコアで対象に、数字の後ろにピリオドを二つ付けるとその数字以上のスコアで対象に、数字Aと数字Bの間にピリオドを付けると数字A以上数字B以下が対象になる、といった感じです。難しい場合は、実際挑戦してみればどういうことだかわかると思います。説明が難しい(¬_¬)

 

tag=

tag=<tag名>

例:/give @a[tag=murder] diamond_sword マーダー(マーダーミステリーの鬼)に剣を支給

tag=は、そのエンティティについているタグの種類で指定できます。タグは結構最近のアップデートで追加された奴ですね。結構便利です。暫定的なチーム分けも出来るのですが、teamコマンドがないとチーム間で殴れないようにするとかは出来ません。アプデが待ち遠しい。

 

エンティティの数での指定

エンティティの数で指定します。現時点では、c=しか存在しません。JEだと1.13アプデでlimitとsortに分裂していて、より便利になっているみたいです。

 

c=

c=<数値(エンティティの数)>

例:/effect @e[c=5,type=cow] slowness 10 255 付近五体までの牛を十秒間動けなくする

c=はエンティティの数で指定できます。コマンドの実行地点から近い順に選ばれるので、c=1にすれば@pのエンティティバージョンを作成できます。また、c=に-をつければ、遠い順に選ばれます。

 

 

…今回は、セレクター引数について簡単に説明しました。これでもわからない!という方は、実際にやってみると意外と分かったりするかもしれません。セレクター引数便利なのでぜひ使ってみてください!

では、今回はこの辺で。さようなら(^^)/~~~