ジェネレーターの作成
ジェネレーター
ジェネレーターは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-50 | Y 60-120 | Y 0-80 | 浅い地下構造物 |
UNDERGROUND_DEEP | Y -53から0 | Y 5-60 | Y 0-80 | 深い地下構造物 |
LIQUID_SURFACE | 水(海洋) | Y 31の溶岩の海 | 液体チェックは適用されません | 液体の表面にスポーン |
DUNGEON | ✅ | ✅ | ✅ | モジュラーダンジョンの配置に使用 |
空の範囲は、絶対的なYレベルではなく、その列における最も高いブロックからの上方向のオフセットです。
複数構造タイプの例
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:blooming_plains)に構造物がスポーンされます。
マッピングが実際に置かれている場所
カスタムバイオームとバニラバイオームの対応表は、BetterStructuresには保存されていません。BetterStructuresに同梱されている共有ライブラリMagmaCoreの内部にある単一のハードコードされたテーブルであり、それを必要とする他のMagmaGuyプラグインとも共有されています。
これには実務上2つの帰結があります:
- 配布されている
generator_surface_*.ymlに見られる長いバイオームのリストは、真実の出所ではなく生成された出力です。 読み込み時にBetterStructuresはvalidBiomesV2を読み、minecraft:の各エントリをMagmaCoreのテーブルで参照し、それに対応するカスタムバイオームを追加したうえで、展開後のリストをジェネレーターファイルへそのまま書き戻します。そのため、2行で書いたジェネレーターが100行になって返ってくることがあります。展開後のリストを編集しても、その1つのジェネレーターにしか影響せず、残したままのminecraft:エントリは次回の読み込み時に再び展開されます。 - 新しいカスタムバイオームのサポートを全体に追加するのは、設定変更ではなくMagmaCoreの変更です。 ワールドジェネレーターがBetterStructuresの認識しないバイオームを提供している場合、それをジェネレーターの
validBiomesV2に追加するのは、その1つのジェネレーターに対するローカルな回避策にすぎません。正しくマッピングさせるにはMagmaCoreのマッピングテーブルに追加する必要があり、これはコードの変更です — ymlファイルで解決しようとするのではなく、リクエストを出してください。
validBiomesV2 にカスタムバイオームを直接書くこともできます(すでに : を含むものはそのまま扱われ、それ以上展開されません)。特定の1つのカスタムバイオームだけにスポーンさせたい一点物のジェネレーターには、これが正しい方法です。
MagmaCoreが nothing にマッピングしているバイオームは意図的に除外されます — 構造物に適さないと判断されたカスタムバイオームであり、どのバニラバイオームからも引き込まれることはありません。
treasureFilename
チェストの戦利品用のトレジャーファイルを設定します。これはスキマティック設定で上書きされない限り、このジェネレーターを使用するすべての建築物に適用されます。
generateLootInBarrels と barrelTreasureFilename
BetterStructuresでは、樽もチェストと並ぶ第二の戦利品コンテナとして扱われるようになりました。
generateLootInBarrels(デフォルトtrue)は、このジェネレーターによって配置された構造物内の樽を満たすかどうかを切り替えます。falseに設定すると、樽は手付かずのままになります。barrelTreasureFilename(デフォルトtreasure_barrel_food.yml)は、それらの樽を満たす際にロールされるトレジャーファイルを選択します。デフォルトでは軽量な食料中心のルートテーブルが提供されますが、任意のトレジャーファイルを指定できます。
両方のオプションは、スキマティック設定内の対応するbarrelTreasureFilenameフィールドによってスキマティック単位で上書きできます。