跳至主要內容

建立生成器

生成器

生成器是 BetterStructures 配置系統中最強大的部分。預設有 29 個生成器,共同管理著 BetterStructures 目前發佈的建築;雖然你可以建立自己的生成器,但也可以直接使用現有的作為捷徑。

生成器會告訴外掛東西究竟應該在哪裡生成,並定義戰利品表。預設生成器的命名方式也很容易讓人猜到它們的功能。

生成器配置選項

預設值必需描述
isEnabledtrue生成器是否啟用。將其設為 false 也會讓所有指向此生成器的 schematic 停止註冊,因此這是一次關閉整組結構最快的方式。
structureType-結構生成位置(見下表)
lowestYLevel-59生成的最低 Y 級別
highestYLevel320生成的最高 Y 級別
validWorlds全部允許結構可以生成的世界列表
validWorldEnvironments全部允許NORMALNETHERTHE_ENDCUSTOM
validBiomesV2所有生態群系有效生態群系列表(namespace:key 格式)
treasureFilename-箱子戰利品的寶藏檔案
generateLootInBarrelstrue此生成器放置的結構中之木桶是否應被填入戰利品
barrelTreasureFilenametreasure_barrel_food.yml為此生成器填入木桶時所使用的寶藏檔案

structureType

設定建築的結構類型。你可以為單個生成器指定多個結構類型!

類型主世界/自訂下界終界描述
SURFACE地表類似地表的點地表在世界地表生成
SKY最高方塊上方 80-120 格在 Y 45 到 Y 100 之間找到的空氣空間最高方塊上方 80-120 格在天空生成(可在 config.yml 中配置)
UNDERGROUND_SHALLOWY 0-50Y 60-120Y 0-80淺層地下結構
UNDERGROUND_DEEPY -53 到 0Y 5-60Y 0-80深層地下結構
LIQUID_SURFACE水(海洋)Y 31 的岩漿海不套用液體檢查在液體表面生成
DUNGEON用於模組化地下城放置

天空範圍是套用在該欄位世界最高方塊之上的偏移量,並非絕對 Y 高度。

多結構類型範例
structureType:
- SURFACE
- UNDERGROUND_SHALLOW

這允許同一生成器在多個位置生成結構,例如同時在地表和淺層地下區域。

注意:由於 Minecraft 有大量地下空間,因此有兩個地下設定。兩者都有可以確保在各深度均勻分佈,防止玩家錯過結構。


按維度劃分的 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

這些預設值可以使用 lowestYLevelhighestYLevel 按生成器覆蓋。

上述兩列天空數值是加在該欄位最高方塊之上的偏移量,並非絕對 Y 高度。主世界/自訂與終界的天空偏移量,都會在每次放置時於各自的最小值與最大值之間隨機擲出。

下界完全忽略那些偏移量:BetterStructures 不會在最高方塊上方建造,而是掃描該直行 Y 45 到 Y 100 之間,尋找至少 20 格高的空氣空腔並把結構放進去。如果不存在這樣的空腔,該區塊就不會生成任何東西。


自訂生態群系支援

BetterStructures 自動支援來自 Terralith、Iris、Terra 和 TerraformGenerator 等世界生成器的自訂生態群系。

當你在 validBiomesV2 中指定原版生態群系時,外掛會自動包含相容的自訂生態群系:

validBiomesV2:
- minecraft:plains
- minecraft:forest

這會在原版生態群系和所有映射到這些類型的自訂生態群系(例如 terralith:blooming_plains)中生成結構。

映射表實際存放的位置

自訂生態群系對原版生態群系的映射表並非存放在 BetterStructures 中。它是一份寫死在 MagmaCore(內建於 BetterStructures 的共用函式庫)中的單一表格,並與其他需要它的 MagmaGuy 外掛共用。

這帶來兩個實際影響:

  1. 你在隨附的 generator_surface_*.yml 檔案中看到的長串生態群系清單是產生出來的輸出,而非真正的來源。 載入時,BetterStructures 會讀取 validBiomesV2,在 MagmaCore 表格中查找每個 minecraft: 項目,附加所有映射到它的自訂生態群系,然後將展開後的清單直接寫回生成器檔案。因此你原本只寫兩行的生成器,可能會變成上百行。編輯那份展開後的清單只會影響該生成器,而你保留在其中的任何 minecraft: 項目,在下次載入時仍會再次展開。
  2. 為所有人新增某個自訂生態群系的支援,屬於 MagmaCore 的變更,而非設定變更。 若某個世界生成器提供了 BetterStructures 無法辨識的生態群系,把它加進某個生成器的 validBiomesV2 只是針對該生成器的本地權宜之計。要讓它被正確映射,必須將它加入 MagmaCore 的映射表,那是程式碼變更——請提出需求,而不要試圖在 yml 檔案中解決。

你仍然可以直接在 validBiomesV2 中指名某個自訂生態群系(任何已含有 : 的項目都會原樣採用,不會再進一步展開),對於只應在某個特定自訂生態群系中生成的一次性生成器來說,這才是正確做法。

被 MagmaCore 映射為 nothing 的生態群系會被刻意排除——它們是被認定為不適合放置結構的自訂生態群系,任何原版生態群系都不會把它們帶入。


treasureFilename

設定箱子戰利品的寶藏檔案。除非在 Schematic 設定 中覆蓋,否則這適用於使用此生成器的所有建築。


generateLootInBarrels 與 barrelTreasureFilename

BetterStructures 現在將木桶視為與箱子並列的第二種戰利品容器。

  • generateLootInBarrels(預設 true)控制此生成器所放置之結構內的木桶是否會被填入物品。將其設為 false 即可保留木桶原本的內容不被變動。
  • barrelTreasureFilename(預設 treasure_barrel_food.yml)決定在填充這些木桶時要 roll 哪個寶藏檔案。預設提供的是一個以食物為主、份量輕巧的戰利品表,但你可以將其指向任何寶藏檔案。

這兩個選項都可以在個別 schematic 設定中以同名的 barrelTreasureFilename 欄位覆寫。