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

本記事では、データパックを用いて構造物をカスタマイズする方法と、それに必要な情報を記載する。

概論[]

構造物は構造物の構成設定によって定義される。このファイルは構造物がどのように生成されるかを決定しており、構造物のタイプによって設定内容や生成される構造物が異なっている。ユーザーは、構造物のタイプjigsawを使用することでジグソーブロックを介して自作の構造物を生成することができる。構造物の構成設定で定義された構造物は、構造物の配置設定(structure set)でその構造物がどのようにワールドに配置されるかを設定することでワールドに生成されるようになる。

なお、構造物のタイプでjigsawを使用している場合には、ジグソーブロックから生成する構造物の候補一覧とその付属情報を記載したファイルである構成要素プールと、構成要素プールの候補であり実際に生成される構造物のNBTデータであるストラクチャーテンプレートが必要である。また構成要素プールから生成された構造物にはプロセッサーを用いて一定の処理を施すことができ、この場合にはプロセッサーリストを定義する必要がある。

構造物のタイプ[]

構造物のタイプの一覧とその機能は以下の通り。

  • buried_treasure
    • 埋もれた宝の生成に使用されている。使用パーツはハードコードされている。
  • desert_pyramid
    • 砂漠の寺院の生成に使用されている。使用パーツはハードコードされている。
  • end_city
    • エンドシティの生成に使用されている。structures/end_cityフォルダのテンプレートを使用している。
  • fortress
    • ネザー要塞の生成に使用されている。使用パーツはハードコードされている。
  • igloo
    • イグルーの生成に使用されている。structures/iglooフォルダのテンプレートを使用している。
  • jigsaw
    • ジグソーブロックを用いて連鎖的にテンプレートを呼び出して生成する。使用するテンプレートや生成の仕方等をカスタマイズすることができる。
  • jungle_temple
  • mineshaft
    • 廃坑の生成に使用されている。使用パーツはハードコードされている。
  • nether_fossil
    • ネザー化石の生成に使用されている。structures/nether_fossilsフォルダのテンプレートを使用している。
  • ocean_monument
    • 海底神殿の生成に使用されている。使用パーツはハードコードされている。
  • ocean_ruin
    • 海底遺跡の生成に使用されている。structures/underwater_ruinsフォルダのテンプレートを使用している。
  • ruined_portal
    • 荒廃したポータルの生成に使用されている。structures/ruined_portalフォルダの構造物ファイルを使用している。
  • shipwreck
    • 難破船の生成に使用されている。structures/shipwreckフォルダのテンプレートを使用している。
  • stronghold
    • 要塞の生成に使用されている。使用パーツはハードコードされている。
  • swamp_hut
    • ウィッチの小屋の生成に使用されている。使用パーツはハードコードされている。
  • woodland_mansion
    • 森の洋館の生成に使用されている。structures/woodland_mansionフォルダのテンプレートを使用している。

上記のうち、jigsaw以外のタイプは生成のメカニズムがハードコードされている。

ストラクチャーテンプレート[]

ストラクチャーテンプレート(以下、テンプレート)とは、構造物の「パーツ」の役目を担う、構造物ファイルのことを指す。構造物のタイプjigsaw並びにエンドシティイグルー等の一部の構造物で使用される。jigsawでは使用するテンプレートは構成要素プールを用いて決定できるが、それ以外の構造物では使用するテンプレートのパスはコード上で規定されている。

構造物テンプレートは、実際にゲーム上で作成した構造物をセーブモードのストラクチャーブロックを用いて保存することで作成できる。ストラクチャーブロックで保存した構造物ファイルは.minecraft/saves/<ワールド名>/generated/minecraft/structuresに生成される。構造物のカスタマイズでこのテンプレートを使用するには、この構造物ファイルをdata/<名前空間>/structures下に保存する必要がある。

またストラクチャーテンプレートは、/place templateで呼び出すこともできる。

構造物の構成設定[]

