【マイクラ】ジグソーブロックの使い方!オリジナルの構造物を呼び出そう!

【マイクラ】ジグソーブロックの使い方!オリジナルの構造物を呼び出そう!

この記事では、Minecraft Java Edition(バージョン1.20.2)の情報をもとに執筆しています。
そのほかのバージョンや機種などでの動作は保証できません。

こんにちは!
マインクラフターのなつめ(@natsume_717b)です。

なつめ

2016年からマイクラを楽しんでおり、最近はクリエイティブモードでコマンドを駆使して遊んでいます!

この記事では、こんな疑問を解決します!

本記事の内容
  • ジグソーブロックの取り出し方
  • ジグソーブロックを使うための下準備《ストラクチャーブロック編》
  • ジグソーブロックを使うための下準備《データパック編》
  • placeコマンドで保存した構造物を生成する

今回はジグソーブロックについて1から解説。

ジグソーブロックは、自分が作った建造物を組み合わせた状態で生成するために必要なブロックです。

詳しくは以下のツイートを見てもらえると分かりやすいかと思います。

この記事を読むことで上記の動画と同じことができるようになりますので、ぜひ最後まで読んでくれると嬉しいです!

それでは、さっそく見ていきましょう!

ジグソーブロックの取り出し方

ジグソーブロックを取り出すには、giveコマンドを用いればOKです。

具体的には、以下のコマンドを実行してジグソーブロックを手に入れましょう。

/give @p minecraft:jigsaw 1

「設定」から「操作設定」、「管理者用アイテムタブ」をオンにすることで、クリエイティブモードのインベントリから手に入れることもできます。

ジグソーブロックを使うための下準備《ストラクチャーブロック編》

ジグソーブロックを入手したら、次はストラクチャーブロックと組み合わせて、建造物のデータを作成します。

ストラクチャーブロックについては以下の記事で解説しています。

【Java版】建築物を簡単にコピー!ストラクチャーブロックの使い方【解説】

生成したい建造物を作成する

まずは生成したい建造物をパーツごとに分けて建築しましょう。

パーツごとに分ける理由ですが、この後ジグソーブロックによって接続できる面を決めます。
なのでパーツごとに分けられたとしても、生成時にジグソーブロックの設定に則って、「廊下と部屋が自然に接続している」という風な生成が可能です。

また、接続するパーツを複数用意しておけば、ランダムに選ばれるため生成する度に異なる形で構造物が生まれます。

というわけで、今回は以下のようなパーツを作りました。

ここからは各パーツに使われているジグソーブロックの設定について深掘りしていきます。

ジグソーブロックの設定

ジグソーブロックを開くと、以下のようなものが表示されます。

見慣れない項目が多く面食らうかもしれませんが、1つずつ見ていけば複雑ではありません。
各項目の説明を見ていきましょう。

項目名説明
構成要素プール作成したパーツを1か所に集める必要があり、そのファイルの場所を指定する。
後程ファイルを作成するので、好きに名前を付けてOKです。ただし、◇◇:○○の形にすること。
端的に言うならば、集合場所を指定している。
名前このジグソーブロック自体の名前。
IDのように扱われるため、:(コロン)で繋ぐ必要がある。
対象の名前このジグソーブロックに繋がる、ジグソーブロックの名前を入力する欄。
要はこの先に何が繋がってほしいのかを、名前で書きます。
置換先生成された後にこのジグソーブロックを何のブロックに置き換えるのかを記載します。
基本的にはminecraft:airで空気ブロックに置き換えるようにしておけば問題ありません。
接続タイプジグソーブロックが上向きか下向きである時にのみ、表示される項目。
「回転可能」では生成先のパーツがランダムに回転してしまう。「整列」にしておくことで回転しない。
レベルどれだけの規模で生成するかを決められる。
値を大きくすればするほど、たくさん接続して複雑な構造物になる。
ジグソーを維持生成の処理をした後に、このジグソーブロックを維持するかどうか。
生成文字通り生成を行う。
適切に構成要素プールなどが設定されている必要がある。

今回は以下のように設定してみました。
(すべて紹介するのは煩雑になるため、1つだけ紹介)

1枚目の画像は各パーツ(建築物)の名前になります。
2枚目は、そのパーツのうち直線である”ntm:01_straight”の手前側にあるジグソーブロックの中身になります。

構成要素プールには”ntm:01_dungeon”と書かれているので、”ntm:01_dungeon”に該当するよう、後程フォルダを作成していきます。

