更新日:
足元のブロックを条件にする|コマンド例
指定したブロックに立っているかを判定して実行する例。
対象:Java版 1.21.1〜26.3
すぐに使えるコマンド
足元が草ブロックならメッセージ
/execute if block ~ ~-1 ~ minecraft:grass_block run say 草ブロックの上ですプレイヤーごとに足元を判定
/execute as @a at @s if block ~ ~-1 ~ minecraft:grass_block run say 草ブロックを確認設定の変え方
asは実行者、atは実行位置を切り替えます。チャットから1人で実行する場合と、関数で全員に処理する場合を分けて考えます。
実行前に確認すること
複数のプレイヤーが同時に条件を満たすと、後者は人数分実行されます。
チャットから実行する場合は先頭に / を付けます。データパック内の .mcfunction に記述する場合は通常、先頭の / を外します。
実際の使いどころ
アスレチックで特定の床を踏んだときに反応させたり、ステージの入口に立った参加者だけに通知したりするときに便利です。ブロックの種類を条件として使うため、レッドストーン配線を増やさずに判定できます。
設定の考え方と応用
if blockの座標は実行位置が基準です。全プレイヤーの足元を判定したい場合、asとatを組み合わせ、それぞれのプレイヤーに対して~ ~-1 ~を調べる形にします。通知ではなく関数呼び出しへ置き換えればイベントの起点にもなります。
動かないときの確認ポイント
草ブロックと土は別IDです。また、プレイヤーがジャンプ中か、ブロックの端にいるかで判定座標が意図と変わる場合があります。常時判定する前に、/execute if blockだけで成功するか試してください。
統合版で使う場合
統合版では minecraft: を省略して書くのが一般的です。
統合版(1.19.50以降)
/execute as @a at @s if block ~ ~-1 ~ grass_block run say 草ブロックを確認組み合わせて使えるコマンド
草ブロック以外の上にいるとき
/execute as @a at @s unless block ~ ~-1 ~ minecraft:grass_block run say 草ブロックではありませんunless は「〜でないとき」の条件です。if と入れ替えるだけで逆の判定になります。
よくある質問
~ ~-1 ~ はどこを指しますか
実行位置の1ブロック下、つまり足元のブロックです。at @s と組み合わせると各プレイヤーの足元になります。
草(短い草)を判定したいときは
草ブロック(grass_block)と、地面に生えている草は別のIDです。Java 1.20.3以降の短い草は short_grass です。
関連するコマンド例と解説記事
executeコマンドのas、at、run、if entityの基本を、初心者向けに実用…
コマンドブロックで失敗しにくい作り方:入力・条件・連鎖の基本コマンドブロックでコマンドを動かすときの基本、反復、チェーン、条件付き、レッドストーン入力…
コマンドブロックが動かない原因マイクラのコマンドブロックが動かない・常時実行されないときの原因を、サーバー設定、権限、レッ…
プレイヤーの位置で実行するマイクラでプレイヤーの位置で実行するときのコマンド例。as・at・runの役割を確認する例…
床を一度に作るマイクラで床を一度に作るときのコマンド例。範囲選択で5×5の床を作る例。そのまま使えるコマン…
土だけを石に置換マイクラで土だけを石に置換するときのコマンド例。周囲の土を指定ブロックだけ置き換える例。その…