跳至主要內容

建立生成器

生成器​

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

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

生成器配置選項​

鍵預設值必需描述
isEnabledtrue❌生成器是否啟用。將其設為 false 也會讓所有指向此生成器的 schematic 停止註冊,因此這是一次關閉整組結構最快的方式。
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-49在 Y 60-119 掃描固體區域在 Y 0-79 掃描固體區域淺層地下結構
UNDERGROUND_DEEP初始 Y -53 到 -1沿 Y 60-6 向下掃描固體區域在偏移和邊界調整前從 Y 0 開始深層地下結構
LIQUID_SURFACE最高方塊處的液體Y 31 的岩漿,上方需為空氣無初始液體檢查,仍會檢查地形適配在液體表面生成
DUNGEON✅✅✅為獨立的模組生成器系統保留;單獨設定此類型不會將 schematic 變成模組化地下城

天空範圍是該直行最高方塊上方的偏移量,不是絕對 Y 座標。地下範圍描述 schematic 偏移和維度邊界調整前的初始選擇或掃描。下界天空掃描會走訪 Y 45-99。

多結構類型範例
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

生成器的 lowestYLevel 和 highestYLevel 用來篩選候選錨點,不會取代維度層級的地下邊界,也不會重新定義天空偏移範圍。

上述兩列天空數值是加在該欄位最高方塊之上的偏移量,並非絕對 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 中。它是一份寫死在 MagmaCore(內建於 BetterStructures 的共用函式庫)中的單一表格,並與其他需要它的 MagmaGuy 外掛共用。

這帶來兩個實際影響:

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

你也可以在 validBiomesV2 中直接指定自訂生態群系。非 minecraft: 命名空間會直接使用,不會繼續展開,適合只在某個特定自訂生態群系中生成結構的生成器。

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


treasureFilename​

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

填充箱子前,生成器仍必須解析到有效的箱子寶藏設定。schematic 覆寫無法彌補生成器寶藏檔案缺少或無效的問題。無效的覆寫會產生警告,並回退到生成器的表。


generateLootInBarrels 與 barrelTreasureFilename​

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

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

schematic 的 barrelTreasureFilename 可以覆寫戰利品表。生成器必須同時具有 generateLootInBarrels: true 和有效的木桶寶藏設定;schematic 覆寫無法繞過任一要求。無效的覆寫會產生警告,並回退到生成器的表。