ユキミ大福のマイクラBE生活

Minecraft統合版で遊んだりゲーム作ったりするブログ

コマンド解説-ターゲットセレクター編-

  投稿日:2020/12/26

最終更新日:2021/07/17

 

どうも、ユキミ大福です。

今回はMinecraft統合版のコマンドでよく用いられるターゲットセレクターについて、解説をしていきます。

ここで解説するコマンド等は、解説する注意事項等をよく読み、個人でより詳しく調べた上で、個人の責任において使用して下さい。コマンド等の使用によって如何なる損害が発生しても、筆者であり当ブログの管理者でもあるわたくしユキミ大福は一切の責任を負いかねますので、ご了承下さい。

 

ちょっとだけ振り返り

以前の記事ではターゲットセレクタの種類について軽く触れました。

まずは『ターゲットセレクター』とは何なのかから振り返りつつ、詳しく解説していきましょう。

 

ターゲットセレクターとは?

ターゲットセレクタとは、コマンドの対象となるマイクラ上のプレイヤーやモブ、エンティティを、その名前を書かずに指定することができるものです。

もう少し簡単に説明しますと、コマンドの対象プレイヤー(例としてわたくしユキミ大福)を指定する時に、『ユキミ大福』と名前で指定するのではなく、『このブログを書いているアイツ』と代名詞的に指定するのがターゲットセレクターだと思ってください。

 

ターゲットセレクターを用いることができるコマンドは、ターゲットセレクターの代わりに対象のプレイヤー名(ゲーマータグまたはSwitchでのニックネーム)を、以下の様に直接打ち込むこともできます

ちなみに、Switch版プレイヤーを名前で指定する際に、ゲーマータグとSwitchでのニックネームのどちらで指定すればいいのかわからない場合、ポーズ画面で確認すると良いでしょう。

f:id:YukimiD1999:20201204151225p:plain

このワールドでは YD.Polaris(Switch版のわたくし)は

Switchのニックネームで表示されるが…

f:id:YukimiD1999:20201204151442p:plain

このワールドでは YD.Polaris

ゲーマータグ(PorarisA1200)の方で表示されている

 

ターゲットセレクターを理解しやすくするために、以下の例を挙げてみます。

以下の例で使用している「 /tp ( /teleport ) 」は、指定したエンティティを指定したエンティティの場所または座標にワープさせるコマンドです。

 

/tp YukimiD1999 0 100 0

 

または

 

/tp "ユキミだいふく" 0 100 0

 

上の様に記述すると、わたくしユキミ大福(YukimiD1999)を座標( 0, 100, 0 )にワープさせるコマンドになります(下の例はSwitch版の場合)。

ちなみに、プレイヤー名に日本語が含まれている場合アイテム・ブロック・エンティティIDと被る単語が含まれている場合「 " (ダブルクォーテーション)で囲ってあげればOKです。

 

しかしこのままではコマンドを記述する度に、プレイヤー名を一々記述しなければなりません。対象プレイヤーが変わったりしたら面倒ですよね。

そこで登場するのがこの『ターゲットセレクター』というわけです。

ターゲットセレクターには以下の5種類が存在します。

 

  1. @p
    基準座標から最も近いプレイヤー1人が対象
  2. @r
    ランダムなプレイヤー1人が対象
  3. @a
    死亡中のプレイヤーも含め、プレイヤー全員が対象
  4. @e
    プレイヤーも含め、全てのエンティティが対象
  5. @s
    死亡中のプレイヤーも含め、コマンドを実行したエンティティ自身が対象 

 

そして、これらのターゲットセレクターには『引数(ひきすう)を設定することができ、より細かく対象を選択できることをほのめかしたところで以前の記事は終わっていました。

ここからが、今日の本題である『引数』のお話です。

 

 引数とは?