テンプレートとだけでは「構造物」とはみなされない。ゲームから「構造物」と認識されるには、構成設定を記述する必要がある。

構成設定はJSONファイルとして、データパック内のdata/<名前空間名>/worldgen/structureに格納する。

JSONフォーマット[]

構造物の構成設定ファイルは、以下の内容・構造を持つ。


    •  biomes: この構造物が生成されうるバイオーム。バイオームのIDかバイオームタグ、またはバイオームIDのリストで指定する。ここで指定したバイオーム以外のバイオームを起点にすることはできない。
    •  step: この構造物が生成される生成段階を指定する。生成段階及び有効な値については、カスタムバイオーム featuresも参照。同じ生成段階内であれば、生成物よりも構造物の生成が先に行われる。生成段階が早いほど、後から生成される構造物ないし生成物に上書きされる可能性が高まる。
    •  terrain_adaptation: 周囲の地形に馴染むように生成される。以下の値のどれかを指定する。
      none:なにもしない
      beard_thin:構造物の領域をくり抜き、地面を生成する。デフォルトではピリジャーの前哨基地で使用されている。
      beard_boxbeard_thinを大きくしたもの。デフォルトでは古代都市で使用されている。
      bury:周囲を完全に埋め立てる。デフォルトでは旅路の遺跡要塞で使用されている。省略が可能で、何も指定しない場合はnoneを指定したものとして見なされる。
    •  spawn_overrides: 構造物内でスポーンするMob。バイオームの設定を上書きする形でスポーンする。バニラにおける例としては、ネザー要塞ブレイズウィザースケルトン海底神殿ガーディアンなどが該当する。このフィールドは必須だが、オブジェクト内を空にしてもよい。ここではMobカテゴリ毎にスポーンするMobを設定する。全てのMobカテゴリについて記述する必要はないが、記述しなかったMobカテゴリに関してはバイオームの設定がそのまま適用される。そのカテゴリのMobをスポーンさせたくない場合はMobカテゴリの中身を空の状態で記述すればよく、これは古代都市で使用されている。
      •  <Mobカテゴリ名>: 各Mobカテゴリに関する設定。キーにはこの項目monstercreatureambientwater_creatureunderground_water_creaturewater_ambientmiscおよびaxolotlsの中から対応するMobカテゴリを指定する。
        •  bounding_box :piecefullで指定する。pieceの場合は構造物を構成するパーツの範囲内、fullの場合は構造物全体の範囲(構造物全体を丁度覆う矩形範囲)において指定したスポーン内容が適用される。
        •  spawns: このMobカテゴリとしてスポーンさせるMobのスポーンに関するデータを格納したオブジェクトのリスト。Mob一種につきオブジェクトを一つ記述する。この要素は必須だがオブジェクト内を空で指定することが可能で、その場合はこのMobカテゴリのMobが範囲内に一切スポーンしなくなる。
          • : それぞれの種類のMobのスポーンに関するデータ。
            •  type: Mobの名前空間付きID。
            •  weight: 各スポーン試行においてこのMobが選択される確率に関する比重。このMobが選択される確率は、このMobの比重÷Mobカテゴリ全体の比重の和で導出される。
            •  minCount: このMobがスポーンする際、一度にスポーンする集団の個体数の最小値。0より大きい値でなければならない。
            •  maxCount: 上に同じく、集団の個体数の最大値。0より大きく、かつ最小値以上でなければならない。

typeの値によって、後述する項目が追加される。

構造物のタイプごとの追加項目[]
ジグソーブロックを使ったもの[]
その他のストラクチャーテンプレートを使用したもの[]
使用パーツがハードコードされているもの[]


構成要素プール[]

構成要素プールは、ジグソーブロックで呼び出された際に複数のストラクチャーテンプレート及び配置設定済みの生成物の中からランダムに一つを選択して生成することのできる機構である。また構成要素プールでは、生成の際にテンプレートに対してプロセッサーを用いて一定の処理を加えるよう設定する事もできる。

