【マイクラ】recipeコマンドの使い方・構文・レシピ解放/剥奪を解説【Java版】

この記事はマイクラJava版向けのコマンド解説です
/recipe はクラフトレシピを“作る”コマンドではなく、レシピブックの解放・剥奪を操作するコマンドです
Java版1.21.11以降では、関連するゲームルール名が変わっているので注意してください

こんにちは。ゆずかきです。

マイクラJava版でコマンドを触っていると、たまに「レシピを全部解放したい」「特定のレシピだけ使わせたい」「配布マップでクラフトを段階解放したい」みたいな場面がありますよね。

そういう時に使うのが、今回解説する /recipe コマンドです。

名前だけ見ると「新しいクラフトレシピを作れるコマンドかな?」と思うかもしれませんが、実際の役割は少し違います。
/recipe は、プレイヤーのレシピブックに登録されているレシピを解放したり、逆に剥奪したりするコマンドです。

たとえば、

/recipe give @p *

と入力すると、自分に全レシピを解放できます。
逆に、

/recipe take @p *

と入力すると、自分から全レシピを剥奪できます。

ただし、ここで少し注意です。
普通のサバイバルでは、レシピを知らなくても素材さえ並べればクラフトできます。
なので、本当にクラフト制限として使いたい場合は、ゲームルールの設定と組み合わせる必要があります。

