跳至主要內容

建立內容


建立建築​

建議先將結構控制在 100x100x100 方塊以下,便於配合地形和控制資源消耗。這是建議,不是硬性大小限制。更大的結構需要更多記憶體和放置處理,還需要位於世界高度限制內的合適位置。


特殊方塊​

BetterStructures 有兩種特殊方塊:屏障和基岩。WorldEdit 能貼上的其他方塊都會正常貼上,但屏障和基岩方塊是例外。

方塊行為使用場景
屏障不在該位置放置任何方塊 - 保留原始地形圓化貼上邊緣、將牆壁貼合洞穴、自然融合
基岩保留既有實心方塊;否則放置基座材料在不替換既有實心地形的情況下為鐵軌建立地板

生成告示牌​

BetterStructures 可以使用帶有特定文字的告示牌在指定位置生成來自 EliteMobs 和 MythicMobs 的怪物和 Boss,或把標記交給其他外掛處理。

生成告示牌會先被貼上,待方塊貼上完成後,在嘗試生成對應實體前立即移除。貼上期間可能看得到告示牌,移除也不代表生成成功。未知標籤、無效的原版實體類型或缺少 MythicMobs ID 會留下普通告示牌。若未安裝 EliteMobs 或 MythicMobs,使用其標籤的 schematic 會被整個排除出結構登錄表。

方塊貼上後,BetterStructures 會依下列順序完成結構:基座、清除地表結構上方殘留的樹木、戰利品容器、[spawn] 怪物、[elitemobs] Boss、[mythicmobs] 怪物、schematic 中儲存的實體,最後是 [custom] 標記。若有怪物或 Boss 生成失敗,其餘步驟會被略過,BuildPasteCompleteEvent 不會觸發,也不會發送新建築訊息。

告示牌類型第1行第2-4行所需外掛
原版怪物[spawn]第2行填入實體類型無
EliteMobs[elitemobs]Boss 檔案名稱,可分散於第2-4行EliteMobs
MythicMobs[mythicmobs]第2行填怪物名稱,第3行可選填等級MythicMobs
其他外掛[custom]標記 ID,可分散於第2-4行監聽 BuildCustomMarkerEvent 的外掛

立式、壁掛和懸掛式告示牌透過以 _SIGN 結尾的 Bukkit 材料名稱辨識,沒有固定木材清單。標籤要寫在正面,因為現代告示牌讀取的是 front_text,不是背面。在遊戲內輸入的文字、JSON 文字以及外掛寫入的文字元件,都會以純文字讀取。標籤不區分大小寫。實體 ID 和檔名必須準確,不能有多餘空格。

MythicMobs 等級行可選填。第 3 行為空時使用等級 1。小於 1 的數字會變為 1。等級不是數字,或怪物 ID 不是 MythicMobs 認得的 ID 時,生成會失敗,並略過該結構剩餘的收尾步驟。

生成告示牌範例

原版怪物​

[spawn]

ZOMBIE

在告示牌方塊的水平中心生成持久的殭屍。請使用可生成的 Spigot EntityType,例如盔甲架或終界水晶。列舉也包含世界無法直接生成的類型,因此名稱被接受不保證成功。若世界拒絕生成,會略過該結構剩餘的收尾步驟。

EliteMobs​

[elitemobs]

test_boss_with

_a_long_name

.yml

長檔名可寫在第 2 至 4 行,各行會不加分隔符號直接串接。啟用 protectEliteMobsRegions 且安裝 EliteMobs 和 WorldGuard 時,場地會保護方塊破壞和放置。每個生成的區域 Boss 都有一個區域。只有 Boss 設定了 removeAfterDeath: true,死亡時才會移除對應區域,因此會重生的 Boss 可能讓保護持續存在。EliteMobs 生成失敗(例如檔名找不到對應的 Boss)會略過該結構剩餘的收尾步驟。

MythicMobs​

[mythicmobs]

SkeletalKnight

10

生成10級的 SkeletalKnight。

自訂標記​

[custom]

Zombie_Plus

BetterStructures 本身不會對這個 ID 做任何處理。在結構的方塊、戰利品、怪物和實體都貼上後,它會移除告示牌,並以該 ID 和告示牌位置觸發 BuildCustomMarkerEvent,讓其他外掛能在該處生成自己的怪物、放置方塊或執行任何其他邏輯。第 2 至 4 行會像 EliteMobs 檔名一樣不加分隔符號直接串接,每一行也可單獨取得。若沒有外掛監聽,標記就只會消失。第 2 至 4 行皆為空白的 [custom] 告示牌會保留為普通告示牌,並記錄一則警告。自訂標記適用於一般結構,不適用於模組化地下城。