構成要素プールは、jigsawタイプの構造物の生成時または手動操作によってジグソーブロックから呼び出される他、/place jigsawでも呼び出す事ができる。

構成要素プールはデータパック内のdata/<名前空間名>/worldgen/template_pool下にJSONファイルとして保存する。

JSONフォーマット[]

基本的な構造は以下の通り。

  • 最上位のタグ
    •  fallback: 補欠用の構成要素プール。構成要素プールのIDで指定する。以下の条件下で使用される。
      1. ジグソーの連鎖数(レベル)が所定の回数に達した際に、最後のストラクチャーテンプレートに残ったジグソーブロックに接続するよう、補欠用プールからテンプレートを生成する。これは構造物の端の処理として使用できる。
      2. このプール内のテンプレートが、いずれも生成できなかった場合。
      なお上記2つの場合において、補欠用プールのテンプレートがすべて生成できなかった場合においては何も生成されない。
    •  elements: 選択候補となる配置された生成物やテンプレートのリスト。詳細はJSONのプロパティの詳細で説明する。
      • : 要素1つ分のデータ。
        •  weight: この要素が選択される比重。選択確率はこの要素の比重÷候補すべての比重の和となる。1以上150以下の値で指定する。
        •  element: この要素のプロパティ。
          •  projection: rigidterrain_matchingのどちらかで指定する。rigidの場合、生成された時の高度を維持するが、terrain_matchingの場合、地形に合わせて高度が変動する。
          •  element_type: minecraft:single_pool_elementminecraft:legacy_single_pool_elementminecraft:list_pool_elementminecraft:feature_pool_elementminecraft:empty_pool_elementのどれかを指定する。また、ここで指定したタイプごとにプロパティが追加される。それぞれのタイプの詳細と追加プロパティについてはelement_typeの説明と追加プロパティで説明する。


JSONのプロパティの詳細[]

elements[]

選択候補のリストであり、まず、生成の設定ファイルの start_poolで指定したプールから生成を開始する。このとき、 start_jigsaw_nameを設定している場合、その「名前」を持ったジグソーブロックがプールにないと、生成失敗となる。以降は、以下の条件を満たす要素が選択される。

  1. 現在のジグソーブロックの「対象の名前」と「名前」が一致し、かつ現在のジグソーブロックに接続可能な向きを向いているジグソーブロックが要素内に存在する。
  2. 構造物の生成開始位置と要素の位置の間の三次元チェビシェフ距離が、構造物の構成設定で指定された値(ジグソーブロックで手動生成した場合には128)を超えない。
  3. テンプレートの外側を向いたジグソーブロックから生成される場合、呼び出し先のテンプレートが呼び出し元のテンプレートと重ならない
  4. 正面のブロックがテンプレートの内部の位置にあるジグソーブロックから生成される場合、呼び出し先のテンプレートが呼び出し元のテンプレートの内部に完全に収まっている

もし、この条件を満たさなかった場合は他の要素を試し、全ての要素で生成が失敗するか、ジグソーブロックの連鎖数が限界に達したとき、 fallbackで指定したプールでの生成を試みる。それでも生成に失敗した場合、何も生成しない。

element_typeの説明と追加プロパティ[]

minecraft:single_pool_elemet または minecraft:legacy_single_pool_element[]

テンプレートを1つ選択する。この2つのタイプの違いは、minecraft:legacy_single_pool_elementは既存の地形を空気に置き換えないのに対して、minecraft:single_pool_elementは置き換える。

追加されるプロパティは以下の通り。

  •  element
    •  location: テンプレートをstructuresフォルダから指定する。
    •  processors: テンプレートに施すプロセッサーworldgen/processor_listから指定するか、リスト形式でここに直接記述する。必須の要素だが、処理を施さない場合は空にすれば良い。
minecraft:list_pool_elemet[]

複数のテンプレートを重ねて生成する。後に生成された要素が既存の要素を上書きしていく形で生成される。