また、他のジグソーブロックについても同様に”ntm:01_dungeon”と記述しています。
集合場所が異なると上手く会えないように、構成要素プールの文字列を変更しては上手く生成されなくなります。

名前・対象の名前に関しては、すべて”ntm:○○”という形になっています。
先ほど掲載した1枚目の画像を見れば明白ですね。

必ずしも”◇◇:○○”と記述する必要はありませんが、対象の名前を入力する際には正確に書く必要があります。

:(コロン)の前を指定しなかった場合、”minecraft:○○”と自動的に命名されます。

置換先は先ほども記載したように、空気ブロックを指定すればOKです。

ストラクチャーブロックでジグソーブロックごと保存する

ジグソーブロックの設定を全て終えたら、いよいよ建築したものをデータ化していきます。

データ化と言っても、ストラクチャーブロックで保存すればよいだけです。

ですので、ストラクチャーブロックを使える人からすれば難しいことはありません。
まだストラクチャーブロックについて詳しくないという方は、こちらの記事を参考にしながら建築を保存しましょう。

【Java版】建築物を簡単にコピー!ストラクチャーブロックの使い方【解説】

今回例として扱うものは、それぞれtest:part01、test:part02、test:part03という名前で保存しました。

以下の画像では、青文字が保存時の名前となります。

ジグソーブロックを使うための下準備《データパック編》

さてストラクチャーブロックを使って建築を保存した後は、データパックを作っていきましょう。
このデータパックによって、保存したデータを呼び出せるようになります。

まずは以下のようなフォルダ・ファイル構成になるように作っていきます。
各ファイルの記載内容などは後程お話します。

  • datapack本体
    (英数字・一部記号を用いて命名)
    • data
      • ntm
        (構成要素プールで「コロン」の前に指定した文字列を命名する)
        • structures
          • nbtファイル
            (後述。この時点では作成しなくてOK)
        • worldgen
          • template_pool
            • jsonファイル
              (後述。この時点では作成しなくてよい。名前は構成要素プールで「コロン」よりも後に入力したものにする)
          • structure
            • jsonファイル
              (後述。この時点では作成しなくてOK)
    • pack.mcmeta

pack.mcmetaと末尾に「ファイル」とついているもの以外は全てフォルダになります。

pack.mcmetaの中身は以下のものをコピーしてもらって大丈夫です。

{
    "pack": {
      "pack_format": 18,
      "description": "datapack test"
    }
}

nbtファイルをデータパックに移動させる

今回扱うnbtファイルは、先ほどストラクチャーブロックで保存した建築のデータです。
これらはセーブデータからデータパックに移動させる必要があります。

まずはワールドフォルダーを開きましょう。
ワールドフォルダーは「ファイル名を指定して実行」に”%appdata%”と打ちこんでから探しても良いですし、ゲームのワールド選択画面から開いても問題ありません。

ワールドフォルダーを開くと、各セーブデータのデータが保存されています。
ストラクチャーブロックで保存をしたことがある場合には、“generated”という名前のフォルダが生成されているので、それを探しましょう。

この中にあるnbtファイルこそが今回探している建築のデータとなります。

今回はそれぞれtest:part01、test:part02、test:part03という名前で保存したので、generatedの中にtestというフォルダが生成されています。

コロンを付けずに命名した場合は、minecraftというフォルダが代わりに生成されています。

その奥へ進むと、以下の画像のようにpart01.nbt、part02.nbt、part03.nbtとファイルが存在するので、これを先ほど作成したデータパックの適切な位置に移動させましょう。

もちろんコピペでも問題ありません。

jsonファイルの作成(template_pool)

nbtファイルの移動を終えたら、次はjsonファイルを作成していきます。
これは構成要素プールで指定しているファイルとなります。

つまり、先ほど移動させたnbtファイルたちをこのjsonファイルで1つにまとめ上げるイメージです。

jsonファイルの中身はこちら。

{
  "elements": [
    {
      "element": {
        "element_type": "minecraft:legacy_single_pool_element",
        "location": "ntm:part01",
        "processors": "minecraft:empty",
        "projection": "rigid"
      },
      "weight": 50
    },
    {
      "element": {
        "element_type": "minecraft:legacy_single_pool_element",
        "location": "ntm:part02",
        "processors": "minecraft:empty",
        "projection": "rigid"
      },
      "weight": 50
    },
    {
      "element": {
        "element_type": "minecraft:legacy_single_pool_element",
        "location": "ntm:part03",
        "processors": "minecraft:empty",
        "projection": "rigid"
      },
      "weight": 50
    }
  ],
  "fallback": "minecraft:empty"
}

