使用結構塊載入整個 Minecraft 結構
過去我對結構塊進行了一些實驗,並且知道如何使用它們載入單個結構。例如,如果我想載入 End Ship 或 Fossil,我只需在塊 GUI 中選擇相應的結構文件並點擊載入。但是,如果我想只使用結構塊(沒有模組或編輯器)來生成整個結構怎麼辦?像一個完整的末地城、下界要塞等?我在網上找不到任何關於如何做到這一點的教程。任何答案將不勝感激。
首先讓我們從基礎開始:
- 啟動(提供紅石脈衝)結構塊會啟動其目前的主要功能(載入或保存)。這允許裝載結構的自動化。
- 結構塊保存的結構可以包含其他結構塊(甚至它本身 - 這對新手來說是無窮無盡的困惑源,“為什麼我的 LOAD 塊不斷轉換為 SAVE 塊?” - 因為它在結構內部,並且在在你保存結構的那一刻,它是一個 SAVE 塊,所以你將它恢復到之前的狀態。)
警告:在它自己的結構中包含一個 LOAD 塊(用一個單獨的 SAVE 塊以相同的名稱保存它)與隨後的技巧結合起來是非常危險的。這是一種非常強大的技術,但非常容易失控,然後會產生可怕的 後果。我們想要實現的目標不需要這種技術,但它仍然很容易意外發生,因此請務必仔細檢查您是否不會無限遞歸您的鏈。
- 作為結構一部分的觀察者在載入包含它們的結構後立即開火。這意味著指向結構塊的觀察者,作為結構的一部分,將立即啟動該結構塊。
…並且新載入的結構可以包含具有自己的觀察者的其他結構塊,等等 - 你可以看到它的去向嗎?這已經是保存和恢復任意大小的任何靜態建構所必需的工具集 - 通過將其分割成單獨的結構並從“根”載入它們。
- 替代現實。
以上有一個缺點 - 結構塊和觀察者分散在各處。我們如何處理它?通過保存兩個版本的“現實”。
在這裡,我們有兩個結構 - 一個砂岩和一個木板。結構塊的放置方式使得兩者之間存在重疊。左邊的結構塊將是我們的“根”,從砂岩部分開始,整個東西從這裡產生。右邊的在木板結構之外,用來保存它的“原始”版本——沒有結構塊,沒有觀察者。
然後在保存它之後,我們改變現實——在它自己的結構體積內添加一個 LOAD 結構塊,和一個觀察者——由一個額外的實體塊分隔,這樣我們就不會同時觸發兩個結構塊。我們不會觸及木板結構的 SAVE 塊——它已經擁有我們想要的“乾淨”版本作為最終版本。相反,我們使用砂岩結構的 SAVE 塊。
現在,如果我們載入“根”砂岩結構,它還會載入木板塊的 LOAD 塊,以及它的觀察者。觀察者開火,並且在沒有結構塊和觀察者的情況下載入了木板片的變體- 覆蓋,刪除它們。
像這樣的連結結構,您可以從一個結構塊生成任意大的建構 - 並擦除“構造”部分。
值得補充的是:如果你不想清除建築物周圍的地形,請學會愛上結構虛空塊 - 結構像任何其他塊一樣保存和恢復
minecraft:air
,而結構虛空是一種特殊的空氣,不會取代任何東西以前有。如果您想隨機生成 - 只是對概念的簡要描述:可以使用非常類似於上述的一組技巧 - 但不是不可避免地載入包含在父結構中的一個固定結構塊,而是包含一行包含一系列“替代”結構的結構塊;保存並稍後生成一個包含紅石隨機化器的特殊“技術”結構它從包含在“父”中的數組中選擇一個備選方案(然後通過載入在其自身位置僅由空氣組成的結構來迅速擦除自身),因此產生一個隨機選擇的“延續”,它本身可能是一個樹結構的“葉子”(分支生成結束)、分支(末尾有更多變體)或叉子(多組結構數組在不同方向分支)。平衡“葉子”和“叉子”的數量至關重要,否則您的結構將逃跑無限蔓延。也可以添加一個特殊的“終點”結構,如果產生的話,它將停止整個生成——而不是更多的 LOAD 塊載入更多的分支,而是載入一個只選擇葉結構的隨機化器的替代品(比如,“#1”替代品始終是“葉子”,並且這個只啟動替代#1 而不是隨機的),然後自動觸發一個 SAVE 塊,以與隨機化器結構相同的名稱保存替換,進行任何後續嘗試生成隨機化器通過其他分支,產生終止它們的替換。