ターゲットセレクターで指定する対象やその基準を編集する機能です。今までの記事でもちょいちょい登場していましたが、ここでその種類の全てをご紹介します。

 

  1. 『 x 』『 y 』『 z 』
    座標編でも登場しましたが、ここでもう一度解説します。

    この引数は基準座標をそのXYZ座標にするというものです。数値はint型で指定します。
    XYZ全てを記述する必要はなく、欠けているXYZはそのコマンドが参照する基準座標のXYZと同じになります

    例)下記コマンドは( 20, 40, 60 )に居るプレイヤーが実行したものとします

    /tp @p[x=10] 100 60 100
    基準座標:( 10, 40, 60 )

    /tp @p[y=100,z=-30] 100 60 100
    基準座標:( 20, 100, -30 )

    /tp @p[x=-60,y=50,z=-90] 100 60 100
    基準座標:( -60, 50, -90 )

  2. 『 dx 』『 dy 』『 dz 』
    この引数は基準座標を起点としてそこから距離を指定し、その直方体範囲を対象にするというものです。数値はint型で指定します。
    『 dx 』はX軸、『 dy 』はY軸、『 dz 』はZ軸方向の距離を指定し、マイナスの値も使用できます。これもXYZ全てを記述する必要はなく、欠けているXYZ距離は『0』として扱われます
    距離を指定するものであるため、『0』を指定すれば1ブロック幅の範囲になります。
    この辺は混乱しがちなところなので、ちょっと例を挙げて整理しましょう。 なお今回も /execute を用いるため、防具立ても用意します。/execute についての解説は ↓ の記事をご覧下さい。


    例)
    /execute @e[type=armor_stand,dx=-5,dy=0,dz=-5] ~ ~ ~ setblock ~ ~2 ~ gold_block 0

    この例のコマンドを整理すると以下の様になります。ちなみに、/setblock は指定した座標にブロックを設置するコマンドです。/setblock についての解説は ↓ の記事をご覧下さい。


    ● /execute の実行者:コマンド実行者(今回はわたくしユキミ大福)
    ● /execute の対象:基準座標からX軸方向に-5、Y軸方向に0、Z軸方向に-5の範囲に存在する防具立て全て
    ● /setblock の基準座標:/execute で対象となった各々の防具立てが存在する座標
    ● /setblock の設置座標:/setblock の基準座標からY軸方向に+2の座標

    そして、このようなフィールドも用意しました。

    f:id:YukimiD1999:20201225142811p:plain

    画像上方向が北となっている

    今回は中央にわたくしが立ち、チャット欄にコマンドを打ち込んで実行してみようと思います。

    f:id:YukimiD1999:20201225143129p:plain

    距離指定がどちらもマイナスのため、北西方向の防具立てが反応した

    次は比較のため、少しコマンドを変えてみましょう。

    /execute @e[type=armor_stand,dx=0,dy=0,dz=-5] ~ ~ ~ setblock ~ ~2 ~ gold_block 0

    X軸方向の距離指定を0にしてみました。さて、どうなるでしょうか。

    f:id:YukimiD1999:20201225143553p:plain

    北方向1列の防具立てだけが反応した

    『距離』のイメージに慣れるまでは、以下の様に考えると良いでしょう。

    ● 対象としたい範囲の北西の角(各軸の値が一番小さくなる座標)を基準座標とする。
    ● 対象としたい範囲の反対側の角(各軸の値が一番大きくなる座標)の座標を決める。
    ● (反対側の角の座標) ー (基準座標) から距離を求める。

    例)基準座標( 20, 60, 30 )から( 40, 70, 100 )の範囲を対象とする場合
    ● 基準座標は( 20, 60, 30 )
    ● 反対側の角は( 40, 70, 100 )
    ● ( 40, 70, 100 ) ー ( 20, 60, 30 )
     =( 40 - 20, 70 - 60, 100 - 30 )
     =( 20, 10, 70 )となるため、dx=20, dy=10, dz=70

  3. 『 r 』『 rm 』
    この引数は基準座標を起点としてそこから距離を指定し、その距離を半径とした球体範囲を対象にするというものです。数値指定はint型でもfloat型でもOKです。
    『 r 』は指定した半径球体以内、『 rm 』は指定した半径球体を対象とします。なお、マイナスの値は指定できません。
    上記の『 dx 』『 dy 』『 dz 』と組み合わせた場合、『 dx 』『 dy 』『 dz 』で指定した直方体範囲と、『 r 』または『 rm 』で指定した球体範囲が重なった部分のみを対象とします。この場合、基準座標は北西の角になります。

  4. 『 rx 』『 rxm 』『 ry 』『 rym 』
    この引数はエンティティが向いている方向を指定するものです。数値指定はint型でもfloat型でもOKです。
    『 rx 』『 rxm 』は上下方向の向きを、『 ry 』『 rym 』は左右方向の向きを指定し、『 rx 』『 ry 』は指定した回転角以下、『 rxm 』『 rym 』は指定した回転角以上を対象とします。
    …この書き方だとちょっとわかりづらいので、箇条書きで整理してみましょう。

    ●『 rx 』:上下方向の向き-90.0 ~ 90.0 の範囲で指定、指定した回転角以下のエンティティが対象
    ●『 rxm 』:上下方向の向き-90.0 ~ 90.0 の範囲で指定、指定した回転角以上のエンティティが対象
    ●『 ry 』:左右方向の向き-180.0 ~ 180.0 の範囲で指定、指定した回転角以下のエンティティが対象
    ●『 rym 』:左右方向の向き-180.0 ~ 180.0 の範囲で指定、指定した回転角以上のエンティティが対象

    なお、それぞれの方向の数値は以下のようになっています。

    ● rx=-90:真上
    ● rx=0:真正面
    ● rx=90:真下

    ● ry=-180 (180):真北
    ● ry=-90:真東
    ● ry=0:真南
    ● ry=90:真西

    なお、この『 rx 』『 rxm 』『 ry 』『 rym 』は組み合わせることも可能です。いくつか例を挙げてみましょう。

    例)

    上下方向の向きが 20 のエンティティを対象とする
    @e[rx=20]
    or
    @e[rxm=20]

    上下方向の向きが -90 ~ 0 のエンティティを対象とする
    @e[rx=-90,rxm=0]

    上下方向の向きが -45 ~ 45 で、左右方向の向きが -90 ~ 90 のエンティティを対象とする
    @e[rx=-45,rxm=45,ry=-90,rym=90]

  5. 『 c 』
    これも座標編でも登場しましたが、ここでもう一度解説します。
    この引数は対象の数を指定した数にするというものです。数値はint型で指定します。
    『@p』『@r』『@s』でこの引数はデフォルトで「c=1」、『@a』『@e』は「c=(無限)」になっています。なお『@s』ではどんな数値を指定しても「c=1」の扱いになります。
    プラスの値を指定した場合には「基準座標から近い順に」「同距離の場合にはワールドに存在した時間が長い順に」「指定した数だけ」対象とします。
    マイナスの値を指定した場合には「基準座標から遠い順に」「同距離の場合にはワールドに存在した時間が短い順に」「( 指定した数 )x ( -1 )だけ」対象とします。

  6. 『 l 』『 lm 』
    この引数は経験値レベルを指定するものです。数値はint型で指定します。なお、この引数を設定すると、対象エンティティは自動的にプレイヤーのみになります。
    『 l 』はレベルが指定値以下のプレイヤーを対象とし、『 lm 』はレベルが指定値以上のプレイヤーを対象とします。

  7. 『 m 』
    この引数はゲームモードを指定するものです。なお、この引数を設定すると、対象エンティティは自動的にプレイヤーのみになります。
    使用可能な値は以下の通りです。

    ●『 0 』or『 s 』or『 survival 』:サバイバルモードのプレイヤー
    ●『 1 』or『 c 』or『 creative 』:クリエイティブモードのプレイヤー
    ●『 2 』or『 a 』or『 adventure 』:アドベンチャーモードのプレイヤー

  8. 『 name 』
    この引数は対象エンティティを名前で指定するものです。
    「name=(名前)」で指定した名前のエンティティを、「name=!(名前)」で指定した名前以外のエンティティを対象にします。
    名前に空白が存在する場合には、『 "(ダブルクォーテーション)で囲うことで指定できます(日本語であっても囲わなくて問題ありませんが、空白があれば必要になります)

  9. 『 type 』
    この引数は対象エンティティを種類で指定するものです。なお似た引数に『 family 』が存在しますが、『 type 』はエンティティタイプでしか指定できません。
    「type=(種類)」で指定した種類のエンティティを、「type=!(種類)」で指定した種類以外のエンティティを対象にします。
    使用可能な値は以下の通りです(v1.17.10時点)。

    ver.1.17.10時点のエンティティタイプのリスト

    ● area_effect_cloud:ポーション効果が付与されている時に出る雲(もや)
    ● armor_stand:防具立て
    ● arrow:矢
    ● axolotl:ウーパールーパー

    ● bat:コウモリ
    ● bee:ハチ
    ● blaze:ブレイズ
    boat:木のボート

    ● cat:ネコ
    ● cave_spider:洞窟グモ
    ● chalkboard:黒板(Education Edition限定)
    ● chest_minecart:チェスト付きトロッコ
    ● chicken:ニワトリ
    cod:タラ
    ● command_block_minecart:コマンドブロック付きトロッコ
    ● cow:ウシ
    ● creeper:クリーパー

    ● dolphin:イルカ
    ● donkey:ロバ
    ● dragon_fireball:エンダーチャージ(エンドラが吐く火の玉)
    ● drowned:ドラウンド(水中ゾンビ)

    ● egg:ニワトリの卵
    ● elder_guardian:エルダーガーディアン
    ● elder_guardian_ghost:(エルダーガーディアンゴースト?)
    ● ender_crystal:エンドクリスタル
    ● ender_dragon:エンダードラゴン
    ● ender_pearl:エンダーパール
    ● enderman:エンダーマン
    ● endermite:エンダーマイト
    ● evocation_fang:エヴォーカーファング(トラバサミみたいなやつ)
    ● evocation_illager:エヴォーカー
    ● eye_of_ender_signal:エンダーアイ

    ● falling_block:落下中のブロック(砂や金床など)
    ● fireball:ガストの火の玉
    ● firewarks_rocket:ロケット花火
    ● fishing_hook:釣り竿の浮き
    ● fox:キツネ

    ● ghast:ガスト
    ● glow_squid:発光するイカ
    ● goat:ヤギ
    ● guardian:ガーディアン

    ● hoglin:ホグリン
    ● hopper_minecart:ホッパー付きトロッコ
    ● horse:ウマ
    ● husk:ハスク(砂漠ゾンビ)

    ● ice_bomb:氷の爆弾(Education Edition限定)
    ● iron_golem:アイアンゴーレム
    ● item:ドロップアイテム

    ● leash_knot:フェンスに繋がれたリード
    ● lighting_bolt:雷
    ● lingering_potion:残留ポーション
    ● llama:ラマ
    ● llama_spit:ラマの唾

    ● magma_cube:マグマキューブ
    ● minecart:トロッコ
    ● mooshroom:ムーシュルーム
    ● moving_block:(動いているブロック?)
    mule:ラバ

    npcNPC

    ● ocelot:ヤマネコ

    ● painting:絵画
    ● panda:パンダ
    ● parrot:オウム
    ● phantom:ファントム
    ● pig:ブタ
    ● piglin:ピグリン
    ● piglin_brute:ピグリンブルート
    ● pillager:ピリジャー(略奪者)
    ● player:プレイヤー
    ● polar_bear:シロクマ
    ● pufferfish:フグ

    ● rabbit:ウサギ
    ● ravager:ラヴェジャー

    ● salmon:サケ
    ● sheep:ヒツジ
    ● shield:(盾?)
    ● shulker:シュルカー
    ● shulker_bullet:シュルカーの弾
    ● silverfish:シルバーフィッシュ
    ● skeleton:スケルト
    ● skeleton_horse:スケルトンホース
    ● slime:スライム
    ● small_fireball:小さな火の玉(ファイヤーチャージの火の玉)
    ● snow_golem:スノーゴーレム
    ● snowball:雪玉
    ● spider:クモ
    ● splash_potion:スプラッシュポーション
    squidイカ
    ● stray:ストレイ(氷雪スケルトン)
    ● strider:ストライダ

    ● thrown_trident:トライデント
    tnt:着火状態のTNT
    tnt_minecart:TNT付きトロッコ
    ● tropicalfish:熱帯魚
    ● turtle:カメ

    ● vex:ヴェックス
    ● villager:村人
    ● vindicator:ヴィンディケーター

    ● wandering_trader:行商人
    ● witch:ウィッチ
    ● wither:ウィザー
    ● wither_skeleton:ウィザースケルト
    ● wither_skull:ウィザーの弾(黒)
    ● wither_skull_dangerous:ウィザーの弾(青)
    ● wolf:オオカミ

    ● xp_bottle:経験値ポーション
    ● xp_orb:経験値オーブ

    ● zoglin:ゾグリン
    ● zombie:ゾンビ
    ● zombie_horse:ゾンビ馬
    ● zombie_pigman:ゾンビピッグマン
    ● zombie_villager:ゾンビ村人

    なお、chalkboard(黒板)は統合版では使用不可ice_bomb(氷の爆弾)は「設定」→「世界」→「ゲーム」→「チート」内の「Education Edition」をONにした時のみ使用可能です。
    elder_guardian_ghost(エルダーガーディアンゴースト?)とshield(盾?)に関してはマジで謎です。情報求む!!

  10. 『 tag 』
    この引数は対象エンティティを『 /tag 』で設定したタグで指定するものです。
    「tag=(タグ)」で指定したタグを持つエンティティを、「tag=!(種類)」で指定したタグを持たないエンティティを対象にします。
    なお「tag=」でタグを一切持たないエンティティを、「tag=!」で何らかのタグを持つエンティティを対象にします。
    『 /tag 』については、以下の記事で詳しく解説します。

     

  11. 『 scores 』
    この引数は対象エンティティを『 /scoreboard 』で設定したスコアで指定するものです。
    「scores={ (オブジェクティブ名) = (数値) }」で指定したオブジェクティブの数値を持つエンティティを対象にします。
    なお「scores={ (オブジェクティブ名) = (最小値) .. (最大値) }」とすればスコアを範囲指定できます。
    さらに「scores={ (第1オブジェクティブ名) = (数値) , (第2オブジェクティブ名) = (数値) }」とすれば、複数のオブジェクティブのスコアを参照できます。この場合、全ての条件を満たすエンティティのみが対象となります。3つ以上のスコアも指定できます。
    『 /scoreboard 』については、以下の記事で詳しく解説します。

     

  12. 『 family 』
    この引数は対象エンティティを種類で指定するものです。なお似た引数に『 type 』が存在しますが、こちらは『 type 』よりも多くの種類のまとまりで指定できます。
    「family=(まとまり)」で指定したまとまりのエンティティを、「family=!(まとまり)」で指定したまとまり以外のエンティティを対象にします。
    使用可能な値は以下の通りです(v1.17.10時点)。

    ver.1.17.10時点のエンティティファミリーのリスト

    ● creeper:クリーパーのみ
    ● enderman:エンダーマンのみ
    ● inanimate:ドロップアイテム以外の非生物
    ● mob:MOB全て(防具立ても含む)
    ● monster:敵対的MOBのみ
    ● skeleton:スケルトン、ストレイ、ウィザースケルトンのみ
    ● undead:「聖なる力」が効く敵対的MOBのみ
    ● wandering_trader:行商人のみ
    ● zombie:ゾンビ、村人ゾンビ、ハスク、ドラウンドのみ

    『 type 』引数との対応は以下の様になっています。

    creeper( family ):
    ● creeper( type )

    enderman( family ):
    ● enderman( type )

    inanimate:
    ● area_effect_cloud
    ● armor_stand
    ● arrow
    boat
    ● chest_minecart
    ● command_block_minecart
    ● dragon_fireball
    ● egg
    ● ender_crystal
    ● ender_pearl
    ● eye_of_ender_signal
    ● falling_block
    ● fireball
    ● firewarks_rocket
    ● fishing_hook
    ● hopper_minecart
    ● leash_knot
    ● lighting_bolt
    ● lingering_potion
    ● llama_spit
    ● minecart
    ● painting
    ● shulker_bullet
    ● small_fireball
    ● snowball
    ● splash_potion
    ● thrown_trident
    tnt
    tnt_minecart
    ● wither_skull
    ● wither_skull_dangerous
    ● xp_bottle
    ● xp_orb

    mob:
    ● armor_stand
    ● axolotl
    ● bat
    ● bee
    ● cat
    ● cave_spider
    ● chicken
    cod
    ● cow
    ● dolphin
    ● donkey
    ● elder_guardian
    ● evocation_fang
    ● fox
    ● glow_squid
    ● horse
    ● iron_golem
    ● llama
    ● magma_cube
    ● monster( family )
    ● mooshroom
    mule
    ● ocelot
    ● panda
    ● parrot
    ● pig
    ● piglin
    ● polar_bear
    ● pufferfish
    ● rabbit
    ● salmon
    ● sheep
    ● snow_golem
    ● spider
    squid
    ● strider
    ● tropicalfish
    ● turtle
    ● villager
    ● wandering_trader( type )
    ● wolf

    monster:
    ● blaze
    ● creeper( type )
    ● elder_guardian
    ● ender_dragon
    ● endermite
    ● evocation_illager
    ● ghast
    ● guardian
    ● hoglin
    ● magma_cube
    ● piglin_brute
    ● pillager
    ● ravager
    ● shulker
    ● silverfish
    ● slime
    ● undead( family )
    ● vex
    ● vindicator
    ● witch

    skeleton( family ):
    ● skeleton( type )
    ● stray
    ● wither_skeleton

    undead:
    ● phantom
    ● skeleton( family )
    ● skeleton_horse
    ● wither
    ● zoglin
    ● zombie( family )
    ● zombie_horse

    wandering_trader( family ):
    ● wandering_trader

    zombie( family ):
    ● drowned
    ● husk
    ● zombie( type )
    ● zombie_villager

 