Schematics​

Schematics 是由 WorldEdit 或 FastAsyncWorldEdit 生成的檔案,包含 BetterStructures 將要使用的建築方塊。 BetterStructures 使用 .schem 檔案格式(現代 WorldEdit 標準)。請確保以 .schem 格式儲存你的 schematics,而不是舊版的 .schematic 格式。

複製和儲存可參閱 WorldEdit 剪貼簿指南。基本步驟如下:

  1. 選擇建築的一個角,使用指令 //pos1
  2. 選擇對角的另一個角,使用指令 //pos2
  3. 使用指令 //copy
  4. 使用 //schem save <schematicname>,填入所需檔名。
  5. 將產生的 .schem 從編輯器的 schematic 資料夾複製到 plugins/BetterStructures/schematics,然後重新載入 BetterStructures。WorldEdit 的預設資料夾是 plugins/WorldEdit/schematics。
worldedit documentation image from their docs

確保在點1執行 //pos1 指令,在點2執行 //pos2 指令!


錨點​

錨點是你執行 schematic 的 //copy 指令的位置。它們決定了結構放置到世界中時的原點。

建築類型建議錨點位置原因
地表地板最低點確保正確的地面對齊
地下建築頂部允許正確確定掩埋深度
液體水面上方正確的水面放置
空中/天空建築頂部正確的高度定位

請有意識地選擇複製位置。偏移會儲存在 schematic 中,影響放置和旋轉。靠近建築便於檢查這種關係;距離本身不會增加儲存選區中的方塊數。


Schematic 設定

每個 schematic 檔案都有一個 schematic 設定。如果 schematic 檔案剛被新增到伺服器,設定將在重新啟動後或執行 /betterstructures reload 後生成。

.yml 產生在與 .schem 相同的資料夾中。plugins/BetterStructures/schematics 會遞迴掃描,因此子資料夾中的 schematic 設定也寫在原處。整棵 schematics 目錄樹應使用唯一檔名。結構檔名重複時,BetterStructures 按穩定的絕對路徑順序載入第一個檔案,並記錄所選和略過的路徑。位元組完全相同的重複檔案不論選哪一個都會載入相同的結構,因此會直接略過而不發出警告。它不會刪除檔案,也不會在所選檔案損壞時改用被略過的副本。模組檔名重複仍會阻止初始化。

沒有對應 .schem 的 .yml 不會建立結構。載入器從找到的 schematic 檔案開始處理。只要任一選定 schematic 無法讀取,初始化就會失敗,不接受部分結構登錄表。即使其設定本來會停用該結構,也一樣。

這些設定允許你為 schematic 貼上設置以下選項:

鍵預設值必需描述
isEnabledtrue❌schematic 是否啟用。如果停用,將不會在任何地方放置。
weight1.0❌合格 schematics 之間的相對選擇權重。使用有限正值。2.0 是 1.0 的兩倍權重。負值或非有限數值會記錄一則警告並變為 0,而權重為 0 的結構永遠不會被選中。停用結構請用 isEnabled: false。
pedestalMaterial環境備用材料❌基座的備用材料,使用 Spigot Material 名稱。存在地形取樣材料時優先使用取樣。
generatorConfigFilename-✅生成器設定檔案名稱,包括 .yml 副檔名。沒有此項的 schematics 不會生成。
treasureFile生成器預設值❌覆蓋此結構箱子的寶藏檔案。通常最好改為修改生成器。
barrelTreasureFilename生成器預設值❌覆蓋此結構木桶的寶藏檔案。預設使用生成器(或其備援 treasure_barrel_food.yml)所提供的設定。

戰利品容器: BetterStructures 會自動偵測放置在 schematics 中的箱子、陷阱箱和一般(未上色)的潛影盒,並使用箱子寶藏檔案填入物品。木桶則會以另一個獨立的木桶寶藏檔案(預設為 treasure_barrel_food.yml)來填入,並可在生成器中以 generateLootInBarrels: false 個別停用。這些容器不需要特殊的告示牌或設定即可被辨識。

Schematic 的寶藏覆寫項目仍要求生成器為該容器類型提供有效寶藏表。木桶還要求生成器啟用木桶戰利品。無效覆寫項目會警告並退回生成器設定;既有容器內容會保留,新戰利品使用空槽位。