デフォルトでは、村の前哨基地の物見塔(watchtower)に使われている。

追加されるプロパティは以下の通り。

  •  element
    •  elements: 要素のリスト。
      • : この要素のプロパティ。 elementと構造は同じ。
minecraft:feature_pool_element[]

配置設定済みの生成物を生成する。

上向きに設置して対象の名前を"minecraft:bottom"にする必要がある。

デフォルトでは、村や古代都市で使用されている。

追加されるプロパティは以下の通り。

  •  element
    •  feature:配置設定済みの生成物をworldgen/placed_featureから指定する。
minecraft:empty_pool_element[]

何も生成しない。

構造物の配置(Structure set)[]

構造物の構成設定までだけでは、ワールドに構造物が生成されない。

ワールド内に構造物を生成させるには、構造物の配置設定(ストラクチャーセット)を記述する必要がある。

構造物の配置設定は、構造物を実際にワールド内にどのように配置するかを決定している。場合によっては候補として複数を一纏めにして、その中から一つの構造物を選択する場合もある。ストラクチャーセットファイルはデータパック内のdata/<名前空間>/worldgen/structure_setJSONとして記述する。

JSONフォーマット[]

構造物の配置設定のJSON構造は以下の通り。

  • : 最上位のオブジェクト。
    •  structures: 必須。ただし、空白にすることはできる。同じ構造物を複数のファイルに記述することはできない。
      • : 配置したい構造物。
        •  structure: 配置する構造物をworldgen/structureから指定する。
        •  weight: この構造物が選択される比重。確率はこの構造物の比重÷候補すべての比重の和になる。
    •  placement: 構造物の配置設定。
      •  salt: ランダム性の実現を補助するために使用される値。ソルト (暗号)も参照のこと。非負整数で指定する。
      •  frequency: 実際にどのくらい生成されるか。0.1~1.0の値で指定し、数値が小さいほど生成率が下がる。省略可能であり、デフォルト値は1.0。
      •  frequency_reduction_method: 生成に使用されるランダム数値生成アルゴリズムを決定する。defaultシード値、座標、 saltを用いたランダム値)、legacy_type_1(シード値と座標のみを用いたランダム数。位置が大きく異なる場合にのみランダム性が発揮される)、legacy_type_2(defaultと同じだが、saltが10387320に固定されている)、legacy_type_3(シード値と座標のみを用いたランダム数)から選択する。
      •  exclusion_zone: 特定のstructure_setで生成された構造物の付近の一定範囲には生成しないようにする。
        •  chunk_count: 1以上16以下の値。
        •  other_set: この構造物と距離を開けたい構造物のstructure_setを指定する。
      •  locate_offset: 生成地点を、チャンク内座標[0, 0, 0]からどれだけずらすか。省略可能で、デフォルトは[0, 0, 0]。
        • : X座標の変位。-16以上16以下の値で指定する。
        • : Y座標の変位。-16以上16以下の値で指定する。
        • : Z座標の変位。-16以上16以下の値で指定する。
      •  type: minecraft:concentric_ringsminecraft:random_spreadで指定する。
        typeminecraft:concentric_rings要塞のような環上分布を使用)の場合は、以下の追加フィールドを持つ。
      •  distance: 6チャンク(96ブロック)単位で指定する、環の内径の公差。0以上1023以下の値で指定する。
      •  count: 各ディメンション内での総生成試行回数。1以上4095以下の値で指定する。
      •  preferred_biomes: この構造物が生成されやすいバイオーム。バイオームIDおよびバイオームタグ、またはバイオームIDのリストで指定する。
      •  spread: 一番最初の環における生成試行回数。0以上1023の値で指定する。第n番目の環における生成試行回数はspread * (n^2 + 3n + 2)/6で与えられ、内側から順に生成していき countを超えた時点で終了となる。
        typeminecraft:random_spread(大抵の構造物が使用するランダム分布)の場合は、以下の追加フィールドを持つ。
      •  spread_type: 生成地点同士の距離の確率分布。linear(線形分布)かtriangular(平均値を最頻値とする三角分布)のどちからで指定する。省略可能で、デフォルトはlinear
      •  spacing: 生成地点同士の平均距離。0以上4096以下で指定する。
      •  separation: 生成地点同士の最小距離。0以上4096以下で指定する。生成地点同士の最大距離は2 * spacing - separationで与えられる。


