Minecraft Wiki
(180.4.17.72 (トーク) による編集を Crtke による直前の版へ差し戻しました)
タグ: 巻き戻し
(俺)
タグ: ビジュアルエディタ
1行目: 1行目:
 
{{Exclusive|Java}}
 
{{Exclusive|Java}}
   
このチュートリアルでは[[データパック]]の作り方を説明する。
+
このチュートリアルでは[[データパック|デートパーク]]の作り方を説明する。
   
 
{{TOC|right}}
 
{{TOC|right}}
7行目: 7行目:
 
== はじめに ==
 
== はじめに ==
   
デークは、[[関数 (Java Edition)|関数]]、[[ルートテーブル]]、ワールドの[[構造物]]、[[進捗]]、[[レシピ (システム)|レシピ]]、[[タグ]]を追加/変更するために用いられる。
+
デークは、[[関数 (Java Edition)|関数]]、[[ルートテーブル]]、ワールドの[[構造物]]、[[進捗]]、[[レシピ (システム)|レシピ]]、[[タグ]]を追加/変更するために用いられる。
   
 
=== 禁止事項 ===
 
=== 禁止事項 ===
   
デークを作成する前に、いくつか「してはいけないこと」が存在する:
+
デークを作成する前に、いくつか「してはいけないこと」が存在する:
 
* [[Mojang]]による''Minecraft''の利用規約を犯してはならない。
 
* [[Mojang]]による''Minecraft''の利用規約を犯してはならない。
 
* Mojangから''Minecraft''を購入せずにプレイできるような変更を施したり、そのようなものを配布してはならない。
 
* Mojangから''Minecraft''を購入せずにプレイできるような変更を施したり、そのようなものを配布してはならない。
 
* ''Minecraft''を逆コンパイルしたソースコードを配布してはならない。
 
* ''Minecraft''を逆コンパイルしたソースコードを配布してはならない。
   
== デークを作る ==
+
== デークを作る ==
   
デークを作成するには、まずワールドフォルダ内の <code>datapacks</code> フォルダに移動する。
+
デークを作成するには、まずワールドフォルダ内の <code>datapacks</code> フォルダに移動する。
   
 
ワールドフォルダは、ゲームディレクトリ(デフォルトでは[[.minecraft]])内の <code>saves</code> フォルダに存在する。
 
ワールドフォルダは、ゲームディレクトリ(デフォルトでは[[.minecraft]])内の <code>saves</code> フォルダに存在する。
24行目: 24行目:
 
* [[サーバー]]では、ルートディレクトリ([[server.properties]]の置かれている所)に移動し、<code>world</code> フォルダに入る。
 
* [[サーバー]]では、ルートディレクトリ([[server.properties]]の置かれている所)に移動し、<code>world</code> フォルダに入る。
   
<code>datapacks</code> フォルダに入ったら、好きな名前のフォルダを作る。それがこれから作るデークの名前となる。フォルダを作ったらその中に入る。
+
<code>datapacks</code> フォルダに入ったら、好きな名前のフォルダを作る。それがこれから作るデークの名前となる。フォルダを作ったらその中に入る。
   
フォルダに入ってまずすべきなのは、<code>pack.mcmeta</code> ファイルを作成することである。これは''Minecraft''にこれから作るデークを認識させるのに必要となるファイルである。
+
フォルダに入ってまずすべきなのは、<code>pack.mcmeta</code> ファイルを作成することである。これは''Minecraft''にこれから作るデークを認識させるのに必要となるファイルである。
   
 
=== MCMETAファイルを作る ===
 
=== MCMETAファイルを作る ===
32行目: 32行目:
 
