Minecraft Wiki
Minecraft Wiki
Advertisement
Information icon
この記事は、Java Editionに向けた内容を解説しています。 

生成物(英:Feature)は生成されたチャンクを中心に最大3×3チャンク程度のサイズの小規模な装飾物をワールドに生成する機構である。ワールド生成の際にチャンク毎に配置される。例えば鉱石の塊砂漠の井戸ダンジョンが生成物に該当する。

この記事では、データパックを介して自由に生成物をカスタマイズするための情報について解説する。

概説[]

生成物の設定には2段階あり、その形状や使用するブロックなどを決定する「構成設定済みの生成物」(Configured feature)と、これにさらに配置の条件を規定する配置修飾子を組み込んだ「配置設定済みの生成物」(Placed feature)がある。

配置された生成物は、バイオームの features構成要素プールの elementsで指定することで実際にバイオームや構造物内に生成させることができる。

また構成された生成物も/placeを用いて配置することができる。

生成物の種類[]

生成物の種類(英:Feature type)は、生成物がどのように生成されるかを規定している。生成物の種類によって、構成された生成物のJSONフォーマットや必要なプロパティが、生成物の大まかな形状が異なる。

生成物の種類一覧[]

生成物の種類のIDは以下の通り。

  • no_op - 何もしない。既存の構成された生成物を上書きするのに使用できる。
  • bamboo
  • basalt_columns - 玄武岩の三角州に見られるような、玄武岩の足場を生成する。
  • basalt_pillar - ソウルサンドの谷に見られるような、玄武岩の柱を生成する。
  • block_column - ブロックの柱を生成する。
  • block_pile - ブロックの塊を生成する。
  • blue_ice
  • bonus_chest
  • chorus_plant
  • coral_claw
  • coral_mushroom
  • coral_tree
  • delta_feature - 玄武岩の三角州に見られるような、小さな池を生成する。
  • desert_well
  • disk - 現在のブロックがである場合に限り、指定された半径と厚さで円形にブロックを配置する。
  • dripstone_cluster
  • end_gateway
  • end_island
  • end_spike - ジ・エンドの中心部で見られる、黒曜石の柱を生成する。
  • fill_layer - 広さ16×16・高さ1のブロックの層を生成して空気を置換する。スーパーフラットワールドで使用される。
  • flower
  • forest_rock - 苔石の岩のような生成物を生成する。
  • fossil - 構造物テンプレートを配置できる。
  • freeze_top_layer - 氷雪バイオームおよび冷帯バイオームの一定気温以下の領域の地表に雪や氷を生成する。
  • geode - ジオードを生成する。
  • glowstone_blob
  • huge_brown_mushroom - 巨大キノコの形の生成物を生成する。
  • huge_fungus - ネザー版巨大キノコの形の生成物を生成する。
  • huge_red_mushroom - 巨大赤キノコの形の生成物を生成する。
  • iceberg
  • ice_spike
  • kelp
  • lake
  • large_dripstone
  • monster_room
  • multiface_growth - ヒカリゴケ あるいは スカルクヴェインを生成する。
  • nether_forest_vegetation
  • netherrack_replace_blobs - 対象のブロック内に、与えられた半径で別のブロックの塊を生成する。対象のブロックがその位置で検出されなかった場合には、発見できるまで降下する。
  • no_bonemeal_flower
  • ore - 鉱石の塊を生成する。
  • pointed_dripstone
  • random_boolean_selector - 2種類の生成物のうちどちらかを等確率で選択する。
  • random_selector - リスト内から、指定された確率で生成物を選択する。
  • random_patch - 指定した範囲にランダムに配置設定済みの生成物を散開させる。
  • replace_single_block - targetに該当する単一のブロックを、リスト内のstatesで指定したブロックで置換する。
  • root_system - 別の生成物の下に根を生成する。生成の起点は根の下側である。
  • scattered_ore - やや散らばった鉱石の塊を生成させる。
  • sculk_patch
  • seagrass
  • sea_pickle
  • simple_block - ブロックを1つ設置する。
  • simple_random_selector - リスト内から等確率で生成物を選択する。
  • spring_feature - 滝を生成する。
  • tree
  • twisting_vines
  • underwater_magma
  • vegetation_patch- 植物の生えた領域を生成する。
  • vines
  • void_start_platform
  • waterlogged_vegetation_patch- 植物の生えた領域を生成する。設置部のブロックを水没させる場合もある。
  • weeping_vines

生成物の構成[]