プロセッサーリスト[]

プロセッサー(Processor)とは、ストラクチャーテンプレートに対して生成時にブロックに一定の仕組みに従って処理・加工を施すことのできる仕組みである。構成要素プールからテンプレートを召喚する際に、プロセッサーを纏めたプロセッサーリスト(Processor list)として作用させることが出来る。

プロセッサーリストは、JSONファイルとしてデータパック内のdata/<名前空間名>/worldgen/processor_list下に保存する。

Processor typeの一覧[]

minecraft:rule[]

指定した条件に応じてブロックを置換する。

minecraft:block_rot[]

テンプレートのブロックが一部生成されなくなる。生成されなかったブロックは、元々の地形が維持される(ストラクチャーヴォイドのような挙動になる)。

minecraft:block_age[]

古びた雰囲気にする。荒廃したポータルで内部的に使用されている。以下のようにブロックが変化する。

変化前のブロック 変化後のブロック 変化率
ひび割れた石レンガ 50 %
石レンガ 石レンガの階段/苔むした石レンガの階段
ひび割れた石レンガ 苔むした石レンガの階段
各種階段 石のハーフブロック
石レンガのハーフブロック
苔むした石レンガの階段
苔むした石レンガのハーフブロック
石のハーフブロック
石レンガのハーフブロック
苔むした石レンガの階段
苔むした石レンガのハーフブロックに
各種のハーフブロック
そのまま残るか石レンガ製になる
黒曜石 泣く黒曜石 15 %

minecraft:block_ignore[]

指定したブロックをテンプレートと見なさない(ストラクチャーヴォイドのような扱いになる)。

minecraft:gravity[]

高度マップによって、ワールドの一番高い場所にブロックをシフトさせる。

minecraft:protected_blocks[]

ここで指定したブロックを避けてテンプレートが生成される。

minecraft:blackstone_replace[]

石レンガ系ブロックがブラックストーンに、鉄格子が鎖に変わる。

minecraft:lava_submerged_block[]

フルブロックではないブロックが溶岩に置き換わらなくなる。

minecraft:jigsaw_replacement[]

ジグソーブロックとストラクチャーヴォイドを維持するかどうか。手動でジグソーブロックを使用した際を除いて必ず使用されるように内部的に設定されている

minecraft:capped[]

装飾を施すブロックに上限をつける。

minecraft:nop[]

なにもしない。

JSONフォーマット[]

プロセッサーリストには、 リスト形式か、リストを内含する オブジェクト形式の二種類の形態がある。

リスト形式:

  • : プロセッサーリスト。
    • プロセッサーのデータ。
      • プロセッサー

オブジェクト形式:

  • : 構造物処理子リストのオブジェクト。
    •  processors: プロセッサーリスト。
      • : プロセッサーのデータ。
        • プロセッサー

歴史[]

Java Edition
1.2023w12a新しい構造物処理子cappedが追加された。
ruleの処理子で使用される置き換え先のブロックのNBTの設定方法が、 block_entity_modifierに変更された。これ以前は output_nbtが使用されており、これはこのオブジェクト内にJSON形式で記述されたNBTでブロックの既存のNBTを置き換えるという仕様であった。以降の形式では、clearを作用させた後にappend_staticでNBTを追加することでその機能を再現できる。
1.20.323w42a構造物の生成設定に、 typejigsawの際に使用できる任意のフィールド pool_aliasesが追加された。
これを使用すると、この構造物を生成する際に参照する構造物プールを別のものに置き換えることができる。
23w45a sizeの上限値が7から20に上がった。

脚注[]

Advertisement