{{see also|データパック#pack.mcmeta}}
 
{{see also|データパック#pack.mcmeta}}
   
MCMETAファイルを作るには、デークフォルダの中で右クリックして新規テキストドキュメントを作成し、そのファイル名を <code>pack.mcmeta</code> にする。
+
MCMETAファイルを作るには、デークフォルダの中で右クリックして新規テキストドキュメントを作成し、そのファイル名を <code>pack.mcmeta</code> にする。
   
 
;注意
 
;注意
43行目: 43行目:
 
==== テキストエディタ ====
 
==== テキストエディタ ====
   
どのテキストエディタを使っても良いのだが、ここではNotepad++をおすすめしたい。無料で、<code>mcmeta</code> ほかデーク内の多くのファイルで使われる[[JSON]]をはじめとした多くのプログラミング言語のシンタックスハイライトに対応しているからだ。
+
どのテキストエディタを使っても良いのだが、ここではNotepad++をおすすめしたい。無料で、<code>mcmeta</code> ほかデーク内の多くのファイルで使われる[[JSON]]をはじめとした多くのプログラミング言語のシンタックスハイライトに対応しているからだ。
 
Notepad++は[https://notepad-plus-plus.org/ ここ]からダウンロードできる。
 
Notepad++は[https://notepad-plus-plus.org/ ここ]からダウンロードできる。
   
63行目: 63行目:
   
 
;注意
 
;注意
このファイルはJSONで書かれている。このチュートリアルではJSONフォーマットに関する詳細には触れないが、レイアウトの仕方については注意すること。'''特に、引用符、コロン、中括弧、角括弧を忘れないように注意。これらが欠けていると、デークが正しく機能しない可能性がある'''。ファイルをチェックするには、[https://jsonlint.com JSONLint]といったJSONバリデータを使うとよい。
+
このファイルはJSONで書かれている。このチュートリアルではJSONフォーマットに関する詳細には触れないが、レイアウトの仕方については注意すること。'''特に、引用符、コロン、中括弧、角括弧を忘れないように注意。これらが欠けていると、デークが正しく機能しない可能性がある'''。ファイルをチェックするには、[https://jsonlint.com JSONLint]といったJSONバリデータを使うとよい。
   
=== デークをテストする ===
+
=== デークをテストする ===
   
<code>pack.mcmeta</code> を作ったらゲーム内でテストしてみよう。ワールドを開くか、もしくは既にワールド内にいるのであれば {{cmd|reload}} を実行し、その後 {{cmd|datapack list}} を実行しよう。そこには <code>[vanilla]</code> と <code>[file/(your data pack's name)]</code> の2つのエントリが表示されるはずだ。ここで <code>(your data pack's name)</code> はデークフォルダの名前である。自分のデークのエントリにマウスをホバーすると、<code>pack.mcmeta</code> の {{nbt|string}}{{nbt|compound|description}} に書いた説明が表示されるはずだ。
+
<code>pack.mcmeta</code> を作ったらゲーム内でテストしてみよう。ワールドを開くか、もしくは既にワールド内にいるのであれば {{cmd|reload}} を実行し、その後 {{cmd|datapack list}} を実行しよう。そこには <code>[vanilla]</code> と <code>[file/(your data pack's name)]</code> の2つのエントリが表示されるはずだ。ここで <code>(your data pack's name)</code> はデークフォルダの名前である。自分のデークのエントリにマウスをホバーすると、<code>pack.mcmeta</code> の {{nbt|string}}{{nbt|compound|description}} に書いた説明が表示されるはずだ。
   
 
ここまで確認できたら、次の手順に進もう。
 
ここまで確認できたら、次の手順に進もう。
73行目: 73行目:
 
==== うまくいかなかった場合 ====
 
==== うまくいかなかった場合 ====
   
自分のデークが表示されなかった場合、<code>pack.mcmeta</code> ファイルに誤りがないかチェックしよう。波括弧 {{code|<nowiki>{}</nowiki>}}、コンマ {{code|,}}、コロン {{code|:}}、引用符、もしくは角括弧 {{code|<nowiki>[]</nowiki>}} が欠落していないか。括弧や引用符は開いたら閉じる必要があるのだ。
+
自分のデークが表示されなかった場合、<code>pack.mcmeta</code> ファイルに誤りがないかチェックしよう。波括弧 {{code|<nowiki>{}</nowiki>}}、コンマ {{code|,}}、コロン {{code|:}}、引用符、もしくは角括弧 {{code|<nowiki>[]</nowiki>}} が欠落していないか。括弧や引用符は開いたら閉じる必要があるのだ。
   
 
=== 名前付け ===
 
=== 名前付け ===
   
デークフォルダの中の、<code>pack.mcmeta</code> と同じ階層に <code>data</code> フォルダを作成しよう。この <code>data</code> フォルダの中に、さらに名前空間となるフォルダを作成することになる。
+
デークフォルダの中の、<code>pack.mcmeta</code> と同じ階層に <code>data</code> フォルダを作成しよう。この <code>data</code> フォルダの中に、さらに名前空間となるフォルダを作成することになる。
   
デーク内のエンティティは <code>namespace:path</code> の形式の名前空間IDを持つ。これに対応するファイルは <code>data/namespace/(data_type)/path.(suffix)</code> に置かれる。ここで、ファイルパス中の <code>/</code> はフォルダの区切り文字に変換される。
+
デーク内のエンティティは <code>namespace:path</code> の形式の名前空間IDを持つ。これに対応するファイルは <code>data/namespace/(data_type)/path.(suffix)</code> に置かれる。ここで、ファイルパス中の <code>/</code> はフォルダの区切り文字に変換される。
   
 
例:
 
例:
87行目: 87行目:
 
==== 使用できる文字 ====
 
==== 使用できる文字 ====
   
デーク内の、名前空間、ファイルパス、フォルダ名、ファイル名に使用できるのは以下の文字である:
+
デーク内の、名前空間、ファイルパス、フォルダ名、ファイル名に使用できるのは以下の文字である:
   
 
• <code>0123456789</code> 数字
 
• <code>0123456789</code> 数字
107行目: 107行目:
 
衝突を避け予期しない上書きを防ぐため、ゲーム内のほとんどのオブジェクトは名前空間IDを持つ。
 
衝突を避け予期しない上書きを防ぐため、ゲーム内のほとんどのオブジェクトは名前空間IDを持つ。
   
例えば、2つのデークが2つのミニゲームを''Minecraft''に追加する &mdash; いずれも <code>start</code> という名前の[[関数 (Java Edition)|関数]]を持つ &mdash; とき、名前空間が無いと、これら2つの関数はクラッシュし、ミニゲームも壊れてしまうだろう。それぞれ異なる名前空間 <code>minigame_one</code> と <code>minigame_two</code> を指定していれば、これらの関数はそれぞれ <code>minigame_one:start</code> および <code>minigame_two:start</code> となり、競合は起こらない。
+
例えば、2つのデークが2つのミニゲームを''Minecraft''に追加する &mdash; いずれも <code>start</code> という名前の[[関数 (Java Edition)|関数]]を持つ &mdash; とき、名前空間が無いと、これら2つの関数はクラッシュし、ミニゲームも壊れてしまうだろう。それぞれ異なる名前空間 <code>minigame_one</code> と <code>minigame_two</code> を指定していれば、これらの関数はそれぞれ <code>minigame_one:start</code> および <code>minigame_two:start</code> となり、競合は起こらない。
   
 
ほとんどの場合、''Minecraft''が {{cmd|function}} などのためにIDを必要とする時は名前空間も指定する必要がある。名前空間を指定しないと、<code>minecraft</code> が指定されたものとして扱われる。
 
ほとんどの場合、''Minecraft''が {{cmd|function}} などのためにIDを必要とする時は名前空間も指定する必要がある。名前空間を指定しないと、<code>minecraft</code> が指定されたものとして扱われる。
113行目: 113行目:
 
新しく追加するものには必ず自分の名前空間を使用すること。他の名前空間は、明示的に上書きする場合、または[[タグ]]に追加したい場合にのみ使用すること。
 
新しく追加するものには必ず自分の名前空間を使用すること。他の名前空間は、明示的に上書きする場合、または[[タグ]]に追加したい場合にのみ使用すること。
   
たとえば、''Minecraft''は <code>minecraft</code> 名前空間を使用する。この名前空間は、デークで既存のMinecraftデータを上書きしたり既存のMinecraftタグにエントリを追加する必要がある場合にのみ使用すること。
+
たとえば、''Minecraft''は <code>minecraft</code> 名前空間を使用する。この名前空間は、デークで既存のMinecraftデータを上書きしたり既存のMinecraftタグにエントリを追加する必要がある場合にのみ使用すること。
   
 
=== 関数 ===
 
=== 関数 ===
255行目: 255行目:
 
これは固定レシピの簡単な例であり、<code>type</code> に <code>crafting_shaped</code> が指定されている。<code>pattern</code> はクラフトレシピの形を指定するためのリストである。最大で3つの文字列が含まれ、それぞれの文字列がクラフトグリッドの1行を表している。これら文字列は最大3文字で、各々の文字がクラフトグリッドの1マスを表している。3行3文字全てを指定する必要はないが、各文字列の文字数は等しくなければならない。空のマスを指定するには空白を使う。
 
これは固定レシピの簡単な例であり、<code>type</code> に <code>crafting_shaped</code> が指定されている。<code>pattern</code> はクラフトレシピの形を指定するためのリストである。最大で3つの文字列が含まれ、それぞれの文字列がクラフトグリッドの1行を表している。これら文字列は最大3文字で、各々の文字がクラフトグリッドの1マスを表している。3行3文字全てを指定する必要はないが、各文字列の文字数は等しくなければならない。空のマスを指定するには空白を使う。
   
<code>key</code> は、<code>pattern</code> のどの文字にどの項目を使用するかを指定するCompound型の値である。これは、<code>item</code> でアイテムIDを指定するか、<code>tag</code> でデークのタグを指定するかのいずれかで記述する。
+
<code>key</code> は、<code>pattern</code> のどの文字にどの項目を使用するかを指定するCompound型の値である。これは、<code>item</code> でアイテムIDを指定するか、<code>tag</code> でデークのタグを指定するかのいずれかで記述する。
   
 
<code>result</code> はその名が示す通り、クラフト結果として得られるアイテムを指定する。<code>count</code> は得られるアイテムの個数を指定する。
 
<code>result</code> はその名が示す通り、クラフト結果として得られるアイテムを指定する。<code>count</code> は得られるアイテムの個数を指定する。
353行目: 353行目:
 
== 関連項目 ==
 
== 関連項目 ==
   
* [[データパック]]
+
* [[データパック|デートパーク]]
 
* [[リソースパック]]
 
* [[リソースパック]]
* [[チュートリアル/データパックの読み込み]]
+
* [[チュートリアル/データパックの読み込み|チュートリアル/デートパークの読み込み]]
   
 
{{Data Packs}}
 
{{Data Packs}}

2019年11月6日 (水) 01:35時点における版

Information icon
この項目はJava Edition限定の要素です。 

このチュートリアルではデートパークの作り方を説明する。

はじめに

デートパークは、関数ルートテーブル、ワールドの構造物進捗レシピタグを追加/変更するために用いられる。

禁止事項

デートパークを作成する前に、いくつか「してはいけないこと」が存在する:

  • MojangによるMinecraftの利用規約を犯してはならない。
  • MojangからMinecraftを購入せずにプレイできるような変更を施したり、そのようなものを配布してはならない。
  • Minecraftを逆コンパイルしたソースコードを配布してはならない。

デートパークを作る

デートパークを作成するには、まずワールドフォルダ内の datapacks フォルダに移動する。

ワールドフォルダは、ゲームディレクトリ(デフォルトでは.minecraft)内の saves フォルダに存在する。

  • シングルプレイでは、ワールドを選択し、「編集」をクリックし、「ワールドフォルダーを開く」をクリックする。
  • サーバーでは、ルートディレクトリ(server.propertiesの置かれている所)に移動し、world フォルダに入る。

datapacks フォルダに入ったら、好きな名前のフォルダを作る。それがこれから作るデートパークの名前となる。フォルダを作ったらその中に入る。

フォルダに入ってまずすべきなのは、pack.mcmeta ファイルを作成することである。これはMinecraftにこれから作るデートパークを認識させるのに必要となるファイルである。

MCMETAファイルを作る

MCMETAファイルを作るには、デートパークフォルダの中で右クリックして新規テキストドキュメントを作成し、そのファイル名を pack.mcmeta にする。

注意

ファイルの拡張子が .txt ではなく .mcmeta であるのを確認すること。ファイルが使えなくなるという旨の警告を受けるだろうが、これはファイル名を pack.mcmeta に正しく変更できた証拠ともいえる。

もしあなたがMicrosoft Windowsユーザーであり、ファイル拡張子が見えない状態なら、エクスプローラーの「表示」メニューからファイル名拡張子のチェックボックスにチェックを入れれば、ファイル拡張子が見えるようになる。

FileExtensions

テキストエディタ

どのテキストエディタを使っても良いのだが、ここではNotepad++をおすすめしたい。無料で、mcmeta ほかデートパーク内の多くのファイルで使われるJSONをはじめとした多くのプログラミング言語のシンタックスハイライトに対応しているからだ。 Notepad++はここからダウンロードできる。

注意: ほとんどのテキストエディタでは拡張子 mcmeta をJSONファイルと認識しない。よって、手動でエディタの設定を変更する必要がある。

pack.mcmeta の内容

pack.mcmeta を開き、以下の内容をコピー&ペーストすること:

{
  "pack": {
    "pack_format": 4,
    "description": "Tutorial Data Pack"
  }
}

 pack_format は現時点では特に制限が無いので何の数字でもよい。 description は任意の文字列もしくは生のJSONテキストである。これは /datapack list の出力にマウスをホバーしたときに表示される内容である。

注意

このファイルはJSONで書かれている。このチュートリアルではJSONフォーマットに関する詳細には触れないが、レイアウトの仕方については注意すること。特に、引用符、コロン、中括弧、角括弧を忘れないように注意。これらが欠けていると、デートパークが正しく機能しない可能性がある。ファイルをチェックするには、JSONLintといったJSONバリデータを使うとよい。

デートパークをテストする

pack.mcmeta を作ったらゲーム内でテストしてみよう。ワールドを開くか、もしくは既にワールド内にいるのであれば /reload を実行し、その後 /datapack list を実行しよう。そこには [vanilla][file/(your data pack's name)] の2つのエントリが表示されるはずだ。ここで (your data pack's name) はデートパークフォルダの名前である。自分のデートパークのエントリにマウスをホバーすると、pack.mcmeta description に書いた説明が表示されるはずだ。

ここまで確認できたら、次の手順に進もう。

うまくいかなかった場合

自分のデートパークが表示されなかった場合、pack.mcmeta ファイルに誤りがないかチェックしよう。波括弧 {}、コンマ ,、コロン :、引用符、もしくは角括弧 [] が欠落していないか。括弧や引用符は開いたら閉じる必要があるのだ。

名前付け

デートパークフォルダの中の、pack.mcmeta と同じ階層に data フォルダを作成しよう。この data フォルダの中に、さらに名前空間となるフォルダを作成することになる。

デートパーク内のエンティティは namespace:path の形式の名前空間IDを持つ。これに対応するファイルは data/namespace/(data_type)/path.(suffix) に置かれる。ここで、ファイルパス中の / はフォルダの区切り文字に変換される。

例:

  • IDが dummy:foo_proof/barアイテムタグdata/dummy/tags/item/foo_proof/bar.json に置かれる
  • IDが foo:handler/bar_call関数data/foo/functions/handler/bar_call.mcfunction に置かれる

使用できる文字

デートパーク内の、名前空間、ファイルパス、フォルダ名、ファイル名に使用できるのは以下の文字である:

0123456789 数字

abcdefghijklmnopqrstuvwxyz 英小文字

_ 下線

- ハイフン/マイナス

/ スラッシュ/フォルダ区切り文字(名前空間では使用できない)

. ピリオド(名前空間では使用できない)

名付け方法として推奨されるのは、lower_case_with_underscores のような英小文字を下線で連結したもので、小文字スネークケースと呼ばれる。

名前空間

衝突を避け予期しない上書きを防ぐため、ゲーム内のほとんどのオブジェクトは名前空間IDを持つ。

例えば、2つのデートパークが2つのミニゲームをMinecraftに追加する — いずれも start という名前の関数を持つ — とき、名前空間が無いと、これら2つの関数はクラッシュし、ミニゲームも壊れてしまうだろう。それぞれ異なる名前空間 minigame_oneminigame_two を指定していれば、これらの関数はそれぞれ minigame_one:start および minigame_two:start となり、競合は起こらない。

ほとんどの場合、Minecraft/function などのためにIDを必要とする時は名前空間も指定する必要がある。名前空間を指定しないと、minecraft が指定されたものとして扱われる。

新しく追加するものには必ず自分の名前空間を使用すること。他の名前空間は、明示的に上書きする場合、またはタグに追加したい場合にのみ使用すること。

たとえば、Minecraftminecraft 名前空間を使用する。この名前空間は、デートパークで既存のMinecraftデータを上書きしたり既存のMinecraftタグにエントリを追加する必要がある場合にのみ使用すること。

関数

詳細は「関数 (Java Edition)」を参照

関数はコマンドを順番に並べたものである。

関数を追加するには、まず名前空間フォルダの中に functions フォルダを作成する。次に、このフォルダかそのサブフォルダに (function_name).mcfunction というファイルを作成する。これが関数ファイルとなる。これはゲーム中で (namespace):(name) のように参照できる。サブフォルダに置いた場合は (namespace):(subfolder1)/(subfolder2)/.../(name) となる。

ルートテーブル

詳細は「ルートテーブル」を参照

ルートテーブルは、Mobが死んだときに何をドロップするか、またはチェストのようなコンテナが最初に開かれた時に何を生成するかを決めるものである。

ルートテーブルを追加するには、まず名前空間フォルダの中に loot_tables フォルダを作成する。次に、このフォルダかそのサブフォルダに (loot_table_name).json というファイルを作成する。これがルートテーブルファイルとなる。これはゲーム中で (namespace):(name) のように参照できる。サブフォルダに置いた場合は (namespace):(subfolder1)/(subfolder2)/.../(name) となる。

以下に牛のルートテーブルの例を示す:

    {
        "pools": [
            {
                "rolls": 1,
                "entries": [
                    {
                        "type": "item",
                        "name": "minecraft:leather",
                        "weight": 1,
                        "functions": [
                            {
                                "function": "set_count",
                                "count": {
                                    "min": 0,
                                    "max": 2
                                }
                            },
                            {
                                "function": "looting_enchant",
                                "count": {
                                    "min": 0,
                                    "max": 1
                                }
                            }
                        ]
                    }
                ]
            },
            {
                "rolls": 1,
                "entries": [
                    {
                        "type": "item",
                        "name": "minecraft:beef",
                        "weight": 1,
                        "functions": [
                            {
                                "function": "set_count",
                                "count": {
                                    "min": 1,
                                    "max": 3
                                }
                            },
                            {
                                "function": "furnace_smelt",
                                "conditions": [
                                    {
                                        "condition": "entity_properties",
                                        "entity": "this",
                                        "properties": {
                                            "on_fire": true
                                        }
                                    }
                                ]
                            },
                            {
                                "function": "looting_enchant",
                                "count": {
                                    "min": 0,
                                    "max": 1
                                }
                            }
                        ]
                    }
                ]
            }
        ]
    }

それぞれのタグが何を意味するかはルートテーブルを参照。ここにはバニラのルートテーブルのリストも載っている。

構造物

構造物はストラクチャーブロックジグソーブロックと一緒に使用したり、バニラのMinecraftの構造物の見た目を上書きしたりするのに用いられる。NBTフォーマットで保存されるので、ストラクチャーブロックでNBTファイルを作ったり、MCEditのようなサードパーティープログラムの出力を利用したりできる。

構造物を追加するには、まず名前空間フォルダの中に structures フォルダを作成する。次に、このフォルダかそのサブフォルダにストラクチャーファイルを作成する。このストラクチャーファイルはゲーム中で (namespace):(name) のように参照できる。サブフォルダに置いた場合は (namespace):(subfolder1)/(subfolder2)/.../(name) となる。

進捗

詳細は「進捗」を参照

進捗は、プレイヤーがコンプリートし様々な報奨が与えられるものである。

進捗を追加するには、まず名前空間フォルダの中に advancements フォルダを作成する。次に、このフォルダかそのサブフォルダに (advancement_name).json というファイルを作成する(ファイル名に空白を含めてはならない)。これが進捗ファイルとなる。これはゲーム中で (namespace):(name) のように参照できる。サブフォルダに置いた場合は (namespace):(subfolder1)/(subfolder2)/.../(name) となる。

レシピ

詳細は「レシピ (システム)」を参照

レシピはプレイヤーがアイテムをクラフトできるようにするものである。

レシピを追加するには、まず名前空間フォルダの中に recipes フォルダを作成する。次に、このフォルダかそのサブフォルダに (recipe_name).json というファイルを作成する。これがレシピファイルとなる。これはゲーム中で (namespace):(name) のように参照できる。サブフォルダに置いた場合は (namespace):(subfolder1)/(subfolder2)/.../(name) となる。

固定レシピ

クラフトの中でも一般的なのが固定レシピである。

    {
        "type": "crafting_shaped",
        "pattern": [
            "123",
            "231",
            "312"
        ],
        "key": {
            "1": {
                "item": "<item ID>"
            },
            "2": {
                "item": "<item ID>"
            },
            "3": {
                "item": "<item ID>"
            }
        },
        "result": {
            "item": "<item ID>",
            "count": 5
        }
    }

これは固定レシピの簡単な例であり、typecrafting_shaped が指定されている。pattern はクラフトレシピの形を指定するためのリストである。最大で3つの文字列が含まれ、それぞれの文字列がクラフトグリッドの1行を表している。これら文字列は最大3文字で、各々の文字がクラフトグリッドの1マスを表している。3行3文字全てを指定する必要はないが、各文字列の文字数は等しくなければならない。空のマスを指定するには空白を使う。

key は、pattern のどの文字にどの項目を使用するかを指定するCompound型の値である。これは、item でアイテムIDを指定するか、tag でデートパークのタグを指定するかのいずれかで記述する。

result はその名が示す通り、クラフト結果として得られるアイテムを指定する。count は得られるアイテムの個数を指定する。

以下にピストンのレシピを示す:

    {
        "type": "crafting_shaped",
        "pattern": [
            "TTT",
            "#X#",
            "#R#"
        ],
        "key": {
            "R": {
                "item": "minecraft:redstone"
            },
            "#": {
                "item": "minecraft:cobblestone"
            },
            "T": {
                "tag": "minecraft:planks"
            },
            "X": {
                "item": "minecraft:iron_ingot"
            }
        },
        "result": {
            "item": "minecraft:piston"
        }
    }

不定形レシピ

レシピのもう一つのタイプが、不定形レシピである。

    {
        "type": "crafting_shapeless",
        "ingredients": [
            {
                "item": "<item ID>"
            },
            {
                "item": "<item ID>"
            },
            [
                {
                    "item": "<item ID>"
                },
                {
                    "item": "<item ID>"
                }
            ]
        ],
        "result": {
            "item": "<item ID>",
            "count": 5
        }
    }

typeに crafting_shapeless を指定すると、pattern のないレシピになる。ingredients で指定した材料がどのような形で置かれてもクラフトできる。上の例の ingredients にはリストが含まれているが、これはリスト中のアイテムはどれを使ってもクラフトできるということを意味する。

以下にファイヤーチャージのレシピを示す:

    {
        "type": "crafting_shapeless",
        "ingredients": [
            {
                "item": "minecraft:gunpowder"
            },
            {
                "item": "minecraft:blaze_powder"
            },
            [
                {
                    "item": "minecraft:coal"
                },
                {
                    "item": "minecraft:charcoal"
                }
            ]
        ],
        "result": {
            "item": "minecraft:fire_charge",
            "count": 3
        }
    }

タグ

詳細は「タグ」を参照

タグはブロックやアイテムや関数をグループ分けするために使われる。加えて、minecraft:tick 関数タグは関数を毎tick実行するのに使われ、minecraft:load 関数タグはワールドがロード/リロードされた時に関数を実行するのに使われる。

タグを追加するには、まず名前空間フォルダの中に tags フォルダを作成し、その中に blocksitemsfunctions フォルダを作成する。次に、これらのフォルダかそのサブフォルダに (tag_name).json というファイルを作成する。これがタグファイルとなる。これはゲーム中で (namespace):(name) のように参照できる。サブフォルダに置いた場合は (namespace):(subfolder1)/(subfolder2)/.../(name) となる。

関連項目