生成物の生成形式は生成物の種類によって大まかに決定されるが、実際に形状が定まるには詳細の構成が必要である。構成された後の生成物は、構成設定済みの生成物または単に生成物と呼ばれる。

構成された生成物は、データパック内のdata/<namespace>/worldgen/configured_feature内にJSONファイルとしてそれぞれ保存する。

JSONフォーマット[]

構成された生成物は、以下のJSONフォーマットで保存されている。

  • : 最上位のオブジェクト。
    •  type: 生成物の種類のID.
    •  config: この構成された生成物の構成内容。プロパティの内容は typeで指定した生成物の種類によって異なり、その内容は以下に記載した通りである。なお以下に記載されていない生成物の種類に関しては構成内容を持たないが、空のconfigは必須である。

生成物の配置[]

構成された生成物は生成される生成物の構造や形状、使用するブロックなどを規定しているが、実際に生成物を生成するにはワールド生成にあたってどのように生成物を配置するのかを設定する「配置修飾子」(Placement modifier)が必要である。配置修飾子が設定された生成物は「配置設定済みの生成物」と呼ばれ、データパック内のdata/<名前空間>/worldgen/placed_featureにJSONファイルで保存されている。

JSONフォーマット[]

  • : 最上位のオブジェクト。
    •  feature: この配置された生成物が生成する構成された生成物のID、ないしオブジェクト。
    •  placement: 配置修飾子のリスト。リストの順番に従って作用する。
      • : それぞれの配置修飾子。
        •  type: 配置修飾子の種類。
        • 以下、 typeの種類に対応したフィールドを持つ。種類とフィールドの組は次項に記載の通り。

配置修飾子(Placement modifier)[]

配置修飾子は生成の初期位置を取り、単数または複数のブロックの位置を返す。ブロックの位置を返さないこともある。そしてその返された位置一つ一つに対して、生成物の生成が試行される。配置生成が何の位置も返さない場合には生成がキャンセルされ、また同じ位置が複数返された場合にはその場所が複数回試行され生成確率が上がる。ひとつの配置された生成物に対して、複数の配置修飾子を作用させることができ、リスト内の配置修飾子が順番に位置を取り込んで返すを繰り返して最終的に返された全て位置で生成試行が行われる。

