建立生成器
生成器
生成器是 BetterStructures 配置系統中最強大的部分。預設有 29 個生成器,共同管理著 BetterStructures 目前發佈的建築;雖然你可以建立自己的生成器,但也可以直接使用現有的作為捷徑。
生成器會告訴外掛東西究竟應該在哪裡生成,並定義戰利品表。預設生成器的命名方式也很容易讓人猜到它們的功能。
生成器配置選項
| 鍵 | 預設值 | 必需 | 描述 |
|---|---|---|---|
isEnabled | true | ❌ | 生成器是否啟用。將其設為 false 也會讓所有指向此生成器的 schematic 停止註冊,因此這是一次關閉整組結構最快的方式。 |
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 有大量地下空間,因此有兩個地下設定。兩者都有可以確保在各深度均勻分佈,防止玩家錯過結構。
按維度劃分的 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 按生成器覆蓋。
上述兩列天空數值是加在該欄位最高方塊之上的偏移量,並非絕對 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 外掛共用。
這帶來兩個實際影響:
- 你在隨附的
generator_surface_*.yml檔案中看到的長串生態群系清單是產生出來的輸出,而非真正的來源。 載入時,BetterStructures 會讀取validBiomesV2,在 MagmaCore 表格中查找每個minecraft:項目,附加所有映射到它的自訂生態群系,然後將展開後的清單直接寫回生成器檔案。因此你原本只寫兩行的生成器,可能會變成上百行。編輯那份展開後的清單只會影響該生成器,而你保留在其中的任何minecraft:項目,在下次載入時仍會再次展開。 - 為所有人新增某個自訂生態群系的支援,屬於 MagmaCore 的變更,而非設定變更。 若某個世界生成器提供了 BetterStructures 無法辨識的生態群系,把它加進某個生成器的
validBiomesV2只是針對該生成器的本地權宜之計。要讓它被正確映射,必須將它加入 MagmaCore 的映射表,那是程式碼變更——請提出需求,而不要試圖在 yml 檔案中解決。
你仍然可以直接在 validBiomesV2 中指名某個自訂生態群系(任何已含有 : 的項目都會原樣採用,不會再進一步展開),對於只應在某個特定自訂生態群系中生成的一次性生成器來說,這才是正確做法。
被 MagmaCore 映射為 nothing 的生態群系會被刻意排除——它們是被認定為不適合放置結構的自訂生態群系,任何原版生態群系都不會把它們帶入。
treasureFilename
設定箱子戰利品的寶藏檔案。除非在 Schematic 設定 中覆蓋,否則這適用於使用此生成器的所有建築。
generateLootInBarrels 與 barrelTreasureFilename
BetterStructures 現在將木桶視為與箱子並列的第二種戰利品容器。
generateLootInBarrels(預設true)控制此生成器所放置之結構內的木桶是否會被填入物品。將其設為false即可保留木桶原本的內容不被變動。barrelTreasureFilename(預設treasure_barrel_food.yml)決定在填充這些木桶時要 roll 哪個寶藏檔案。預設提供的是一個以食物為主、份量輕巧的戰利品表,但你可以將其指向任何寶藏檔案。
這兩個選項都可以在個別 schematic 設定中以同名的 barrelTreasureFilename 欄位覆寫。