この記事では、「ゲーム参加時に自動でウェルカム演出するDatapack」を一緒に作りながら、.mcfunction でよく使う基本コマンド10個を覚えます。コマンドを並べて眺めるのではなく、実際に動くものを作りながら習得しましょう。
対応バージョン:Java Edition 1.21.11
前提知識
以下の内容をあらかじめ理解しておくと、スムーズに進められます。
- Datapackの基本フォルダ構成(Datapackの基本的なフォルダ構成)
今回作るもの
プレイヤーがサーバー(またはワールド)に参加したとき、自動で以下の演出が走るDatapackを作ります。
- チャットにウェルカムメッセージを表示する
- スターターアイテム(パン5個)を渡す
- 30秒間スピード効果を付与する
- レベルアップ音を鳴らして演出を盛り上げる
これを完成させる過程で、10個のコマンドが自然と身につきます。
ステップ1:フォルダ構成を作る
まず以下の構成でファイルを用意してください。welcome.mcfunction がメインの作業場所になります。
my_datapack/
├── pack.mcmeta
└── data/
└── my_datapack/
├── function/
│ └── welcome.mcfunction
└── tags/
└── function/
└── minecraft/
└── load.json
load.json の中身は以下のように書きます。これでワールドがロードされるたびに welcome.mcfunction が呼び出されます。
{
"values": ["my_datapack:welcome"]
}

ステップ2:ウェルカムメッセージを表示する
welcome.mcfunction を開いて、まず最初の1行を書きます。
say ようこそ!このサーバーに参加してくれてありがとう。
say は全プレイヤーのチャット欄にメッセージを送るコマンドです。手軽ですが、送信者名(サーバー名や実行者名)が頭についてしまいます。より見た目にこだわりたいときは tellraw に切り替えましょう。
tellraw @a [{"text":"ようこそ!","color":"gold","bold":true},{"text":"このサーバーに参加してくれてありがとう。","color":"white"}]
tellraw はJSONテキストを使って色・太字・クリックイベントなど細かい装飾ができます。@a は「全プレイヤー」を指定するセレクターです。本番の演出にはこちらを使いましょう。
ステップ3:スターターアイテムを渡す
続けて次の行を追加します。
give @a minecraft:bread 5
give はアイテムを指定のプレイヤーに渡すコマンドです。@a で全員に配れます。アイテムIDは minecraft: を省略して bread とだけ書いても動きますが、名前空間付きで書くのが確実です。
ステップ4:ステータス効果を付与する
effect give @a minecraft:speed 30 1 true
全プレイヤーに30秒間・レベル2のスピード効果を付与します。引数の意味は順に「対象」「エフェクトID」「秒数」「レベル(0始まり)」「パーティクル非表示」です。末尾を true にするとパーティクルが出ないので、演出の邪魔になりません。
ステップ5:演出サウンドを鳴らす
playsound minecraft:entity.player.levelup master @a ~ ~ ~ 1 1
全プレイヤーにレベルアップ音を再生します。引数は「サウンドID」「カテゴリ(master)」「対象」「X Y Z(チルダ3つで実行位置)」「音量」「ピッチ」の順です。このコマンドを加えるだけで、演出の完成度がぐっと上がります。
ステップ6:ここまでの全体像を確認する
welcome.mcfunction はここまで次のようになっているはずです。
tellraw @a [{"text":"ようこそ!","color":"gold","bold":true},{"text":"このサーバーに参加してくれてありがとう。","color":"white"}]
give @a minecraft:bread 5
effect give @a minecraft:speed 30 1 true
playsound minecraft:entity.player.levelup master @a ~ ~ ~ 1 1
ゲームに入って /reload してからワールドをロードし直すか、/function my_pack:welcome を実行してみてください。4つの演出がまとめて動けば成功です。


補足:playsound の音が聞こえないときは実行者を確認しよう
/reload 経由でファンクションが実行されるとき、コマンドの実行者はサーバー(システム)になります。playsound は実行者の位置を基準に音を届けるコマンドなので、実行者がサーバーだと音の発生源が定まらず、プレイヤーには聞こえません。
一方、チャット欄から /function my_pack:welcome を直接実行した場合は、実行者がそのプレイヤー本人になります。実行者の位置が確定しているため、playsound の音がきちんと届きます。
「/reload したら音が聞こえなくなった」と感じたときは、実行者の違いが原因です。動作確認は /function コマンドで行うのがおすすめです。
実行者を確認したいときは say が便利です。say はメッセージの先頭に送信者名を表示するため、誰が実行したかがチャット欄で一目でわかります。/reload 後に say を仕込んでいれば [Server] と表示され、/function で実行すれば自分のプレイヤー名が表示されます。挙動がおかしいと感じたときの手軽なデバッグ手段として覚えておきましょう。

ステップ7:応用コマンドも覚えておこう
上記4コマンドで最低限の演出は完成しました。以下の6コマンドも .mcfunction でよく登場するので、使い方を把握しておきましょう。
tp ― テレポート
tp @p 0 64 0
最も近いプレイヤーを指定座標に移動させます。スタート地点に強制移動させたいときに使います。チルダ(~)で相対座標も指定できます。
setblock ― ブロックを1つ置く
setblock 0 63 0 minecraft:stone
指定座標にブロックを設置します。自動ドアや仕掛けのON/OFFをコマンドで制御するときの基本です。
fill ― 範囲をブロックで埋める
fill 0 60 0 10 65 10 minecraft:air
2点間の全ブロックを指定ブロックに置き換えます。エリアのリセットや自動生成に使います。setblock の範囲版と覚えてください。
summon ― エンティティを召喚する
summon minecraft:villager ~ ~ ~
実行位置にエンティティを召喚します。ガイドNPCや演出用のモブを出すときに使います。
kill ― エンティティを削除する
kill @e[type=minecraft:villager]
条件に合うエンティティを一括削除します。summon と組み合わせて「古いNPCを消してから新しく出す」という使い方が定番です。kill @e と書くとプレイヤーも消えるので注意してください。
effect clear ― 効果を消す
effect clear @a
全プレイヤーのステータス効果を全消去します。effect give とセットで「効果をリセットしてから付与する」処理を作るときに使います。
まとめ
- 1つのDatapackを作りながら、
tellraw/give/effect give/playsoundの4コマンドで演出が完成した sayはデバッグ向き、本番演出にはtellrawを使うと見た目を細かくコントロールできるtp/setblock/fillでワールドの状態を動的に変えられるsummonとkillはセットで使うとエンティティ管理がしやすい- コマンドは「説明を読む」より「動くものを作りながら覚える」方が定着しやすい
次の記事では、今回作ったウェルカム演出Datapackに参加回数のカウンターを追加します。scoreboard コマンドを使ってプレイヤーごとに数値を記録する方法を、同じDatapackを育てながら覚えましょう。
