
この記事はマイクラJava版のジグソーブロック解説です
サバイバル攻略というより、配布ワールド・自作構造物・データパック制作向けです
統合版(Bedrock Edition)とはUIやデータ仕様が異なるので注意してください
こんにちは。ゆずかきです。
マイクラのクリエイティブやデータパック制作を触っていると、たまに出てくる謎ブロックがあります。
それが今回解説するジグソーブロックです。
名前だけ見るとパズルっぽいですが、実際の役割もそのままで、建物や通路などの構造物パーツを、ジグソーパズルのように接続して生成するための技術ブロックです。
村・ピリジャーの前哨基地・砦の遺跡・古代都市・旅路の遺跡・トライアルチャンバーなど、複数パーツで構成される構造物の生成に使われています。
ただし、最初に触るとかなり分かりにくいです。
- 「名前」と「対象の名前」の違いが直感的ではない
- 構成要素プールって何?となる
- ストラクチャーブロックとどう違うのか分かりにくい
template_poolのJSONを見た瞬間にそっと閉じたくなる
筆者も最初は、名前と対象の名前を逆に入れて何も生成されないというところで普通に詰まりました。
なのでこの記事では、難しい内部仕様をいきなり詰め込むのではなく、実際にジグソーブロックを使う時に必要な順番で整理していきますね。
この記事を読めば、次のことが分かります。
- ジグソーブロックの役割が分かります👌
- Java版での入手方法・使用条件が分かります
- GUIの各項目を「何に使うのか」で理解できます
- 自作構造物をつなげる時の基本ルールが分かります
- データパック内の
template_poolの最低限の読み方が分かります
それでは、やっていきましょう!
※本記事はマイクラJava版1.21系列の仕様を基準に構成しています。
※ジグソーブロックは通常のサバイバルで使うブロックではなく、主にクリエイティブ・コマンド・データパック制作用のブロックです。
※ゲーム内仕様については、Minecraft Wikiおよび公式リリースノートを参考にしています。
目次
1. ジグソーブロックとは
2. Java版での入手方法と使う前の注意点
3. ストラクチャーブロックとの違い
4. GUI項目の意味を表で整理
5. ジグソーブロックの生成条件と接続ルール
6. 一番小さい実例:2つの構造物を接続する流れ
7. 構造物データとtemplate_poolの基本仕様
8. Java版のバージョン変更点で注意すること
9. 生成されない時のチェックポイント
10. まとめ
11. 引用・参考文献
この記事で分かること
・Java版のジグソーブロックの基本的な使い方
・構成要素プール、名前、対象の名前、置換先などの意味
・自作構造物をジグソー形式でつなぐ時の考え方
1. ジグソーブロックとは
ジグソーブロックは、構造物のパーツ同士を接続して、ひとつの大きな構造物として生成するための技術ブロックです。
分かりやすく言うと、
- 家のパーツ
- 道のパーツ
- 部屋のパーツ
- 通路のパーツ
- 階段のパーツ
- 行き止まりのパーツ
こういう小さな構造物をあらかじめ用意しておき、ジグソーブロックを接続点として使うことで、ランダム性のある村・遺跡・ダンジョンのような構造物を作れるようになります。
通常の建築では、建物はプレイヤーが1つずつ置いて完成させますよね。
一方でジグソーブロックを使う場合は、構造物パーツを先に保存しておき、ゲーム側に接続順を選ばせるイメージです。
例えば、簡単な地下通路を作るなら、
- 入口パーツ
- まっすぐ通路パーツ
- 曲がり角パーツ
- 小部屋パーツ
- 行き止まりパーツ
こういう部品を作っておきます。
そして、それぞれの接続口にジグソーブロックを置くと、ゲームが「次はこの通路をつなげよう」「次は小部屋をつなげよう」という感じで構造物を伸ばしてくれます。
つまりジグソーブロックは、手作業で建物を置くためのブロックではなく、構造物生成の接続ルールを持たせるブロックです。
ここを最初に理解しておくと、後のGUI項目もかなり読みやすくなります。
2. Java版での入手方法と使う前の注意点
ジグソーブロックは、サバイバルでクラフトしたり、普通に採掘したりするブロックではありません。
Java版では、基本的に以下の方法で入手します。
/give @s minecraft:jigsaw
また、Java版では設定で管理者用アイテムタブを有効にしている場合、クリエイティブインベントリ側からも扱えます。
ただし、ワールドでチートが有効になっている、またはサーバーで十分な権限を持っていることが前提です。
ジグソーブロックを触る前に、次の点は先に押さえておきましょう。
- 通常のサバイバル建築向けではない
- 破壊して回収するようなブロックではない
- ピストンで押したり、粘着ピストンで引っ張ったりできない
- 生成後は、多くの場合
minecraft:airなど別のブロックに置き換えられる - 本格的に使うならストラクチャーブロックとデータパックの知識が必要
特に大事なのは、ジグソーブロック単体では完成しないというところです。
ジグソーブロックはあくまで接続点なので、実際には、
- ストラクチャーブロックで保存した
.nbt構造物データ - データパック内の
worldgen/template_pool - 接続するジグソーブロック同士の名前設定
これらとセットで使います。
注意!
ジグソーブロックは便利ですが、適当に置いて「生成」を押せば何でも出てくるブロックではありません。
接続先の構造物データと構成要素プールが存在しないと、基本的には何も起きません。
3. ストラクチャーブロックとの違い
ジグソーブロックを理解するうえで、ほぼ必ずセットで出てくるのがストラクチャーブロックです。
この2つは似ているようで、役割が違います。
| ブロック | 主な役割 | 使う場面 |
|---|---|---|
| ストラクチャーブロック | 構造物を保存・読み込みする | 建物や部屋を.nbtデータとして保存する時 |
| ジグソーブロック | 構造物パーツ同士を接続する | ランダム生成の村・通路・ダンジョン風構造物を作る時 |
ストラクチャーブロックは「この範囲を保存する」「この構造物を読み込む」という役割です。
一方、ジグソーブロックは「この接続口には、次にどのパーツをつなげるか」を決める役割です。
つまり、流れとしてはこうです。
- ストラクチャーブロックで部屋や通路を作って保存する
- その構造物内にジグソーブロックを置いて接続口を作る
- データパック側で候補となる構造物リストを用意する
- ジグソーブロックの「生成」で次のパーツを呼び出す
初心者さん向けに一言でまとめると、
ストラクチャーブロック=保存する係
ジグソーブロック=つなげる係
です。
ここを分けて考えると、だいぶ混乱しにくくなります。
4. GUI項目の意味を表で整理
ジグソーブロックを右クリックすると、いくつか入力欄が出てきます。
この画面が最初はかなり分かりにくいです。
特に、名前・対象の名前・構成要素プールの3つは混乱しやすいので、まず表で整理しますね。
| GUI項目 | 意味 | 初心者向けの覚え方 |
|---|---|---|
| 構成要素プール Target Pool |
次に生成する構造物候補のリストID | 次に呼び出すパーツ置き場 |
| 名前 Name |
このジグソーブロック自身の名前 | 自分側の接続名 |
| 対象の名前 Target Name |
接続したい相手側ジグソーブロックの名前 | 相手に持っていてほしい名前 |
| 置換先 Turns Into |
生成完了後にこのジグソーブロックが変化するブロック | 最後に何へ置き換えるか |
| 接続タイプ Joint Type |
上下向きジグソーで、接続先の回転をどう扱うか | 縦方向接続の回転ルール |
| レベル Levels |
生成を何段階連鎖させるか | 何個先までつなげるか |
| ジグソーを維持 Keep Jigsaws |
生成後もジグソーブロックを残すかどうか | デバッグ用に残すか |
| 選択優先度 Selection Priority |
同じパーツ内のジグソーをどの順に接続処理するか | どの接続口を先に試すか |
| 設置優先度 Placement Priority |
接続したパーツを、構造物全体の中でどの順に処理するか | 生成された枝をどの順に伸ばすか |
この中で、最初に絶対覚えるべきなのは次の3つです。
- 構成要素プール
- 名前
- 対象の名前
例えば、親側のジグソーブロックに、
構成要素プール:yuzukaki:rooms/side_room 対象の名前:yuzukaki:room_connector
と入力したとします。
この場合、ゲームは yuzukaki:rooms/side_room という構成要素プールの中から、名前が yuzukaki:room_connector になっているジグソーブロックを持つ構造物を探します。
ここで大事なのは、親側の「対象の名前」と、子側の「名前」が一致する必要があるということです。
体験談として一番詰まりやすいポイント
親側の「名前」と子側の「名前」を同じにしても、思った通りに生成されないことがあります。
基本は、親の対象の名前 = 子の名前です。
これだけでも、ジグソーブロックの理解はかなり進みます。
5. ジグソーブロックの生成条件と接続ルール
ジグソーブロックで構造物を生成するには、いくつか条件があります。
ここを満たしていないと、「Generateを押したのに何も起きない」という状態になります。
生成される側に、対象の名前と一致するジグソーブロックが必要
親側のジグソーブロックは、構成要素プールの中から候補となる構造物を探します。
その時、生成される側の構造物内に、親側の対象の名前と一致する名前を持つジグソーブロックが必要です。
例:
親側の対象の名前:yuzukaki:road 子側の名前:yuzukaki:road
このように一致していれば、接続候補になります。
逆に、ここが1文字でも違うと基本的には接続されません。
名前空間込みで見られるので、minecraft:road と yuzukaki:road は別物です。
ここは地味ですが、本当にミスりやすいです。
ジグソーブロックの向きが合っている必要がある
ジグソーブロックは、ただ同じ名前なら何でもつながるわけではありません。
向きも大事です。
基本的には、接続元と接続先のジグソーブロックが向かい合うように配置される必要があります。
横向きの接続なら横方向同士、上向きなら下向き、下向きなら上向きという考え方です。
通路の入口にジグソーブロックを置く時は、接続口の外側を向くように置くと理解しやすいです。
向きがズレていると、候補が存在しても接続できないことがあります。
構造物が重なりすぎると生成されない
ジグソー生成では、候補パーツが他の生成済みパーツと大きく重なる場合、失敗することがあります。
特に、部屋・通路・階段のように複数方向へ伸びる構造物では、思ったよりも簡単に干渉します。
初心者さんが最初に作るなら、
- まっすぐな通路
- 入口と小部屋
- 2つの部屋を1本の通路でつなぐ
このくらいの単純な構造から試すのがおすすめです。
いきなり大型ダンジョンを作ろうとすると、原因不明の生成失敗が増えます。
レベルは生成の連鎖数
GUIの「レベル」は、ジグソーブロックから何段階先まで生成を続けるかを決める数値です。
- レベル0:基本的に連鎖生成しない
- レベル1:次のパーツまで生成
- レベル2以上:生成されたパーツ内のジグソーからさらに連鎖
Java版1.20.3以降では、最大値が20まで上がっています。
以前は最大値が7だったため、古い解説記事や動画では「最大7」と説明されている場合があります。
現在のJava版1.21系列で見るなら、0〜20の範囲で設定すると覚えておけばOKです。
6. 一番小さい実例:2つの構造物を接続する流れ
ここでは、実際にジグソーブロックを使う時の流れを、最小構成で紹介します。
文字だけでも手順が追えるように、かなり単純な例にしますね。
今回作るのは、
- 入口部屋
- 小部屋
この2つをジグソーブロックでつなげる構成です。
1. 入口部屋を作る
まず、クリエイティブワールドで小さな入口部屋を作ります。
サイズは何でも良いですが、最初は5×5×4くらいの小部屋で十分です。
部屋の出口部分にジグソーブロックを置きます。
このジグソーブロックは、次の小部屋を呼び出す親側になります。
親側ジグソーブロックには、例えば下記のように入力します。
構成要素プール:yuzukaki:rooms/small_room_pool 名前:yuzukaki:entrance 対象の名前:yuzukaki:room_connector 置換先:minecraft:air レベル:1
ここで重要なのは、対象の名前を yuzukaki:room_connector にしているところです。
つまり、この親ジグソーは、構成要素プールの中から yuzukaki:room_connector という名前を持つ接続先を探します。
2. 小部屋を作る
次に、接続先となる小部屋を作ります。
小部屋の入口にジグソーブロックを置きます。
このジグソーブロックは、親側から接続される子側になります。
子側ジグソーブロックには、例えば下記のように入力します。
構成要素プール:minecraft:empty 名前:yuzukaki:room_connector 対象の名前:minecraft:empty 置換先:minecraft:air
ここで大事なのは、子側の名前です。
親側の対象の名前が yuzukaki:room_connector だったので、子側の名前も yuzukaki:room_connector にします。
これで、
親の対象の名前 = 子の名前
という接続条件が成立します。
3. ストラクチャーブロックで保存する
入口部屋と小部屋を、それぞれストラクチャーブロックで保存します。
この時、ジグソーブロックも保存範囲に含めてください。
例として、以下のように保存します。
入口部屋:yuzukaki:rooms/entrance 小部屋:yuzukaki:rooms/small_room
ストラクチャーブロックで保存した構造物データは、ワールドフォルダー内の generated フォルダーに出力されます。
データパックとして使う場合は、最終的に以下のような場所へ配置します。
data/yuzukaki/structures/rooms/entrance.nbt data/yuzukaki/structures/rooms/small_room.nbt
※保存直後の場所と、データパック内に入れる場所は違うので注意してください。
4. template_poolを作る
次に、親側ジグソーの「構成要素プール」に指定した yuzukaki:rooms/small_room_pool を作ります。
データパック内では、以下の場所にJSONファイルを作ります。
data/yuzukaki/worldgen/template_pool/rooms/small_room_pool.json
中身の例はこちらです。
{ "fallback": "minecraft:empty", "elements": [ { "weight": 1, "element": { "location": "yuzukaki:rooms/small_room", "processors": "minecraft:empty", "projection": "rigid", "element_type": "minecraft:single_pool_element" } } ] }
このJSONは、かなりシンプルです。
意味としては、
- 候補は
yuzukaki:rooms/small_roomの1つだけ - 生成確率の重みは1
- 地形に合わせて曲げず、固定構造として出す
- 失敗時の補欠は
minecraft:empty
という内容です。
5. 入口部屋側で生成を押す
ここまで用意したら、入口部屋側のジグソーブロックを開き、生成を押します。
設定が合っていれば、小部屋が接続されます。
最初は「ジグソーを維持」をオンにしておくと、生成後にジグソーブロックが残るので確認しやすいです。
問題なく動いたら、最終的にはオフにして minecraft:air へ置換すると見た目が自然になります。
7. 構造物データとtemplate_poolの基本仕様
ここからは、データパック側の構造をもう少し整理します。
ジグソーブロックを本格的に使うなら、最低限次の2種類のデータを理解しておく必要があります。
.nbtの構造物データworldgen/template_poolのJSONデータ
構造物データはstructuresフォルダーに置く
ストラクチャーブロックで保存した建物データは、最終的にデータパック内の structures フォルダーに置きます。
例:
data/yuzukaki/structures/rooms/small_room.nbt
この場合、ゲーム内で参照するIDは下記になります。
yuzukaki:rooms/small_room
ファイルパスとIDの対応関係はとても大事です。
ここを間違えると、template_pool 側で指定しても構造物が見つかりません。
template_poolは候補リスト
template_pool は、ジグソーブロックが次に呼び出す構造物候補のリストです。
例:
data/yuzukaki/worldgen/template_pool/rooms/small_room_pool.json
このファイルは、ゲーム内では下記のIDで呼び出します。
yuzukaki:rooms/small_room_pool
ジグソーブロックの「構成要素プール」にこのIDを入れることで、次の構造物候補として使えるようになります。
template_poolの主な項目
| 項目 | 意味 | よく使う値 |
|---|---|---|
| fallback | 候補が生成できなかった時の補欠プール | minecraft:empty |
| elements | 生成候補のリスト | 複数指定可 |
| weight | 候補が選ばれる重み | 1以上の整数 |
| location | 呼び出す構造物データのID | yuzukaki:rooms/small_room |
| processors | 生成時にブロックを置換・加工する処理 | minecraft:empty |
| projection | 地形への合わせ方 | rigid / terrain_matching |
| element_type | 候補の種類 | minecraft:single_pool_element |
最初は、processors は minecraft:empty で大丈夫です。
また、建物や部屋のように形を崩したくない構造物は projection を rigid にしておくと扱いやすいです。
projectionの違い
projection は、構造物を地形にどう合わせるかを決める項目です。
rigid:高さや形を固定して生成するterrain_matching:地形の高さに合わせる
家・部屋・塔・地下通路のような、形が崩れると困るものは rigid が扱いやすいです。
村の道のように、地形に沿わせたいものは terrain_matching が向いています。
element_typeの違い
よく見る element_type は次の通りです。
minecraft:single_pool_element:構造物テンプレートを1つ生成するminecraft:legacy_single_pool_element:古い形式寄りの単体構造物生成minecraft:empty_pool_element:何も生成しないminecraft:feature_pool_element:配置済みフィーチャーを生成するminecraft:list_pool_element:複数の要素をまとめて扱う
最初に自作の部屋や通路をつなげるだけなら、基本は minecraft:single_pool_element で大丈夫です。
legacy_single_pool_element と single_pool_element は空気ブロックの扱いが違います。
single_pool_element は空気も置き換え対象にするため、既存ブロックを残したい場所にはストラクチャーヴォイドの使い方も関係してきます。
ここは最初から深追いしなくても良いですが、「空気ごと上書きされるかどうか」が違う、と覚えておくと後で助かります。
8. Java版のバージョン変更点で注意すること
ジグソーブロックは、過去バージョンから少しずつ使いやすくなっています。
古い記事や動画を見る時は、ここを確認しておくと混乱しにくいです。
Java版1.14で追加された
ジグソーブロックは、Java版1.14のスナップショット時代に追加されました。
当初はプレイヤーが実用的に使うというより、村やピリジャーの前哨基地などの構造物生成に使われる技術ブロックでした。
Java版1.16でGenerateボタンが追加された
Java版1.16系列では、GUIからジグソー構造物を生成するためのボタンが追加されました。
これにより、プレイヤー側でもジグソーブロックを使った生成テストがしやすくなっています。
Java版1.19.3でクリエイティブインベントリから扱いやすくなった
Java版1.19.3では、条件を満たすとジグソーブロックがクリエイティブインベントリ側からも利用できるようになりました。
現在は、管理者用アイテムタブの設定が関係します。
Java版1.20.3で選択優先度・設置優先度が追加された
Java版1.20.3では、ジグソーブロックの編集画面に、
- 選択優先度
- 設置優先度
の2項目が追加されています。
選択優先度は、親パーツ内のジグソーブロックをどの順に接続処理するかを制御する項目です。
設置優先度は、そのジグソーブロックが接続した先のパーツを、構造物全体の中でどの順に処理するかを制御する項目です。
初心者さんが小規模な構造物を作るだけなら、最初はどちらも0のままで大丈夫です。
ただ、大型ダンジョンのように複雑な分岐を作る場合は、ここを使うことで生成順を調整できます。
Java版1.20.3でレベル最大値が7から20になった
同じくJava版1.20.3では、ジグソー構造物のレベル最大値が7から20に増えています。
そのため、古い解説で「最大7」と書かれていても、現在のJava版1.21系列では最大20まで指定できます。
ただし、むやみに大きくすると生成範囲や処理が重くなる可能性があります。
最初は1〜3くらいの小さな値から試すのがおすすめです。
Java版1.21系列で見る時の考え方
Java版1.21系列でジグソーブロックを触るなら、基本的には、
- レベルは0〜20
- 選択優先度・設置優先度が存在する
- データパック側の
template_poolを使う - トライアルチャンバーのような1.21系の構造物にもジグソー構造物が使われている
- 統合版のJSON仕様とは分けて考える
この5点を押さえておけば大丈夫です。
Java版1.21では、ジグソー構造物や single_pool_element に液体の扱いに関する項目も追加されています。
ただ、通常の接続テストや小規模な自作構造物を作る段階では、まずは template_pool・名前・対象の名前・向きを合わせることを優先して覚える方が分かりやすいです。
注意!
統合版(Bedrock Edition)にもジグソーブロック関連の仕様がありますが、Java版のデータパック仕様とは同じではありません。
Java版の記事では、Bedrock向けの.mcstructureや統合版専用JSONをそのまま流用しないようにしてくださいね。
9. 生成されない時のチェックポイント
ジグソーブロックは、設定が1つズレるだけで何も生成されないことがあります。
トラブル時は、下のチェックリストを上から順番に確認してください。
- [ ] 親側の「構成要素プール」のIDは正しいか?
- [ ]
data/<名前空間>/worldgen/template_pool/の場所にJSONを置いているか? - [ ]
template_pool内のlocationは正しい構造物IDになっているか? - [ ]
.nbtファイルはdata/<名前空間>/structures/に置いているか? - [ ] 親側の「対象の名前」と、子側の「名前」が一致しているか?
- [ ] 名前空間の付け忘れがないか?
- [ ] ジグソーブロックの向きは合っているか?
- [ ] 構造物同士が重なりすぎていないか?
- [ ] レベルが0のままになっていないか?
- [ ] データパックを入れた後、
/reloadまたはワールドの入り直しをしたか? - [ ] JSONのカンマ抜けや括弧ミスがないか?
特に多いのは、名前の不一致とファイルパス間違いです。
例えば、ファイルの場所が、
data/yuzukaki/structures/rooms/small_room.nbt
であれば、template_pool の location は、
yuzukaki:rooms/small_room
です。
structures というフォルダー名はIDには入りません。
ここを yuzukaki:structures/rooms/small_room のように書くと失敗します。
また、template_pool の場所が、
data/yuzukaki/worldgen/template_pool/rooms/small_room_pool.json
なら、ジグソーブロックの「構成要素プール」に入れるIDは、
yuzukaki:rooms/small_room_pool
です。
この対応関係を紙に書いて確認すると、かなりミスを減らせます。
筆者的に一番おすすめの確認方法
最初から大型構造物を作らず、入口部屋と小部屋だけで生成テストしてください。
2パーツ接続が成功してから、通路・分岐・行き止まりを増やす方が圧倒的に安定します。
10. まとめ
ジグソーブロックは、普通のサバイバルではほとんど触らないブロックですが、配布ワールドやデータパック制作ではかなり重要な技術ブロックです。
要点を整理すると、
- ジグソーブロックは構造物パーツを接続するためのブロック
- ストラクチャーブロックは保存・読み込み、ジグソーブロックは接続担当
- 親側の対象の名前 = 子側の名前 が基本
- 構成要素プールは次に呼び出す構造物候補のリスト
- 構造物データは
structures、候補リストはworldgen/template_poolに置く - Java版1.20.3以降はレベル最大20、選択優先度・設置優先度も使える
このあたりを押さえておけば、ジグソーブロックの基本はかなり理解しやすくなります。
最初は本当に分かりにくいですが、仕組み自体は、
接続口を作る
候補リストを用意する
名前を一致させる
生成する
この流れです。
いきなり村レベルの複雑な構造物を作るのではなく、まずは2つの部屋をつなぐだけの小さなテストから始めてみてください。
その小さい成功例を作れれば、通路・分岐・小部屋・行き止まりを増やして、ランダム生成ダンジョンのような構造物にも発展させられます。
では、本日はここまでで終わります。
最後までご覧いただき、ありがとうございました。
柚子クラでは他にもマイクラの仕様解説や便利な仕組みを紹介しているので、是非ご覧くださいね(^^♪
11. 引用・参考文献
この記事を書くにあたり、以下の公式情報・海外Wiki・ゲームデータを参考にしています。
- Minecraft Wiki(Jigsaw Block)
- Minecraft Wiki(Custom world generation/template pool)
- Minecraft公式(Minecraft Java Edition 1.19.3)
- Minecraft公式(Minecraft Java Edition 1.20.3)
- Minecraft公式(Minecraft Java Edition 1.21)
- Minecraft公式(Minecraft 1.21 Pre-Release 1)
- MCAsset(Trial Chambers template_pool)
- MCAsset(Trail Ruins template_pool)