新產生設定的 generatorConfigFilename 為空。選擇已載入的檔案,例如 generator_surface_global.yml,然後執行 /bs reload。該欄位有效前,結構不會生成,也不會出現在 /bs place 自動完成中。主控台會報告受影響的設定路徑和可用生成器範例。

已停用的生成器: 若 generatorConfigFilename 所指定的生成器設有 isEnabled: false,該 schematic 會被完全略過,即使 schematic 本身的 isEnabled 為 true 也一樣。

設定詳情

pedestalMaterial​

對於地表和地下建築,基座在底部方塊非空氣的每一列下方最多填充十個方塊,遇到不被視為可替換地形的方塊就停止。空中和液體結構不進行這種向下填充。Schematic 內部的基岩標記也使用同樣的材料選擇。

外掛在放置體積周圍取樣地表和地下材料,按出現頻率加權,從對應組別中隨機選擇,不總是選擇最常見的材料。設定的 pedestalMaterial 僅在對應取樣組為空時使用,不會覆寫既有取樣組。請選擇實心方塊材料。未設定備用材料時,地獄使用地獄岩,終界使用終界石,其他環境使用石頭。空中結構略過取樣和設定的備用材料,其基岩標記使用環境預設材料。

generatorConfigFilename​

範例:generatorConfigFilename: generator_surface_global.yml

生成器檔案位於生成器設定資料夾中。

treasureFile​

有關更多詳細資訊,請參閱寶藏檔案文件和生成器文件。

自訂內容

BetterStructures 中發佈的所有內容都是可編輯的。你可以根據自己的喜好修改任何 schematic 檔案和生成器設定。

上面的內容建立指南也可以幫助你編輯現有內容。


疑難排解

如果你的結構沒有生成,請檢查:

  • Schematic 檔案是 .schem 格式
  • 指定了有效的生成器設定
  • isEnabled 選項設定為 true,schematic 設定與它所指向的生成器兩邊都要
  • 若 schematic 位於某個內容套件的資料夾中,該套件已安裝(其 content_packages 檔案中為 isEnabled: true)。停用套件的整個資料夾都會被略過。
  • 你的 WorldEdit/FastAsyncWorldEdit 版本相容
  • .yml 位於 .schem 旁邊,而不是多餘的 plugins/BetterStructures/plugins/BetterStructures/... 目錄樹中。舊版本曾誤寫到那裡。刪除多餘副本前,先比較並保留有用設定,再於重新載入後檢查相鄰設定和生成器。

主控台報告結構檔名重複時,請檢查所選和略過的路徑,為需要的結構及其設定使用唯一檔名。modules 下的重名仍會阻止初始化,必須在重新啟動前解決。

.schematic_cache 資料夾​

BetterStructures 將結構 schematic 的轉換副本儲存在 plugins/BetterStructures/.schematic_cache,模組和元件載入器分別使用 modules 和 components 子資料夾。舊 .schem 可能需要 Minecraft 資料轉換,因此會儲存並重用結果。內容重新載入時,未變更的結構和模組剪貼簿也可從記憶體重用。

你不需要管理這個資料夾:

  • 磁碟項目以 schematic 內容、Minecraft 資料版本和 WorldEdit 版本為鍵,改變任一項都會重建受影響項目
  • 載入器讀取檔案或偵測到刪除時,只要能計算至少一個目前的快取鍵,就會清理過期磁碟項目;移除全部內容不會自動清空整個快取
  • 它始終只是一項最佳化——若某個項目遺失、無法讀取或驗證失敗,就會改讀原始的 .schem

刪除它是安全的;下次啟動只會重新建立它,並花費較長時間。

「Skipped N unsupported legacy block entries」​

轉換舊 schematics 時,Mojang 的 DataFixerUpper 可能反覆輸出 Unsupported key: 訊息,包括 minecraft:bed。BetterStructures 統計相符訊息,並用一條資訊日誌報告涉及的鍵。這是轉換輸出的摘要,不是結構載入器的獨立故障。

若摘要處理無法連接伺服器的日誌後端,會通知一次並保留原始訊息。其他載入錯誤或可見結構問題需要單獨檢查。摘要本身既不能證明安裝損壞,也不能驗證貼上結果正確。

如果生成告示牌不起作用:

  • 驗證告示牌格式與範例完全匹配
  • 對於 EliteMobs/MythicMobs,確保外掛已安裝
  • 檢查實體類型/怪物名稱拼寫是否正確
  • 查看伺服器日誌以取得具體錯誤訊息