メインコンテンツまでスキップ

ジェネレーターの作成

ジェネレーター​

ジェネレーターはBetterStructuresの設定システムの中で最も強力な部分です。デフォルトで29個のジェネレーターがあり、現在BetterStructuresで配布されている建築物を共同で管理しています。独自のジェネレーターを作成することも、既存のものをショートカットとして使用することもできます。

ジェネレーターはプラグインに正確なスポーン位置を伝え、ルートテーブルを定義します。デフォルトのジェネレーターは、その機能が容易に推測できるように名付けられています。

ジェネレーター設定オプション​

キーデフォルト必須説明
isEnabledtrue❌ジェネレーターが有効かどうか。false にすると、このジェネレーターを参照しているすべてのスキマティックも登録されなくなるため、構造物のセット全体をまとめてオフにする最も手軽な方法です。
structureType-✅構造物がスポーンする場所(下の表を参照)
lowestYLevel-59❌スポーンの最小Yレベル
highestYLevel320❌スポーンの最大Yレベル
validWorldsすべて許可❌構造物がスポーンできるワールドのリスト
validWorldEnvironmentsすべて許可❌NORMAL, NETHER, THE_END, CUSTOM
validBiomesV2プリセットによる❌有効なバイオームのリスト(namespace:key形式)。実効リストが空ならすべてのバイオームを許可
treasureFilename-❌チェストの戦利品用トレジャーファイル
generateLootInBarrelstrue❌このジェネレーターのスキマティック内にある樽に戦利品を入れるかどうか
barrelTreasureFilenametreasure_barrel_food.yml❌このジェネレーターで樽を満たす際に使用するトレジャーファイル

structureType​

建築物の構造タイプを設定します。単一のジェネレーターに複数の構造タイプを指定できます!

タイプオーバーワールド/カスタムネザーエンド説明
SURFACE地表地表のようなポイント地表ワールドの地表にスポーン
SKY最も高いブロックの80-120ブロック上Y 45からY 100の間で見つかった空気の空間最も高いブロックの80-120ブロック上空中にスポーン(config.ymlで設定可能)
UNDERGROUND_SHALLOW初期Y 0-49Y 60-119で固体領域を探索Y 0-79で固体領域を探索浅い地下構造物
UNDERGROUND_DEEP初期Y -53から-1Y 60-6を下向きに固体領域を探索オフセットと境界の調整前はY 0から開始深い地下構造物
LIQUID_SURFACE最上部のブロックが液体Y 31の溶岩とその上の空気初期の液体確認なし。地形への適合確認は行う液体の表面にスポーン
DUNGEON✅✅✅別のモジュールジェネレーターシステム用。このタイプだけでスケマティックがモジュラーダンジョンになるわけではない

空の範囲は列の最上部ブロックからのオフセットで、絶対Y座標ではありません。地下の範囲はスケマティックのオフセットとディメンション境界の調整前の、初期選択または探索を示します。ネザーの空中探索はY 45-99を確認します。

複数構造タイプの例
structureType:
- SURFACE
- UNDERGROUND_SHALLOW

これにより、同じジェネレーターが地表と浅い地下の両方など、複数の場所に構造物をスポーンできます。

注意:Minecraftには広大な地下空間があるため、2つの地下設定があります。両方があることで、深さ全体にわたって均等に分配され、プレイヤーが構造物を見逃すことを防ぎます。


ディメンション別Yレベル範囲​

ディメンションごとのデフォルト高度範囲(config.ymlで設定可能):

ディメンションデフォルト範囲設定
オーバーワールド/カスタムY=-60からY=320lowestYNormalCustom / highestYNormalCustom
ネザーY=4からY=120lowestYNether / highestYNether
エンドY=0からY=320lowestYEnd / highestYEnd
空(オーバーワールド/カスタム)最も高いブロックの80から120ブロック上normalCustomAirBuildingMinAltitude / normalCustomAirBuildingMaxAltitude
空(エンド)最も高いブロックの80から120ブロック上endAirBuildMinAltitude / endAirBuildMaxAltitude

ジェネレーターのlowestYLevelとhighestYLevelはアンカー候補の位置を絞り込みます。ディメンション全体の地下境界を置き換えたり、空中オフセットの範囲を変更したりするものではありません。

空に関する2行は、絶対的なYレベルではなく、その列の最も高いブロックに加算されるオフセットです。オーバーワールド/カスタムとエンドのどちらの空オフセットも、配置のたびに最小値と最大値の間でランダムに抽選されます。