引数を組み合わせる

これまでの記事で自然にやっていましたが、これらの引数は組み合わせることができます。引数を組み合わせる場合、半角スペースは開けずに「 , (カンマ)を打ちます。

 

例)

 

/kill @e[x=88,y=70,z=20,r=25,rm=10,c=10,family=!monster,family=!inanimate,type=!villager,type=!item]

 

上のコマンドでの対象は、

  • 基準座標は( 88, 70, 20 )
  • 基準座標を中心に半径10以上25以下の球体範囲
  • 数は10体まで
  • 敵対的MOBでなく、ドロップアイテム以外の非生物でもなく、村人でもなくドロップアイテムでもないエンティティ

となります。引数の合体については、AND検索なので、OR検索をする場合には少し考える必要がありますね。

 

ターゲットセレクターについては以上になります。これだけでも十分対象を絞ることができますが、『 /tag 』『 /scoreboard 』等を用いれば、『 tag 』『 scores 』引数によってより詳細に対象を絞ることができます。色々試してみて下さい。

 

今回のまとめ

  • ターゲットセレクターを用いれば、エンティティの名前を直接書かずに指定できる!
  • 引数を使えば詳細に対象を絞れる!
  • 引数は複数繋げればより詳細に対象を絞れる!

 

関連記事

 

当記事及び当ブログへのご意見・ご質問はいつでも受け付けております。

お気軽にコメント欄までどうぞ!

↓良ければポチッとお願いします。