配置された生成物を普通に生成する際の初期位置は生成先のチャンクの北西の一番下である。またrandom_selectorや構造物のプールで召喚された際には、元の生成物が生成されようとしていた場所が初期位置となる。

 typeとフィールドの組み合わせは以下の通り。

  • biome - 現在の位置のバイオームの featureにこの配置された生成物が含まれていれば現在の位置を返す。そうでなければ何も返さない。この配置設定はrandom_selectorなどの構成された生成物で参照された場合には使用できない。
  • block_predicate_filter - プレディケートの条件を通過すれば現在の位置を返す。そうでなければ何も返さない。
    •  predicate: 現在の位置を検査するプレディケート。
      • ブロックプレディケート
  • carving_mask - 現在のチャンク内の、従来の洞窟の位置をすべて返す。ノイズ洞窟はこれに含まれない。
    •  step: airliquidのいずれかで指定する。
  • count - 生成の試行数を設定する。
    •  count: 返す個数。0以上256以下の値で指定する。
      • 整数プロバイダー
  • count_on_every_layer - 空気、溶岩、水の境界で区切られた水平方向の層((0,0)~(16,16))から指定された数の地点を選択し、その上の位置を返す。
    •  count:一層当たりの選択数。0以上256以下の値で指定する。
      • 整数プロバイダー
  • environment_scan - 現在の位置から条件にあうブロックを発見するまで上または下に移動し続ける。最初に見つかった条件に合うブロックを返す。上限回数までに条件に合うブロックが見つからなかった場合は、何も返さない。
    •  direction_of_search: 移動の方向。updownで指定する。
    •  max_steps: 上限回数1以上32以下の値。
    •  target_condition: 検索するブロックの条件。
      • ブロックプレディケート
    •  allowed_search_condition:(任意)この条件に合うブロックを発見した場合はそこで検索を終了とし、何も返さない。
      • ブロックプレディケート
  • height_range - 取り込んだ位置のY座標を高度用の共通設定で指定された値に変更し、その値を返す。
    •  height: 新しいY座標を与える高度用の共通設定。
      • 高度プロバイダー
  • heightmap - 取り込んだ位置のY座標を、その位置の高度マップによって与えられる値に変更し、変更後の新しい位置を返す。
    •  heightmap: 使用する高度マップを指定する。MOTION_BLOCKINGMOTION_BLOCKING_NO_LEAVESOCEAN_FLOOROCEAN_FLOOR_WGWORLD_SURFACEWORLD_SURFACE_WGが使用できる。詳細は当該記事を参照。
  • in_square - X座標とY座標に0~15(最小値、最大値を含む)のランダムな値を加え、その値を返す。これは、random_offset xz_spreadを16に、 y_spreadを0にしたものと同義である。追加のフィールドは無し。
  • noise_based_count - ノイズによって試行数を変動させる。現在の位置のノイズの値が正の値の場合、生成の試行数を増やす。ただしこの試行数はノイズによって徐々に変化する。ノイズの値が正でない場合は、0とみなされ、何も返さない。式としては個数は次のように与えられる。
    ceil((noise(x / noise_factor, z / noise_factor) + noise_offset) * noise_to_count_ratio)
    •  noise_factor: ノイズの横軸の値を割る数。この値が大きいほど、ノイズの分布が大きくなる。
    •  noise_offset: (任意、デフォルト値は0)ノイズの垂直変位。
    •  noise_to_count_ratio: 個数とノイズの比。
  • noise_threshold_count - ノイズによって試行数を設定する。この設定の場合、elow_noiseかabove_noiseに基づく。noise(x / 200, z / 200) < noise_levelならばbelow_noise回、そうでなければabove_noise回、試行する。
    •  noise_level: 閾値。
    •  below_noise: ノイズ値が閾値以下の場合の試行数。0以下の値は0として見做される。
    •  above_noise: ノイズ値が閾値以上のの際の試行数。0以下の値は0として見做される。
  • random_offset - 現在の座標にランダムな変位を加えて新しい位置に変更する。XとZ座標の変位は同じフィールドによって規定されているが、変位の算出自体は別々に行われるのでそれぞれには別の変位が与えられうる。
    •  xz_spread: -16以上16以下の値。
      • 整数プロバイダー
    •  y_spread: -16以上16以下の値。
      • 整数プロバイダー
  • rarity_filter - 生成量を減らす。1/chanceの確率で元の値を返し、それ以外の場合は何も返さない。
    •  chance: 確率の分母。正整数で指定する。
  • surface_relative_threshold_filter - 高度マップによって取り込んだ位置の最高点のY座標を調べ、その値と現在の位置との高さの差が指定の範囲内にあれば元の位置を返す。逆に範囲外なら何も返さない。
    •  heightmap: 使用する高度マップMOTION_BLOCKINGMOTION_BLOCKING_NO_LEAVESOCEAN_FLOOROCEAN_FLOOR_WGWORLD_SURFACEWORLD_SURFACE_WGの何れかが使用できる。
    •  min_inclusive: 最高点と現在の位置の許容最小値。
    •  max_inclusive: 最高点と現在の位置の許容最大値。
  • surface_water_depth_filter - ワールドの表面からの、移動に干渉するブロックの数。 max_water_depthの数以下であれば現在の位置を返し、そうでなければ何も返さない。水深を測定するのに使用される。
    •  max_water_depth: 最大水深。

歴史[]

Java Edition
1.16.220w28a構成された生成物がデータパックで設定できるようになった。
20w29a生成物の種類minecraft:decorated_flowerminecraft:no_bonemeal_flowerに改名された。
1.1720w45a生成物の種類minecraft:geodeが追加された。
20w49a生成物の種類minecraft:dripstone_clusterminecraft:large_dripstoneminecraft:small_dripstoneが追加された。
21w03a生成物の種類minecraft:glow_lichenが追加された。
1.1922w15a生成物の種類surface_diskice_patchdiskに統合された。
生成物の種類diskに、従来の二つの生成物に存在していたstatetargetsおよびcan_origin_replaceを置き換える形でstate_providerおよびtargetsが追加された。
生成物の種類treeにフィールドtrunk_offset_yおよびabove_root_placementが追加された。
生成物の種類treemangrove_root_placer下のy_offsetが削除された。またmangrove_root_placer以下のフィールドは mangroce_root_placementに移動された。
1.19.423w07a生成物の種類minecraft:treeにおける構成された生成物の設定候補に、minecraft:cherry_foliage_placerおよびminecraft:cherry_trunk_placerが追加された。
1.2023w17a生成物の種類huge_fungusにフィールドreplaceable_blocksが追加された。
Advertisement