ジェネレーターの作成
ジェネレーター
ジェネレーターはBetterStructuresの設定システムの中で最も強力な部分です。デフォルトで29個のジェネレーターがあり、現在BetterStructuresで配布されている建築物を共同で管理しています。独自のジェネレーターを作成することも、既存のものをショートカットとして使用することもできます。
ジェネレーターはプラグインに正確なスポーン位置を伝え、ルートテーブルを定義します。デフォルトのジェネレーターは、その機能が容易に推測できるように名付けられています。
ジェネレーター設定オプション
| キー | デフォルト | 必須 | 説明 |
|---|---|---|---|
isEnabled | true | ❌ | ジェネレーターが有効かどうか。false にすると、このジェネレーターを参照しているすべてのスキマティックも登録されなくなるため、構造物のセット全体をまとめてオフにする最も手軽な方法です。 |
structureType | - | ✅ | 構造物がスポーンする場所(下の表を参照) |
lowestYLevel | -59 | ❌ | スポーンの最小Yレベル |
highestYLevel | 320 | ❌ | スポーンの最大Yレベル |
validWorlds | すべて許可 | ❌ | 構造物がスポーンできるワールドのリスト |
validWorldEnvironments | すべて許可 | ❌ | NORMAL, NETHER, THE_END, CUSTOM |
validBiomesV2 | プリセットによる | ❌ | 有効なバイオームのリスト(namespace:key形式)。実効リストが空ならすべてのバイオームを許可 |
treasureFilename | - | ❌ | チェストの戦利品用トレジャーファイル |
generateLootInBarrels | true | ❌ | このジェネレーターのスキマティック内にある樽に戦利品を入れるかどうか |
barrelTreasureFilename | treasure_barrel_food.yml | ❌ | このジェネレーターで樽を満たす際に使用するトレジャーファイル |
structureType
建築物の構造タイプを設定します。単一のジェネレーターに複数の構造タイプを指定できます!
| タイプ | オーバーワールド/カスタム | ネザー | エンド | 説明 |
|---|---|---|---|---|
SURFACE | 地表 | 地表のようなポイント | 地表 | ワールドの地表にスポーン |
SKY | 最も高いブロックの80-120ブロック上 | Y 45からY 100の間で見つかった空気の空間 | 最も高いブロックの80-120ブロック上 | 空中にスポーン(config.ymlで設定可能) |
UNDERGROUND_SHALLOW | 初期Y 0-49 | Y 60-119で固体領域を探索 | Y 0-79で固体領域を探索 | 浅い地下構造物 |
UNDERGROUND_DEEP | 初期Y -53から-1 | Y 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=320 | lowestYNormalCustom / highestYNormalCustom |
| ネザー | Y=4からY=120 | lowestYNether / highestYNether |
| エンド | Y=0からY=320 | lowestYEnd / 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つの帰結があります:
- 配布されている
generator_surface_*.ymlに見られる長いバイオームのリストは、真実の出所ではなく生成された出力です。 読み込み時にBetterStructuresはvalidBiomesV2を読み、minecraft:の各エントリをMagmaCoreのテーブルで参照し、それに対応するカスタムバイオームを追加したうえで、展開後のリストをジェネレーターファイルへそのまま書き戻します。そのため、2行で書いたジェネレーターが100行になって返ってくることがあります。展開後のリストを編集しても、その1つのジェネレーターにしか影響せず、残したままのminecraft:エントリは次回の読み込み時に再び展開されます。 - 新しいカスタムバイオームのサポートを全体に追加するのは、設定変更ではなく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と有効な樽用トレジャー設定の両方が必要です。スケマティックの上書きでどちらの条件も回避できません。無効な上書きは警告を出し、ジェネレーターのテーブルに戻ります。