この記事を読めば、次のことが出来るようになります。

  • /recipe give/recipe take の違いが分かります👍
  • 全レシピ解放・個別レシピ解放・レシピ剥奪のコマンド例をそのまま使えます👌
  • Java版1.21.11以降のゲームルール名変更にも対応できます(^^♪
  • 配布マップやサーバーで「特定レシピだけ解放する」仕組みを作れます

それでは、やっていきましょう!

※本記事はマイクラJava版の仕様を前提にしています。
※統合版にも /recipe コマンドは存在しますが、構文や扱えるレシピの仕様がJava版と完全一致ではないため、本記事ではJava版を中心に解説します。
※ゲーム内の仕様については、Minecraft Wiki・Minecraft公式リリースノート・Microsoft公式ドキュメントを参考にしています。


目次

1. recipeコマンドとは
2. recipeコマンドを使う前の注意点
3. recipeコマンドの基本構文
4. 全レシピを解放する方法
5. 指定したレシピだけを解放する方法
6. レシピを剥奪する方法
7. レシピ制限と組み合わせる方法
8. 配布マップ・サーバーでの実用例
9. よくある失敗と対処法
10. まとめ
11. 参考文献

この記事で分かること
・Java版の /recipe コマンドの使い方
・レシピ解放・剥奪・全レシピ解放のコマンド例
・Java版1.21.11以降の minecraft:limited_crafting への対応
・配布マップでクラフトレシピを制御する考え方


1. recipeコマンドとは

/recipe コマンドは、プレイヤーのレシピブックに対して、レシピを解放・剥奪するコマンドです。

もう少し言うと、作業台やかまどなどで使うレシピを、プレイヤーが「知っている状態」にしたり、「知らない状態」に戻したりできます。

レシピブックというのは、インベントリや作業台を開いた時に出てくる、あの緑色の本アイコンですね。
新しい素材を拾った時に、右上に「新しいレシピを解放しました」みたいな通知が出ると思います。
あれをコマンド側から操作できるのが /recipe です。

使い道としては、主にこんな感じです。

  • サバイバルで全レシピを一気に解放したい
  • 検証ワールドでレシピブックを整えたい
  • 配布マップで「進行度に応じてレシピを解放」したい
  • サーバーイベントで、特定のクラフトだけ一時的に禁止したい
  • /gamerule と組み合わせて、未解放レシピをクラフト不可にしたい

個人的には、普通のサバイバルで使うなら「全レシピ解放」が一番分かりやすいと思います。

ただ、配布マップやサーバー運営で使う場合は話が変わります。
/recipe 単体では「レシピブックから見える・見えない」を変えるだけなので、クラフト自体を制限したいなら、関連ゲームルールもセットで理解しておく必要があります。

ここを知らないまま使うと、

「レシピを剥奪したのに、普通にクラフトできるんだけど?」

という状態になりやすいです。
なのでこの記事では、単なるコマンド一覧ではなく、実際に使う時の落とし穴も含めて順番に整理していきますね。


2. recipeコマンドを使う前の注意点

まず、/recipe コマンドを使う前に知っておきたいことを整理します。

Java版向けの記事です

本記事では、マイクラJava版の /recipe コマンドを中心に解説します。

統合版にも /recipe コマンドはありますが、構文やレシピIDの扱いがJava版と完全一致ではありません。
そのため、この記事のコマンドをそのまま統合版にコピペして使う前提では書いていません。

チートまたは権限が必要です

/recipe はコマンドなので、シングルプレイならチートON、マルチプレイなら権限が必要です。

サーバーで使う場合は、OP権限やコマンドブロックの設定も確認してください。
権限が足りないと、構文が合っていても実行できません。

対象はプレイヤーです

/recipe は、プレイヤーのレシピブックを操作するコマンドです。
ゾンビや村人などのMobに対して使うものではありません。

たとえば、対象には次のような指定が使えます。

指定 意味 よく使う場面
@s コマンド実行者 自分だけに適用
@p 最も近いプレイヤー コマンドブロックで近くの人に適用
@a 全プレイヤー サーバー全員に適用
プレイヤー名 指定したプレイヤー 特定の人だけに適用


まずは自分で試すなら、@s@p を使うのが分かりやすいです。
サーバー全体にいきなり @a を使うと全員のレシピ状態が変わるので、そこだけは注意してくださいね。

レシピIDは名前空間付きIDで指定します

指定レシピを操作する場合は、基本的に次のようなIDを使います。

minecraft:crafting_table
minecraft:diamond_sword
minecraft:furnace

minecraft: の部分を名前空間と呼びます。
バニラのレシピなら多くは minecraft: から始まります。

データパックで追加したレシピなら、

my_datapack:custom_recipe

のように、データパック側の名前空間になる場合があります。

※レシピIDはアイテムIDと同じ名前のものも多いですが、必ずしも完全に同じとは限りません。特にデータパックや特殊レシピを扱う場合は、レシピファイル名・進捗報酬・補完候補を確認してください。


3. recipeコマンドの基本構文

Java版の /recipe コマンドの基本構文は、次の2パターンです。

/recipe give <対象> *
/recipe take <対象> *
/recipe give <対象> <レシピID>
/recipe take <対象> <レシピID>

それぞれの意味は下記です。

構文 意味 用途
/recipe give <対象> * 全レシピを解放 検証ワールド・サバイバル補助
/recipe take <対象> * 全レシピを剥奪 配布マップの初期化
/recipe give <対象> <レシピID> 指定レシピを解放 段階解放・イベント報酬
/recipe take <対象> <レシピID> 指定レシピを剥奪 特定クラフトの制限


give は「レシピを与える」、take は「レシピを取り上げる」と覚えればOKです。

ここで重要なのが、最後に付ける * です。
* は「すべてのレシピ」という意味です。

全レシピを一気に解放したい時は、レシピIDの代わりに * を使います。
逆に、1つのレシピだけ操作したい時は、minecraft:diamond_sword のようなレシピIDを指定します。


4. 全レシピを解放する方法

一番よく使うのは、全レシピ解放だと思います。

自分に全レシピを解放する場合は、下記のコマンドです。

/recipe give @s *

近くのプレイヤーに全レシピを解放するなら、

/recipe give @p *

全プレイヤーに解放するなら、

/recipe give @a *

です。

サバイバルで「レシピブックに全部表示しておきたい」というだけなら、このコマンドで大丈夫です。
検証用ワールドを作った時にも便利ですね。

実際に使う場面

たとえば、クリエイティブ検証ワールドで作業台のレシピを確認したい時。
いちいち素材を拾ってレシピ解放するのは面倒なので、先にこのコマンドを打っておくと楽です。

/recipe give @s *

これで、レシピブックに解放済みレシピが一気に追加されます。

体験談
検証ワールドで新アイテムのクラフトを確認する時、筆者はまずこのコマンドを入れることが多いです。
素材の入手順に左右されず、レシピブックから目的のアイテムを探せるので、検証がかなりスムーズになります。

ただし、クラフト可能かどうかは別問題です

ここで勘違いしやすいのですが、レシピを解放しても、材料がなければクラフトはできません。

たとえばダイヤの剣のレシピを解放しても、ダイヤモンドと棒を持っていなければ作れません。
これは当たり前ですが、コマンド初心者さんが混乱しやすい部分です。

/recipe give は、アイテムを配るコマンドではありません。
アイテムそのものを渡したい場合は /give コマンドを使います。

/give @s minecraft:diamond_sword 1

この違いはかなり大事です。

  • /recipe give:レシピブックにレシピを解放する
  • /give:アイテムそのものを渡す

名前が似ているので、ここは分けて覚えておきましょう。


5. 指定したレシピだけを解放する方法

次に、指定したレシピだけを解放する方法です。

構文は下記です。

/recipe give <対象> <レシピID>

たとえば、自分に作業台のレシピを解放するなら、

/recipe give @s minecraft:crafting_table

ダイヤの剣のレシピを解放するなら、

/recipe give @s minecraft:diamond_sword

かまどのレシピを解放するなら、

/recipe give @s minecraft:furnace

となります。

指定レシピ解放は配布マップ向きです

普通のサバイバルでは、全レシピ解放の方が使いやすいです。
ただ、配布マップやサーバーイベントでは、指定レシピだけ解放がかなり便利です。

たとえば、こんな使い方ができます。

  • チュートリアルをクリアしたら作業台レシピを解放
  • ボスを倒したらダイヤ装備レシピを解放
  • 特定エリアに到達したらネザー系アイテムのレシピを解放
  • 職業システムで、鍛冶屋だけが武器レシピを使えるようにする

配布マップを作るなら、レシピ解放は「進行度の演出」としても使えます。
単にアイテムを渡すより、自分でクラフトできるようになるという体験になるので、マップの成長感を作りやすいです。

レシピIDが分からない時の探し方

レシピIDが分からない時は、コマンド入力中の補完を使うのが一番安全です。

チャット欄で、

/recipe give @s minecraft:

まで入力すると、候補が表示されます。
そこから目的のレシピを探すとミスが減ります。

また、データパックのレシピを扱う場合は、基本的にレシピJSONの場所やファイル名も確認しましょう。
Java版のデータパックでは、レシピは名前空間とパスで管理されます。
バニラ以外のレシピは、minecraft: ではなく、データパック側の名前空間になることがあります。

例として、Java版1.21以降のデータパック側で data/yuzukaki/recipe/special_pickaxe.json のようなレシピを作っている場合、レシピIDは次のような形になります。

yuzukaki:special_pickaxe

なお、Java版1.20.6以前のデータパックでは、レシピフォルダ名は recipe ではなく recipes です。

※実際のIDはデータパックのフォルダ構成により変わります。コマンド補完に出てくる候補を確認するのが一番確実です。


6. レシピを剥奪する方法

レシピを剥奪する場合は、give の代わりに take を使います。

全レシピを剥奪するなら、

/recipe take @s *

指定レシピだけ剥奪するなら、

/recipe take @s minecraft:diamond_sword

です。

take は、プレイヤーのレシピブックから対象レシピを取り除きます。
ただし、ここでとても大事な注意点があります。

普通の状態では、レシピを剥奪しても、材料を正しく並べればクラフトできる場合があります。

なぜかというと、通常のJava版サバイバルでは、未解放レシピでも、材料を正しく並べればクラフトできる仕様だからです。
つまり、/recipe take はレシピブックから表示を消すだけで、必ずしもクラフトそのものを禁止するわけではありません。

クラフト禁止にしたいならゲームルールとセットで使う

本当に「未解放レシピはクラフトできない」状態にしたいなら、ゲームルールを使います。

Java版1.12〜1.21.10なら、

/gamerule doLimitedCrafting true

Java版1.21.11以降なら、

/gamerule minecraft:limited_crafting true

です。

これを有効にすると、プレイヤーは解放済みのレシピしかクラフトできない状態になります。
この状態で /recipe take を使うと、剥奪したレシピをクラフトできなくできます。

ただし、バニラのレシピは素材の入手などをきっかけに再び自動解放される場合があります。
配布マップなどで「指定したレシピだけを手動で解放したい」場合は、レシピ用の進捗を先に完了扱いにしてから、レシピを剥奪しておくと管理しやすいです。

/advancement grant @a from minecraft:recipes/root
/recipe take @a *

この順番にすると、バニラのレシピ進捗による自動解放を起こしにくくしたうえで、必要なレシピだけを /recipe give で戻せます。

バージョン別の書き方

Java版1.21.11でゲームルール名が整理され、従来のキャメルケース名から、名前空間付きのスネークケース名に変わりました。
doLimitedCrafting も、1.21.11以降では minecraft:limited_crafting です。

Java版バージョン クラフト制限をONにするコマンド 意味
1.12〜1.21.10 /gamerule doLimitedCrafting true 解放済みレシピだけクラフト可能
1.21.11以降 /gamerule minecraft:limited_crafting true 解放済みレシピだけクラフト可能


もし古い記事を見ながら設定していて、doLimitedCrafting が候補に出ない場合は、バージョンが1.21.11以降である可能性が高いです。
その場合は、minecraft:limited_crafting を使ってください。

体験談
コマンド系の記事は、バージョンをまたぐと急に書き方が変わることがあります。
特にゲームルールは1.21.11で名前が変わっているので、「前に使えたコマンドが出ない」となったら、まずバージョン差分を疑うのが安全です。


7. レシピ制限と組み合わせる方法

ここからは、実際に「レシピ制限」として使う手順を整理します。

やりたいことは、

最初は指定したレシピ以外をクラフトできない状態にして、必要なレシピだけ順番に解放する

という構成です。
配布マップや職業サーバーでよく使う考え方ですね。

1. まずクラフト制限をONにする

Java版1.21.11以降なら、まず下記を実行します。

/gamerule minecraft:limited_crafting true

Java版1.12〜1.21.10なら、下記です。

/gamerule doLimitedCrafting true

これで、解放済みレシピしかクラフトできない設定になります。

2. バニラのレシピ進捗を完了扱いにする

次に、バニラのレシピ進捗を先に完了扱いにします。

/advancement grant @a from minecraft:recipes/root

バニラの多くのレシピは、素材を拾うなどの条件でレシピ用の進捗が達成され、その報酬として解放されます。
そのため、配布マップで手動管理したい場合は、先にレシピ用の進捗を完了扱いにしておくと、素材を拾っただけで想定外のレシピが戻る事故を減らせます。

3. 全レシピを剥奪する

次に、プレイヤーから全レシピを剥奪します。

/recipe take @a *

これで、全プレイヤーのレシピブックがリセットされます。

※既に遊んでいるワールドで実行すると、全員のレシピ状態が変わります。サーバーで使う場合は、必ずテストワールドで確認してから本番に入れましょう。

4. 必要なレシピだけ解放する

最後に、使わせたいレシピだけ解放します。

/recipe give @a minecraft:crafting_table
/recipe give @a minecraft:stick
/recipe give @a minecraft:wooden_pickaxe

このようにすれば、プレイヤーは解放されたレシピだけクラフトできます。

5. 進行度に応じてレシピを追加する

たとえば、石を入手したら石のツールを解放、鉄を入手したら鉄装備を解放、というように段階的に進めることもできます。

例として、イベント報酬で鉄の剣レシピを解放するなら、

/recipe give @p minecraft:iron_sword

ボス撃破後にダイヤの剣レシピを解放するなら、

/recipe give @p minecraft:diamond_sword

といった使い方ができます。

この仕組みは、普通にアイテムを配るよりも「自分で作れるようになった」という感覚を出しやすいです。
RPG風の配布マップを作るなら、かなり相性が良いと思います。


8. 配布マップ・サーバーでの実用例

ここでは、実際に使いやすい形でコマンド例をまとめます。
そのままコピペして使うというより、目的に合わせて調整してくださいね。

初期状態で全レシピを消して、作業台だけ解放する

Java版1.21.11以降の場合です。

/gamerule minecraft:limited_crafting true
/advancement grant @a from minecraft:recipes/root
/recipe take @a *
/recipe give @a minecraft:crafting_table

これで、全プレイヤーは解放済みレシピしかクラフトできない状態になり、作業台レシピだけが解放されます。

Java版1.12〜1.21.10なら、1行目だけ下記に置き換えてください。

/gamerule doLimitedCrafting true

チュートリアルクリアで木の道具を解放する

/recipe give @p minecraft:stick
/recipe give @p minecraft:wooden_pickaxe
/recipe give @p minecraft:wooden_axe
/recipe give @p minecraft:wooden_shovel
/recipe give @p minecraft:wooden_sword

序盤のチュートリアル報酬に向いています。
ただし、実際にクラフトさせるには材料も必要なので、必要に応じて木材や棒も渡してください。

鉄を入手したら鉄ツールを解放する

/recipe give @p minecraft:iron_pickaxe
/recipe give @p minecraft:iron_axe
/recipe give @p minecraft:iron_shovel
/recipe give @p minecraft:iron_sword

採掘進行に合わせてレシピを解放する例です。
「鉄を手に入れたら装備更新できる」という流れを作れます。

特定レシピだけ一時的に禁止する

たとえば、ダイヤの剣レシピだけを剥奪する場合です。

/recipe take @a minecraft:diamond_sword

ただし、これだけではクラフト制限としては不十分です。
本当に禁止したい場合は、クラフト制限のゲームルールもONにしてください。

Java版1.21.11以降:

/gamerule minecraft:limited_crafting true

Java版1.12〜1.21.10:

/gamerule doLimitedCrafting true

この組み合わせで、未解放レシピをクラフト不可にできます。

素材入手などでバニラのレシピが自動解放されるのを避けたい場合は、初期設定の段階で下記も済ませておくと安全です。

/advancement grant @a from minecraft:recipes/root
/recipe take @a *

イベント終了後に全レシピを戻す

イベントや配布マップの検証が終わった後、全レシピを解放して通常プレイ寄りに戻すなら、下記です。

/recipe give @a *

クラフト制限も解除するなら、Java版1.21.11以降では、

/gamerule minecraft:limited_crafting false

Java版1.12〜1.21.10では、

/gamerule doLimitedCrafting false

です。

注意
サーバーで @a を使うと、全員に反映されます。
本番ワールドで使う前に、必ずテスト用のワールドや一人だけの環境で動作確認しましょう。


9. よくある失敗と対処法

最後に、/recipe コマンドで詰まりやすいポイントをまとめます。

レシピを剥奪したのにクラフトできる

一番多いのがこれです。

原因は、クラフト制限のゲームルールがOFFのままになっていることが多いです。
通常のJava版では、未解放レシピでも素材を正しく並べればクラフトできる場合があります。

本当にクラフト不可にしたいなら、下記をONにしてください。

Java版1.21.11以降:

/gamerule minecraft:limited_crafting true

Java版1.12〜1.21.10:

/gamerule doLimitedCrafting true

そのうえで、対象レシピを剥奪します。

/recipe take @s minecraft:diamond_sword

剥奪したレシピがまた解放される

バニラのレシピは、素材の入手などをきっかけに自動で解放される場合があります。
配布マップなどで「運営側が指定したレシピだけを解放したい」場合は、初期設定でレシピ用の進捗を完了扱いにしてから、全レシピを剥奪しておくと管理しやすいです。

/advancement grant @a from minecraft:recipes/root
/recipe take @a *

その後、必要なレシピだけを /recipe give で戻します。

/recipe give @a minecraft:crafting_table

doLimitedCrafting が候補に出ない

Java版1.21.11以降では、ゲームルール名が変わっています。
doLimitedCrafting ではなく、次の名前を使ってください。

/gamerule minecraft:limited_crafting true

旧バージョンの記事を見ながら作業していると、ここで詰まりやすいです。

レシピIDを入れても赤文字になる

レシピIDが間違っている可能性があります。

確認ポイントは下記です。

  • minecraft: を付け忘れていないか
  • アイテムIDとレシピIDを混同していないか
  • データパックの名前空間が違っていないか
  • そのレシピが現在のワールドに読み込まれているか
  • バージョン違いで存在しないレシピを指定していないか

レシピIDは、できればコマンド補完から選ぶのが安全です。
手入力だけでやると、アンダーバーやスペル違いで失敗しやすいです。

* がうまく使えない

* は、全レシピを対象にする時に使います。

正しい例:

/recipe give @s *
/recipe take @s *

間違いやすい例:

/recipe give * @s

順番が違うと失敗します。
give/take対象レシピIDまたは* の順番で覚えておきましょう。

コマンドブロックで対象がズレる

コマンドブロックで @p を使うと、「コマンドブロックに一番近いプレイヤー」が対象になります。
意図したプレイヤーではない人にレシピが解放されることもあります。

配布マップで特定の人だけに反映させたい場合は、実行位置やセレクター条件を慎重に設定してください。

例:半径5ブロック以内のプレイヤーだけに作業台レシピを解放する

/recipe give @a[distance=..5] minecraft:crafting_table

イベント部屋やチュートリアル地点で使うなら、このように範囲指定すると事故が減ります。

マルチで一人だけ反映されない

対象プレイヤーがオンラインではない、またはセレクター条件に合っていない可能性があります。

/recipe は、基本的に対象プレイヤーに対して実行されます。
サーバー全員に反映したつもりでも、その時ログインしていない人には想定通り反映されない運用になることがあります。

ログイン時にレシピ状態を整えたい場合は、データパックの進捗やfunction、サーバー側の仕組みと組み合わせて管理する方が安定します。

チェックリスト

うまくいかない時は、下の項目を順番に確認してください。

  • [ ] Java版のコマンドとして実行しているか?
  • [ ] チートまたは権限はあるか?
  • [ ] 対象プレイヤーはオンラインか?
  • [ ] give/take、対象、レシピIDの順番は合っているか?
  • [ ] 全レシピ指定の * を最後に置いているか?
  • [ ] レシピIDは正しいか?
  • [ ] クラフト制限目的なら、ゲームルールをONにしているか?
  • [ ] Java版1.21.11以降なら minecraft:limited_crafting を使っているか?
  • [ ] 自動解放を避けたいなら、レシピ用の進捗を先に完了扱いにしているか?

このあたりを確認すれば、大半のミスは潰せると思います。


10. まとめ

以上、マイクラJava版の /recipe コマンドについて解説しました。

要点を整理すると、

  • /recipe give はレシピを解放する
  • /recipe take はレシピを剥奪する
  • * を使うと全レシピが対象になる
  • 指定レシピだけ操作したい時は minecraft:diamond_sword のようなレシピIDを使う
  • レシピ剥奪だけでは、クラフト自体を完全に禁止できない場合がある
  • クラフト制限にはゲームルールとの組み合わせが必要
  • Java版1.21.11以降は doLimitedCrafting ではなく minecraft:limited_crafting を使う
  • 配布マップで手動管理したい場合は、レシピ用の進捗による自動解放にも注意する

このあたりを覚えておけば、普通のサバイバル検証から、配布マップ・サーバーイベントまでかなり使いやすくなります。

特に大事なのは、/recipe はアイテムを渡すコマンドではなく、レシピブックを操作するコマンドという点です。
アイテムが欲しいなら /give、レシピを解放したいなら /recipe give、クラフト制限までしたいならゲームルールとセット。
この3つを分けて考えると、混乱しにくいです。

よかったら、まずは検証ワールドで下記を試してみてください。

/recipe give @s *

これで全レシピ解放の挙動が分かります。
その後、クラフト制限を試したい場合は、Java版1.21.11以降なら下記です。

/gamerule minecraft:limited_crafting true
/advancement grant @s from minecraft:recipes/root
/recipe take @s *
/recipe give @s minecraft:crafting_table

この状態で、解放したレシピだけクラフトできるか確認すると、/recipe コマンドの役割がかなり理解しやすいと思います。

では、本日はここまでで終わります。
最後までご覧いただき、ありがとうございました。
柚子クラでは他にもコマンドやサバイバル攻略を紹介しているので、是非ご覧くださいね(^^♪


11. 参考文献

この記事を書くにあたり、以下の公式資料・コミュニティWikiのページを参考にしています。