橙文字のところは各自変更する必要がある部分です。

:(コロン)よりも前は”structures”や”worldgen”のフォルダを包括しているフォルダ名を指示し、コロンよりも後ろは各nbtファイルの名前を入力します。

例で挙げているものを見ると、ntmというフォルダに包括されており、各nbtファイル名が指定されているのが分かりますね。

今回は3つのnbtファイルだけなので3つ分の記載ですが、5つのnbtファイルがあれば5つ分の記載が必要です。

そのほかの項目は簡単にだけ説明します。
細かい調整をしたいなら弄るべきですが、初めてという場合には弄らない方が良いです。

項目説明
element_typeどのようなタイプなのか。
この項目によって、下記の項目が生じるかどうかが決まっている。
慣れないうちは弄る必要がない。
location参照するnbtファイルの指定を行う。
詳しくは先述の通り。
processors最終的な処理について。
最後に何のパーツを呼び出すのかを指示する。
だが、デフォルトの”minecraft:empty”のままにしておき、何も呼び出さない処理をするのが良い。
projection“rigid”と”terrain_matching”が選べる。
詳細は不明。”rigid”で問題ない。
weightどのくらいの確率で選ばれるか。
各値の合計とそのパーツの値を比べた時の割合で確率が決まる。

jsonファイルの名前は、構成要素プールでコロンよりも後ろに指示した文字列にします。
なので例の場合は”01_dungeon”となります。

構造物として認識させる(structure)

ここまでの作業で各パーツをjsonファイルによって集合させることができました。

しかし、このままではMinecraftが構造物として認識してくれません。
そこで次はstructureのフォルダの中に、構造物として認識させるためのjsonファイルを書いていきます。

以下のものをコピペしてもらって大丈夫です。

{
    "type": "minecraft:jigsaw",
    "biomes": "#minecraft:has_structure/village_plains",
    "max_distance_from_center": 80,
    "project_start_to_heightmap": "WORLD_SURFACE_WG",
    "size": 6,
    "spawn_overrides": {},
    "start_height": {
      "absolute": 0
    },
    "start_pool": "ntm:01_dungeon",
    "step": "surface_structures",
    "terrain_adaptation": "beard_thin",
    "use_expansion_hack": true
  }

変更する箇所は”start_pool”にある橙文字の部分です。
これは先ほど集合させたjsonファイルを記述しなければなりません。

:(コロン)の前は包括しているフォルダ名、後ろはtemplate_poolの中にあるjsonファイルの名前ということですね。

そのほかの項目は生成時に関する項目ですが、今回はコマンドで呼び出すので変更しなくて問題ありません。
ワールド生成時に生成されるようにする際は、各項目をきちんと理解する必要があります。

このjsonファイルの名前は好きに名前を付けて問題ありません。
この後コマンドで指定する必要があるので、分かりやすい名前にしましょう。

今回はdungeon.jsonとしておきます。

placeコマンドで保存した構造物を生成する

いよいよラストです。
作成したデータパックを適用させたワールドに入って以下のコマンドを入力しましょう。

/place structure ntm:dungeon

文末にある”ntm:dungeon”ですが、これは各自で異なります。
上記の場合はntmというフォルダのstructureにあるdungeon.jsonを呼び出すため、このようなコマンドとなっています。

各自、フォルダ・ファイルの名前に合わせて変更してください。

候補に出現していれば、きちんと生成できる状態です。
もし候補に出現しない、手動で入力したけれど生成できないという場合は、1つ1つ間違いがないか探していく必要があります。

スペルミスなど些細なミスで動かなくなるので、気を付けましょう。

実際に呼び出せている様子がこちら。

まとめ

というわけで、今回のまとめです。
今回はジグソーブロックの使い方、構造物をコマンドで生成するということを解説しました。

ポイント
  • ジグソーブロックを使うことで、構造物を生成する際に各構造物を繋げることができる。
  • ジグソーブロックを使うには、データパックが必要。

この記事は以上になります。

  • 【まとめ】functionコマンドの基本から応用【マイクラ】
  • 【まとめ】カスタムストラクチャーの実装・カスタム方法【マイクラ】