ネザーはこれらのオフセットを完全に無視します。最も高いブロックの上に建てる代わりに、BetterStructuresはY 45からY 100の間の列をスキャンして高さ20ブロック以上の空気の空間を探し、その内部に構造物を配置します。そのような空間が存在しない場合、そのチャンクには何もスポーンしません。


カスタムバイオームサポート​

BetterStructuresはTerralith、Iris、Terra、TerraformGeneratorなどのワールドジェネレーターからのカスタムバイオームを自動的にサポートします。

validBiomesV2でバニラバイオームを指定すると、プラグインは自動的に互換性のあるカスタムバイオームを含めます:

validBiomesV2:
- minecraft:plains
- minecraft:forest

これにより、バニラバイオームと、それらに対応するカスタムバイオームで構造物の配置が許可されます。例えばterralith:brushlandはplainsに対応します。他の配置条件も満たす必要があります。

validBiomesV2が空または未指定の場合、既製ジェネレーターに組み込まれたバイオーム選択が維持されます。プリセットの制限を解除する設定ではありません。組み込みバイオームのない新規カスタムジェネレーターでは実効リストが空となり、すべてのバイオームを許可します。プリセットの選択を置き換えるには、空でないリストを明示してください。名前空間のないバニラ列挙名も使用できますが、namespace:key形式のほうが明確です。名前空間付きの項目は小文字に変換されますが、バイオームが存在するかは確認されません。

マッピングが実際に置かれている場所​

カスタムバイオームとバニラバイオームの対応表は、BetterStructuresには保存されていません。BetterStructuresに同梱されている共有ライブラリMagmaCoreの内部にある単一のハードコードされたテーブルであり、それを必要とする他のMagmaGuyプラグインとも共有されています。

これには実務上2つの帰結があります:

  1. 配布されている generator_surface_*.yml に見られる長いバイオームのリストは、真実の出所ではなく生成された出力です。 読み込み時にBetterStructuresは validBiomesV2 を読み、minecraft: の各エントリをMagmaCoreのテーブルで参照し、それに対応するカスタムバイオームを追加したうえで、展開後のリストをジェネレーターファイルへそのまま書き戻します。そのため、2行で書いたジェネレーターが100行になって返ってくることがあります。展開後のリストを編集しても、その1つのジェネレーターにしか影響せず、残したままの minecraft: エントリは次回の読み込み時に再び展開されます。
  2. 新しいカスタムバイオームのサポートを全体に追加するのは、設定変更ではなくMagmaCoreの変更です。 ワールドジェネレーターがBetterStructuresの認識しないバイオームを提供している場合、それをジェネレーターの validBiomesV2 に追加するのは、その1つのジェネレーターに対するローカルな回避策にすぎません。正しくマッピングさせるにはMagmaCoreのマッピングテーブルに追加する必要があり、これはコードの変更です — ymlファイルで解決しようとするのではなく、リクエストを出してください。

validBiomesV2にカスタムバイオームを直接指定することもできます。minecraft:以外の名前空間は直接使用され、それ以上展開されません。特定のカスタムバイオームだけで構造物を生成するジェネレーターに適しています。

MagmaCoreが nothing にマッピングしているバイオームは意図的に除外されます — 構造物に適さないと判断されたカスタムバイオームであり、どのバニラバイオームからも引き込まれることはありません。


treasureFilename​

チェストの戦利品用のトレジャーファイルを設定します。これはスキマティック設定で上書きされない限り、このジェネレーターを使用するすべての建築物に適用されます。

チェストに戦利品を入れるには、ジェネレーター側にも有効なトレジャー設定が必要です。ジェネレーターのファイルが未指定または無効なら、スケマティック側の上書きでは補えません。無効な上書きは警告を出し、ジェネレーターのテーブルに戻ります。


generateLootInBarrels と barrelTreasureFilename​

BetterStructuresでは、樽もチェストと並ぶ第二の戦利品コンテナとして扱われるようになりました。

  • generateLootInBarrels(デフォルトtrue)は、このジェネレーターによって配置された構造物内の樽を満たすかどうかを切り替えます。falseに設定すると、樽は手付かずのままになります。
  • barrelTreasureFilename(デフォルトtreasure_barrel_food.yml)は、それらの樽を満たす際にロールされるトレジャーファイルを選択します。デフォルトでは軽量な食料中心のルートテーブルが提供されますが、任意のトレジャーファイルを指定できます。

スケマティックのbarrelTreasureFilenameでテーブルを上書きできます。ただし、ジェネレーター側にgenerateLootInBarrels: trueと有効な樽用トレジャー設定の両方が必要です。スケマティックの上書きでどちらの条件も回避できません。無効な上書きは警告を出し、ジェネレーターのテーブルに戻ります。