
この記事は、コマンド初心者〜中級者向けの仕様解説です
Java版・統合版どちらでも使う考え方を中心に整理しています
ただし、セレクター引数や一部構文はJava版と統合版で違うため、そこは分けて解説します
こんにちは。ゆずかきです。
マイクラでコマンドを触っていると、かなり早い段階で出てくるのが、@s と execute です。
でも、この2つって説明だけ読むと、意外と分かりにくいんですよね。
「@sって自分のこと?」
「コマンドブロックで @s を使ったら誰になるの?」
「execute as と execute at の違いは?」
「権限がないって出るのは何が原因?」
筆者も最初、ここでかなり混乱しました。
特に、@s = 自分 とだけ覚えてしまうと、コマンドブロックや関数、executeを使った時に一気に事故ります。
結論から言うと、@sは“自分”というより、その時点のコマンド実行者です。
ここが分かると、コマンドの見え方がかなり変わります。
この記事では、マイクラのコマンド実行者について、@s・権限・executeによる実行者変更まで、実際に使う目線で整理していきますね。
この記事を読むと、次のことが分かります。
- @sが「誰」を指すのか分かります👍
- コマンドブロックで @s が失敗する理由が分かります👌
- execute as / at / positioned の違いを使い分けられます
- Java版と統合版の違いで詰まりにくくなります
- コマンド権限エラーの原因を切り分けやすくなります(^^♪
それでは、やっていきましょう!
※本記事は、スナップショットを除くJava版1.21.11〜26.1.2系、および統合版の現行仕様を前提に、コミュニティWiki・公式ドキュメントを確認して構成しています。
※コマンド仕様はアップデートで変わることがあるため、古いワールド・古い記事を参考にする場合はバージョン差に注意してください。
※この記事では、細かい内部仕様をすべて詰め込むよりも、実際にコマンドを書く時に迷わないことを優先しています。
目次
1. コマンド実行者とは?まずはここだけ押さえる
2. @sとは?「自分」ではなく「実行者」を指すセレクターです
3. 実行者が変わる場面一覧|チャット・コマンドブロック・関数
4. コマンド権限とは?Java版と統合版で考え方が違います
5. execute as と execute at の違い|ここが一番大事です
6. @sが失敗する典型例と正しい書き方
7. Java版と統合版の違い|セレクター引数・execute構文の注意点
8. よく使う実用コマンド例
9. うまく動かない時のチェックポイント
10. まとめ
11. 参考文献
この記事で分かること
・@sが指す対象
・コマンド実行者と実行位置の違い
・execute as / at の実用的な使い分け
・Java版/統合版のコマンド差

1. コマンド実行者とは?まずはここだけ押さえる
まず、コマンド実行者とは何か?から整理します。
マイクラのコマンドは、ただ文字を実行しているだけではなく、裏側では次のような情報を持っています。
- 誰が実行しているのか
- どこで実行しているのか
- どのディメンションで実行しているのか
- どちらを向いて実行しているのか
- どの権限レベルで実行できるのか
このうち、誰が実行しているのかが、この記事の主役であるコマンド実行者です。
たとえば、プレイヤーがチャット欄で次のコマンドを打ったとします。
/give @s minecraft:diamond 1
この場合、@s はコマンドを打ったプレイヤー自身を指します。
だから、自分にダイヤモンドが1個渡されます。
ここまでは簡単ですね。
ただし、同じコマンドをコマンドブロックに入れると話が変わります。
give @s minecraft:diamond 1
この場合、コマンドブロックはプレイヤーではありません。
そして、@sは「コマンドを実行しているエンティティ」を対象にするセレクターなので、コマンドブロックがそのまま @s の対象になるわけではありません。
つまり、コマンドブロックでいきなり @s を使うと、対象がいなくて失敗しやすいです。
ここが、最初のつまずきポイントです。
体験談
筆者は最初、「@s = 自分」とだけ覚えていたので、コマンドブロックにgive @s diamondを入れて何も起きず困りました。
でも正しくは、@sは「そのコマンドの実行者」。
コマンドブロックには、プレイヤーとしての @s がいないんですよね。
なので、まずはこのように覚えるのがおすすめです。
@s = その瞬間にコマンドを実行しているエンティティ
コマンドブロックやサーバーコンソールは、そのままだと @s の対象にならない
これだけでも、コマンドの事故はかなり減ります。

2. @sとは?「自分」ではなく「実行者」を指すセレクターです
@sは、ターゲットセレクターの1つです。
代表的なセレクターを整理すると、こんな感じです。
| セレクター | 対象 | よく使う場面 |
|---|---|---|
| @p | 最寄りのプレイヤー | ボタンを押した人の近く、コマンドブロック付近の人を対象にしたい時 |
| @a | 全プレイヤー | 全員に効果を付ける、全員にメッセージを出す時 |
| @r | ランダムなプレイヤー、または条件で指定したランダムな対象 | 抽選、ランダムイベント |
| @e | エンティティ全体 | モブ、アイテム、防具立てなども含めて対象にする時 |
| @s | コマンド実行者 | executeで対象を切り替えた後、自分自身を指定する時 |
この中で、@sだけ少し特殊です。
@pは、コマンドの実行位置を基準に最寄りのプレイヤーを探します。
@aは、条件に合う全プレイヤーを対象にします。
@eは、条件に合うエンティティを探します。
でも@sは、新しく誰かを探すというより、すでに存在している実行者を指すイメージです。
たとえば、プレイヤーがこのコマンドを打つとします。
/effect give @s minecraft:speed 10 1 true
この場合、@sはコマンドを打ったプレイヤーです。
自分に移動速度上昇が付きます。
では、次のコマンドはどうでしょうか。
/execute as @e[type=minecraft:zombie] run effect give @s minecraft:glowing 10 0 true
これはJava版の例です。
この場合、execute as @e[type=minecraft:zombie] によって、実行者がゾンビに切り替わります。
なので、後ろの @s はプレイヤーではなく、それぞれのゾンビ自身を指します。
結果として、ゾンビに発光が付きます。
つまり、@sを理解するコツはこれです。
@sは、コマンドを書いた人ではなく、実行者として設定されている対象を指す
チャットで打てば、多くの場合は自分。
でも、execute asで変えれば、ゾンビにも村人にも防具立てにもなります。
ここが分かると、execute系のコマンドがかなり読みやすくなりますよ。

3. 実行者が変わる場面一覧|チャット・コマンドブロック・関数
コマンド実行者は、どこからコマンドを動かすかで変わります。
初心者さんが混乱しやすいので、よくあるパターンを表にしました。
| 実行場所 | そのままの実行者 | @sの扱い | 注意点 |
|---|---|---|---|
| プレイヤーのチャット欄 | コマンドを打ったプレイヤー | そのプレイヤー | 一番分かりやすい基本形です |
| コマンドブロック | コマンドブロック側の実行 | 通常、そのままでは対象なし | @sを使うならexecute asで対象を作るのが安全です |
| サーバーコンソール | サーバー側の実行 | 通常、そのままでは対象なし | プレイヤー名や@aなどを明示する必要があります |
| データパックのfunction | 呼び出し方によって変わる | 呼び出し時の実行者に依存 | execute asで呼んだfunction内の@sは、その対象になります |
| NPC・アドオン系の処理 | 統合版では仕組みにより変わる | @initiatorなど専用セレクターが絡む場合あり | 統合版特有の仕様に注意です |
特に覚えておきたいのは、コマンドブロックの @s は、プレイヤーを自動で指してくれないという点です。
たとえば、ボタンを押した人にダイヤを渡したい場合、次のように書きたくなります。
give @s minecraft:diamond 1
でも、これはうまくいきません。
ボタンを押したプレイヤーが、コマンドブロックの実行者になるわけではないからです。
この場合は、近くのプレイヤーを対象にするなら、たとえば次のようにします。
give @p minecraft:diamond 1
ただし、@pはコマンドブロックから一番近いプレイヤーです。
「ボタンを押した人」と完全に同じとは限りません。
1人用ワールドや、ボタンの目の前に1人しか立てない構造なら問題になりにくいですが、マルチだと別の人が選ばれる可能性があります。
注意!
コマンドブロックの@pは「ボタンを押した人」ではなく、コマンドブロックの実行位置から最寄りのプレイヤーです。
配布マップやマルチワールドで使う場合は、位置関係をかなり気にした方が良いです。
少し安全にするなら、範囲を絞ります。
Java版なら、たとえばこうです。
give @p[distance=..3] minecraft:diamond 1
統合版なら、距離指定は r を使うことが多いです。
give @p[r=3] diamond 1
このように、コマンドブロックから使う場合は、誰が実行者なのかとどこから対象を探すのかを分けて考えるのが大事です。

4. コマンド権限とは?Java版と統合版で考え方が違います
次に、コマンド権限についてです。
コマンドを打った時に、こんな感じで怒られたことはありませんか?
このコマンドを実行する権限がありません
または、コマンド自体は合っているのに、コマンドブロックで動かないこともあります。
これは、構文ミスではなく権限不足の可能性があります。
マイクラのコマンドには、実行するために必要な権限レベルがあります。
Java版と統合版で少し考え方が違うので、まずは大枠を表にしますね。
| 項目 | Java版 | 統合版 |
|---|---|---|
| プレイヤーの基本 | OP権限やチート許可で変わる | オペレーターコマンドやチート設定で変わる |
| コマンドブロック | 権限レベル2相当 | Game Directors相当 |
| サーバーコンソール | 強い権限を持つ | 強い権限を持つ |
| function | 通常はレベル2相当。server.propertiesで変更可能 | Game Directors相当として扱われる場面があります |
| チート無効時 | 環境によりOPなら使える場合あり | チート専用コマンドは基本的に使えません |
普通にサバイバルで遊んでいるだけなら、そこまで意識しなくても大丈夫です。
ただ、コマンドブロックやデータパック、サーバー運営を触り始めると、ここがかなり大事になります。
Java版でよくある権限のつまずき
Java版では、シングルプレイなら「チートの許可」が分かりやすいです。
ワールド作成時にチートを許可していないと、基本的に多くのコマンドが使えません。
既存ワールドで一時的に使いたい場合は、LANに公開してチートを許可する方法もあります。
ただし、これはワールドや遊び方によって扱いが変わるため、サバイバルの実績的な楽しみを大事にするなら注意しましょう。
サーバーの場合は、OP権限が絡みます。
OP権限が低いと、使えるコマンドが制限されることがあります。
また、コマンドブロックを使うサーバーでは、server.properties の設定でコマンドブロックが有効になっている必要があります。
代表的には、次の設定です。
enable-command-block=true
これが無効のままだと、コマンドブロックを置いても期待通りに動かないことがあります。
統合版でよくある権限のつまずき
統合版では、ワールド設定の「チートの実行」や「コマンドブロック有効化」がかなり重要です。
統合版は、Java版よりもメニュー上の設定と結びついている印象があります。
「コマンドは合っているのに動かない」という時は、まずワールド設定を見直してください。
特に、統合版でコマンドブロックを使う場合は、コマンドブロックが有効になっているかを確認しましょう。
体験談
筆者は統合版側で検証していた時、構文ばかり疑っていたら、そもそもワールド設定側でコマンドブロックが無効でした。
こういう時、コマンド本文をいくら直しても動きません。
まず設定、次に権限、最後に構文を見るのがおすすめです。

5. execute as と execute at の違い|ここが一番大事です
ここからが本題です。
コマンド実行者を理解するうえで、一番大事なのが execute as と execute at の違いです。
この2つを混同すると、かなり高確率で変な動きをします。
まず結論です。
execute as:実行者を変える
execute at:実行位置を変える
この違いです。
もう少し具体的に表にします。
| 構文 | 変わるもの | @sは変わる? | ~ ~ ~ の位置は変わる? |
|---|---|---|---|
| execute as | 実行者 | 変わる | 変わらない |
| execute at | 実行位置・向き・ディメンション | 変わらない | 変わる |
| execute positioned | 実行位置 | 変わらない | 変わる |
| execute in | ディメンション | 変わらない | 変わる場合あり |
この表だけだと少し分かりにくいので、実例で見ていきますね。
execute asだけ使った場合
Java版で、すべてのゾンビに発光を付けたいとします。
/execute as @e[type=minecraft:zombie] run effect give @s minecraft:glowing 10 0 true
これは、ゾンビを実行者にしてから、@sに発光を付けています。
なので、対象はそれぞれのゾンビです。
このコマンドの読み方は、こうです。
ゾンビそれぞれを実行者にして、そのゾンビ自身(@s)に発光を付ける
これはかなり自然ですね。
execute atだけ使った場合
では、次のコマンドはどうでしょうか。
/execute at @e[type=minecraft:zombie] run effect give @s minecraft:glowing 10 0 true
一見、ゾンビに発光が付きそうですよね。
でも、これは違います。
execute at @e[type=minecraft:zombie] は、実行位置をゾンビの場所に変えるだけです。
実行者は変わっていません。
つまり、プレイヤーがこのコマンドを打ったなら、@sはプレイヤーのままです。
結果として、ゾンビの数だけプレイヤーに発光を付けようとするような、かなり分かりにくい動きになります。
重要!
atは「その場所で実行する」だけです。
@sを対象のモブにしたいなら、asが必要です。
as と at をセットで使う基本形
対象のモブ自身に、対象のモブの場所で処理をしたいなら、基本形はこれです。
/execute as @e[type=minecraft:zombie] at @s run tp @s ~ ~1 ~
この場合、流れはこうです。
as @e[type=minecraft:zombie]で、ゾンビを実行者にするat @sで、そのゾンビ自身の位置に実行位置を合わせるtp @s ~ ~1 ~で、そのゾンビを1マス上へ移動する
この形はとても大事です。
対象ごとに、その対象の位置で何かしたい時は、基本的に
execute as 対象 at @s run ...
筆者は、executeを覚え始めた頃、この形を丸ごと覚えました。
最初は意味が完全に分からなくても、この形を何回か使うと感覚が掴めます。
逆に at だけで良い場面もあります
では、atは使わない方が良いのか?というと、そうではありません。
たとえば、ゾンビの場所に雷を落とすだけなら、@sを使わなくてもできます。
Java版なら、次のように書けます。
/execute at @e[type=minecraft:zombie] run summon minecraft:lightning_bolt ~ ~ ~
これは、実行位置をゾンビの場所に変えて、そこに雷を召喚しています。
このコマンドでは @s を使っていないので、実行者がプレイヤーのままでも問題ありません。
つまり、使い分けはこうです。
- 対象自身を操作したい →
asが必要 - 対象の場所で何かを起こしたい →
atだけでもOK - 対象自身を、対象の場所基準で操作したい →
as 対象 at @sが安定
この3つを覚えておくと、executeの理解がかなり楽になります。

6. @sが失敗する典型例と正しい書き方
ここでは、@sでよくある失敗例をまとめます。
コマンドは、少しの違いで全然違う動きをします。
なので、失敗例から覚えるのがかなり効果的です。
失敗例1:コマンドブロックで @s にアイテムを渡そうとする
give @s minecraft:diamond 1
これは、コマンドブロックでは失敗しやすいです。
理由は、@sがプレイヤーを指していないからです。
近くのプレイヤーに渡したいなら、Java版ではたとえばこうです。
give @p[distance=..3] minecraft:diamond 1
統合版なら、たとえばこうです。
give @p[r=3] diamond 1
ただし、@pは本当に「押した人」ではありません。
あくまで最寄りのプレイヤーです。
失敗例2:atだけで対象自身を動かそうとする
/execute at @e[type=minecraft:zombie] run tp @s ~ ~1 ~
これは、ゾンビを上に動かしたい時の失敗例です。
at は位置を変えるだけで、実行者は変えません。
正しくは、こうです。
/execute as @e[type=minecraft:zombie] at @s run tp @s ~ ~1 ~
これで、それぞれのゾンビが自分自身の位置基準で1マス上に移動します。
失敗例3:@sに条件を付けたら何も起きない
@sには、セレクター引数を付けることもできます。
/effect give @s[gamemode=creative] minecraft:speed 10 1 true
Java版の例です。
この場合、@sは「実行者がクリエイティブなら対象になる」という意味です。
つまり、@sは新しくクリエイティブの人を探してくれるわけではありません。
実行者が条件に合えば成功、合わなければ失敗です。
これも勘違いしやすいところですね。
全クリエイティブプレイヤーに効果を付けたいなら、@sではなく@aを使います。
/effect give @a[gamemode=creative] minecraft:speed 10 1 true
統合版なら、ゲームモード指定は m を使う場面が多いです。
/effect @a[m=creative] speed 10 1 true
失敗例4:@pの位置基準を勘違いする
コマンドブロックで次のように書いたとします。
tp @p 0 64 0
これは、コマンドブロックから一番近いプレイヤーをテレポートします。
ボタンを押した人とは限りません。
マルチで別の人がコマンドブロックの近くにいたら、その人が飛ばされる可能性があります。
体験談
筆者は検証中、押した本人ではなく、横にいた別プレイヤーがテレポートされる事故を何回も見ました。
@pは便利ですが、マルチで使う時は必ず距離や立ち位置を絞りましょう。
失敗例5:@eの範囲を絞らずに大量処理する
/kill @e[type=minecraft:item]
これは、読み込まれている範囲のアイテムをまとめて消します。
便利ですが、意図しない場所のアイテムまで消える可能性があります。
近くのアイテムだけ消したいなら、Java版では距離を絞ります。
/kill @e[type=minecraft:item,distance=..5]
統合版なら、次のように半径指定を使います。
/kill @e[type=item,r=5]
@eは強力なので、最初は必ず範囲を狭くして試すのがおすすめです。

7. Java版と統合版の違い|セレクター引数・execute構文の注意点
Java版と統合版は、コマンドの考え方がかなり近づいています。
特に統合版では、1.19.50以降にexecute構文が大きく整理され、Java版に近い形で書けるようになりました。
ただし、完全に同じではありません。
特に、セレクター引数は違いが出やすいです。
| やりたいこと | Java版でよく使う書き方 | 統合版でよく使う書き方 |
|---|---|---|
| 半径5マス以内 | @e[distance=..5] |
@e[r=5] |
| 5〜10マスの範囲 | @e[distance=5..10] |
@e[rm=5,r=10] |
| 対象数を1体に制限 | @e[limit=1] |
@e[c=1] |
| 近い順に並べる | @e[sort=nearest] |
cの挙動で近い順になる場面あり |
| ゲームモード指定 | @a[gamemode=creative] |
@a[m=creative] |
| NBTで絞る | @e[nbt=...] |
基本的にJava版専用と考える |
| 持ち物で絞る | 別手段が必要なことが多い | hasitemが使える |
同じ「半径5マス以内」でも、Java版では distance=..5、統合版では r=5 と書くことが多いです。
なので、ネットでコマンドを拾ってきた時は、まずJava版の記事なのか、統合版の記事なのかを確認してください。
ここを間違えると、構文が合っているように見えても動きません。
execute構文の大きな変更点
Java版では、1.13でexecute構文が大きく変わりました。
古い記事にある次のような形は、現在のJava版ではそのまま使えないことがあります。
/execute @e[type=Zombie] ~ ~ ~ summon LightningBolt
現在のJava版では、基本的に次のような形で考えます。
/execute as @e[type=minecraft:zombie] at @s run summon minecraft:lightning_bolt ~ ~ ~
統合版でも、古いexecute構文の記事が残っています。
統合版は1.19.50以降、現在の新しいexecute構文が通常利用できるようになっています。
なので、古い統合版記事のコマンドを見ている場合も注意してください。
古い記事を見る時の注意点
・Java版1.12以前のexecute記事は、現在の構文とかなり違います
・Java版1.13以降は、execute as ... at ... run ...の形で考えます
・統合版は1.19.50以降、Java版に近い新execute構文が使われています
・Java版1.21.11以降〜26.1.2系でも、この記事で扱う @s / execute as / at の基本的な考え方は大きく変わっていません
Java版1.21.11以降の注意点
Java版は、1.21.11の後、2026年からバージョン表記が26.1系へ移っています。
そのため、検索すると「1.21.11」と「26.1」以降の記事が混ざることがあります。
この記事で扱っている内容は、主に次の基礎仕様です。
- @sは実行者を指す
- execute as は実行者を変える
- execute at は実行位置を変える
- コマンドブロックはそのままだとプレイヤーの@sにならない
- Java版と統合版でセレクター引数が違う
これらの基本は、1.21.11〜26.1.2系でも同じ考え方で使えます。
ただし、個別コマンドやデータパック構文、アイテムコンポーネントなどはアップデートで変わることがあるので、細かいコマンドを書く時は必ず対象バージョンを確認しましょう。

8. よく使う実用コマンド例
ここからは、実際に使いやすい例をまとめます。
コピペする場合は、Java版・統合版の違いに注意してくださいね。
自分に効果を付ける
Java版:
/effect give @s minecraft:speed 30 1 true
統合版:
/effect @s speed 30 1 true
これは、自分に移動速度上昇を30秒付ける例です。
プレイヤーがチャットで実行するなら、@sは自分になります。
近くのプレイヤーにアイテムを渡す
Java版:
/give @p[distance=..3] minecraft:bread 5
統合版:
/give @p[r=3] bread 5
コマンドブロックで使うなら、近くのプレイヤーにパンを5個渡す形です。
ただし、@pは最寄りプレイヤーなので、マルチでは立ち位置に注意です。
すべてのゾンビを発光させる
Java版:
/execute as @e[type=minecraft:zombie] run effect give @s minecraft:glowing 10 0 true
統合版:
/execute as @e[type=zombie] run effect @s glowing 10 0 true
execute asでゾンビを実行者にして、@sに発光を付けています。
@sの意味を理解するには、とても良い練習コマンドです。
すべてのゾンビの位置に雷を落とす
Java版:
/execute at @e[type=minecraft:zombie] run summon minecraft:lightning_bolt ~ ~ ~
統合版:
/execute at @e[type=zombie] run summon lightning_bolt ~ ~ ~
これは、ゾンビを実行者にする必要がない例です。
ゾンビの場所で雷を召喚したいだけなので、atだけで足ります。
すべてのゾンビを1マス上へ動かす
Java版:
/execute as @e[type=minecraft:zombie] at @s run tp @s ~ ~1 ~
統合版:
/execute as @e[type=zombie] at @s run tp @s ~ ~1 ~
これは、as と at をセットで使う基本例です。
対象自身を、対象自身の位置基準で動かしています。
足元が水ならメッセージを出す
Java版:
/execute as @a at @s if block ~ ~-1 ~ minecraft:water run tellraw @s {"text":"足元が水です","color":"aqua"}
統合版:
/execute as @a at @s if block ~ ~-1 ~ water run tellraw @s {"rawtext":[{"text":"足元が水です"}]}
これは、全プレイヤーを実行者にして、それぞれの足元を判定する例です。
as @a at @s の形が大事です。
半径5マス以内のアイテムだけ消す
Java版:
/kill @e[type=minecraft:item,distance=..5]
統合版:
/kill @e[type=item,r=5]
落ちているアイテム掃除に便利ですが、使う場所には注意です。
大事なアイテムまで消えると悲しいので、最初は狭い範囲で試しましょう。
タグ付きの防具立てだけ処理する
Java版:
/execute as @e[type=minecraft:armor_stand,tag=marker] at @s run particle minecraft:happy_villager ~ ~1 ~ 0.2 0.2 0.2 0 5
統合版:
/execute as @e[type=armor_stand,tag=marker] at @s run particle minecraft:villager_happy ~ ~1 ~
タグを使うと、対象をかなり安全に絞れます。
装置や演出でコマンドを組む時は、いきなり@e全体を触るより、タグ管理する方が事故りにくいです。

9. うまく動かない時のチェックポイント
コマンド実行者まわりでうまく動かない時は、下のチェックリストを順番に見てください。
- [ ] @sを使っているが、その時点で実行者は本当にエンティティか?
- [ ] コマンドブロックで
@sをそのまま使っていないか? - [ ]
execute atだけで対象自身を操作しようとしていないか? - [ ] 対象自身を動かすなら
execute as 対象 at @s run ...になっているか? - [ ] Java版の構文を統合版にそのまま貼っていないか?
- [ ] 統合版の構文をJava版にそのまま貼っていないか?
- [ ] Java版で
distance、統合版でr/rmの違いを確認したか? - [ ] Java版で
limit、統合版でcの違いを確認したか? - [ ] コマンドブロックが有効になっているか?
- [ ] サーバー設定でコマンドブロックが無効になっていないか?
- [ ] 必要な権限レベルが足りているか?
- [ ] @pを「ボタンを押した人」と勘違いしていないか?
- [ ] @eの範囲を広げすぎて、別の対象まで巻き込んでいないか?
特に多いのは、次の2つです。
execute at @e[type=minecraft:zombie] run tp @s ~ ~1 ~
これでゾンビが動かない問題。
これは、atだけで実行者を変えていないのが原因です。
正しくは、こうです。
execute as @e[type=minecraft:zombie] at @s run tp @s ~ ~1 ~
そして、コマンドブロックでこれをやる問題。
give @s minecraft:diamond 1
コマンドブロックはプレイヤーではないので、@sでプレイヤーを指定できません。
近くのプレイヤーに渡すなら、範囲付きの@pなどを使いましょう。
give @p[distance=..3] minecraft:diamond 1
迷った時の考え方
まず「このコマンドの実行者は誰?」を考える。
次に「このコマンドの実行位置はどこ?」を考える。
最後に「@sはその実行者で合っている?」を確認する。
この順番で見ると、かなり原因を見つけやすいです。

10. まとめ
今回は、マイクラのコマンド実行者について、@s・権限・executeの仕様を整理しました。
要点をまとめます。
- @sは“自分”ではなく、その時点のコマンド実行者を指す
- プレイヤーがチャットで打つ場合、@sは基本的に自分
- コマンドブロックやサーバーコンソールでは、@sがプレイヤーを自動で指すわけではない
execute asは実行者を変えるexecute atは実行位置を変える- 対象自身を対象自身の位置で操作するなら、基本は
execute as 対象 at @s run ... - Java版と統合版では、セレクター引数や一部コマンド構文が違う
- 古いJava版1.12以前、古い統合版1.19.50以前の記事は、現在のexecute構文と違う場合がある
コマンド実行者の考え方は、最初は少しややこしいです。
でも、ここを理解すると、コマンドブロック・データパック・配布マップ作りの自由度が一気に上がります。
特に、as と at の違いは本当に大事です。
execute as = 誰として実行するか
execute at = どこで実行するか
この2つだけでも覚えて帰ってください。
では、本日はここまでで終わります。
最後までご覧いただき、ありがとうございました。
柚子クラでは他にも便利なコマンド・装置系の解説をまとめているので、ぜひご覧くださいね(^^♪

11. 参考文献
この記事を書くにあたり、以下の公式ドキュメント・コミュニティWikiのページを参考にしています。
- Minecraft Wiki(Target selectors)
- Minecraft Wiki(Commands/execute)
- Minecraft Wiki(Permission level)
- Minecraft Wiki(Commands)
- Minecraft Wiki(Command Block)
- Microsoft Learn(Target Selectors)
- Microsoft Learn(execute Command)
- Bedrock Wiki(Execute)
- Minecraft公式(Java Edition 1.21.11)
- Minecraft公式(Java Edition 26.1)
- Minecraft公式(Java Edition 26.1.2)
- Minecraft公式(Bedrock Edition 1.19.50)