《我的世界》1.10新特性結構方塊詳細教程

《我的世界》1.10新特性結構方塊詳細教程

本文所有代碼均可復制在【】中的所有內容,包括空格和符號。

在快照16w20a中,Mojang終於放出了結構方塊(Structure Block)的功能。和之前所知的一樣,結構方塊有四種模式,如下圖所示:

《我的世界》1.10新特性結構方塊詳細教程

從左到右依次為:

[D]Data mode – game logic marker(數據模式 – 游戲邏輯標記)

《我的世界》1.10新特性結構方塊詳細教程

[S]Save mode – write to file(保存模式 – 寫入文件)

《我的世界》1.10新特性結構方塊詳細教程

[L]Load mode – load from file(載入模式 – 載入文件)

《我的世界》1.10新特性結構方塊詳細教程

[C]Corner mode – placement and size marker(角落模式 – 放置與大小標記)

《我的世界》1.10新特性結構方塊詳細教程

一、結構方塊初體驗

讓我們先來學習基本的操作。首先,我們需要獲取結構方塊:

代碼:【/give @p minecraft:structure_block】

接下來,放置一個結構方塊,並按左下角的[?]按鈕將其切換到Save模式。

《我的世界》1.10新特性結構方塊詳細教程

在這個界面中,結構名稱是很重要的,它標識了一個結構,在很多地方都要用到。相對結構方塊的位置即結構范圍的開始位置,和結構大小一起標記了整個結構的區域。

我們把結構名稱設為「1」,位置設為0 1 0,大小設為4 4 4,然後點擊Done。

《我的世界》1.10新特性結構方塊詳細教程

如果設置正確的話,那麼便會出現如圖所示的方框。現在可以在這個方框的范圍內放置方塊~放好之後回到Save方塊的界面中,點擊右下角的SAVE。

《我的世界》1.10新特性結構方塊詳細教程

一切順利,提示結構保存成功。那麼如何加載這個模型呢?這時就需要用Load方塊了。放置並切換到Load模式後如圖所示。

《我的世界》1.10新特性結構方塊詳細教程

參數大致與Save相同。我們把結構名稱設為和之前相同的「1」,位置設為0 1 0,然後點擊Done。

《我的世界》1.10新特性結構方塊詳細教程

一片寂靜,什麼都沒有。為什麼呢?因為還沒加載呢。回到界面中,點擊LOAD。

《我的世界》1.10新特性結構方塊詳細教程

提示結構位置已經准備好,再點一次LOAD。

《我的世界》1.10新特性結構方塊詳細教程

結構順利加載,完工!

加載時會清除加載范圍內的方塊,並替換為保存時的方塊。

結構方塊可以用紅石激活,你懂得。

二、加載模式的進階功能

細心的同學可能已經發現了,在保存模式的下方有幾個奇怪的按鈕。

《我的世界》1.10新特性結構方塊詳細教程

它們就是比/clone更強大的地方了:旋轉和鏡像。

0 90 180 270:沿y軸旋轉,從上往下看是逆時針。

中間奇怪的|就是鏡像了,點擊它可以在「|」(不鏡像)、「」(沿xy平面鏡像)、「^ v」(沿yz平面鏡像)之間切換。

旋轉和翻轉可以疊加,順序應該是先鏡像再旋轉。

三、實體過濾和保存

結構方塊的一個更實用的功能是它可以保存實體!在之前的截圖中有提到過:保存模式和加載模式可以選擇是否包含實體。如果保存模式的結構方塊選擇了包含實體,那麼在結構范圍內的實體都會被保存進結構的數據。同樣,如果加載模式的結構方塊選擇了包含實體,那麼結構的數據中的實體才會被加載出來。

《我的世界》1.10新特性結構方塊詳細教程

需要復制實體時,需要把保存和加載的包含實體都設為ON,這樣實體才會被復制。就是這樣簡單~

注意!加載時不會清空加載區域中原有的實體,所以別忘了手動清除實體~

四、結構空間的使用

在這一部分,我將會介紹另一個方塊:結構空間(Structure Void)。獲取它的指令是:

代碼:【/give @p minecraft:structure_void】

《我的世界》1.10新特性結構方塊詳細教程

放置後結構空間是看不見的,但是用指針指著它時會出現一個小的輪廓。我們可以打開保存模式中的顯示不可見方塊來方便觀察它。

《我的世界》1.10新特性結構方塊詳細教程

圖中標記為藍色小方塊的是空氣,紅色小方塊就是結構空白了。這個方塊的用途很特別,它可以使得加載區域中的部分原有方塊保持原樣,不被替換。

加載前:

《我的世界》1.10新特性結構方塊詳細教程

加載後:

《我的世界》1.10新特性結構方塊詳細教程

應該很容易明白吧。

另外,結構空間是沒有碰撞箱的,而且它不會被水流沖毀,這樣就能做一些有趣的效果。

《我的世界》1.10新特性結構方塊詳細教程

放在物品展示框里還能做成水龍頭(還能轉噗)

《我的世界》1.10新特性結構方塊詳細教程

五、游戲內自帶結構

從1.9開始,新添加的結構都用了結構方塊保存(雖然1.9的結構方塊沒有界面)。使用了結構方塊進行生成的建築有:末地城、雪屋和新添加的化石。它們可以通過指定的結構名稱來生成。可用的結構名稱如下:

末地城:

代碼:【endcity/base_floor
endcity/base_roof
endcity/bridge_end
endcity/bridge_gentle_stairs
endcity/bridge_piece
endcity/bridge_steep_stairs
endcity/fat_tower_base
endcity/fat_tower_middle
endcity/fat_tower_top
endcity/second_floor
endcity/second_floor_2
endcity/second_roof
endcity/ship
endcity/third_floor
endcity/third_floor_b
endcity/third_floor_c
endcity/third_roof
endcity/tower_base
endcity/tower_floor
endcity/tower_piece
endcity/tower_top】

雪屋:

代碼:【igloo/igloo_bottom
igloo/igloo_middle
igloo/igloo_top】

化石:

代碼:【fossils/fossil_skull_01
fossils/fossil_skull_01_coal
fossils/fossil_skull_02
fossils/fossil_skull_02_coal
fossils/fossil_skull_03
fossils/fossil_skull_03_coal
fossils/fossil_skull_04
fossils/fossil_skull_04_coal
fossils/fossil_spine_01
fossils/fossil_spine_01_coal
fossils/fossil_spine_02
fossils/fossil_spine_02_coal
fossils/fossil_spine_03
fossils/fossil_spine_03_coal
fossils/fossil_spine_04
fossils/fossil_spine_04_coal】

因為結構名稱中不能直接輸入/,所以你可以選一個名稱復制到加載模式的方塊中試試看。比如,這是endcity/ship:

《我的世界》1.10新特性結構方塊詳細教程

游戲內置的結構存儲在游戲jar中的assets/minecraft/structures/[名稱].nbt中,[名稱]即為上述列出的名稱,修改這些文件可用改變游戲默認生成的建築的形態。

六、角落模式與數據模式

之前我們只介紹了保存模式和加載模式,而剩下的兩種模式也是比較有用的。

角落方塊可以幫助使用者快速確定保存的區域。放置兩個結構方塊並切換到角落模式,把它們設置到同一個名稱;再放置一個保存模式的結構方塊,並設置為同一個名稱;左後點擊保存模式界面右邊的DETECT(檢測)按鈕自動識別區域。

《我的世界》1.10新特性結構方塊詳細教程

如果設置正確,那麼效果應該如下所示:

《我的世界》1.10新特性結構方塊詳細教程

如果只放置了一個角落模式的結構方塊,那麼保存模式的結構方塊本身會作為角落來進行選取;如果沒有或者有三個或以上的角落方塊,那麼檢測會失敗。

另外從目前來看,數據模式的方塊是用於游戲內自帶結構生成用的,用於標記特殊的地方(比如生成指定實體、箱子內容之類的)。例如下面是直接加載出來時endcity/ship內部的一堆數據模式的方塊:

《我的世界》1.10新特性結構方塊詳細教程

可以看出是內部生成滑翔翅的位置。如果不去修改內部自動結構的話,數據模式方塊應該和我們沒有什麼關系了。

七、不斷復制自己的結構

前面提到過,結構方塊可以用紅石激活。那麼我們就可以通過這個功能做一些有趣的事情。

搭建一個這樣的結構:

《我的世界》1.10新特性結構方塊詳細教程

命令方塊模式不用更改,指令設置為:

代碼:【setblock ~ ~1 ~ minecraft:redstone_block 0 replace】

下方的結構方塊設置為保存模式,位置設為(0, 1, 0),大小設為(1, 3, 1);上方的結構方塊設為加載模式,位置設為(0, 1, 0),名稱設為同一個,完成後點保存。

接下來再在一片空曠的地方放置一個結構方塊,設為加載模式並輸入前面的名稱,然後加載它。

《我的世界》1.10新特性結構方塊詳細教程

這個結構不斷地加載自身,一直達到世界頂部。然後就成了通天塔……

關於世界邊界:結構范圍可以越過世界邊界,邊界之外的部分會被視為空氣。如果保存范圍超出邊界,則超出部分會被視為空氣;如果加載部分超出邊界,那麼超出部分會不被改動。這是一個與clone不一樣的地方。

八、高級鏡子

註:本節部分靈感來自國外reddit

結構方塊提供了鏡像的功能,於是可以用來做一面鏡子,還能夠帶實體。不過需要注意的是,加載時不會清除原有的實體,所以直接高頻加載會導致實體不斷復制卡爆游戲(建議不要嘗試)……所以得記得清除實體(tp到虛空,用kill效果不佳)。

於是做成了這樣的設備。

《我的世界》1.10新特性結構方塊詳細教程

右邊的結構方塊保存區域(設為帶實體),左邊的結構方塊加載區域(也設為帶實體)並選擇鏡像。使用一串CB高頻來激活,順序為:tp加載區域中的所有非玩家實體到虛空->激活加載結構方塊->激活加載結構方塊。激活結構方塊是通過放紅石塊。

確定無誤後啟動裝置。正常的效果是在加載區域的方塊和實體都能夠鏡像(除了玩家自己)。

《我的世界》1.10新特性結構方塊詳細教程

畫、礦車、經驗球、藥水雲之類的都能鏡像(實體的方向可能會不一樣,上圖是趁機截的)。

《我的世界》1.10新特性結構方塊詳細教程

掛畫的內容也是一樣的(沒有鏡像233)(有部分畫會有錯位)。

九、結構方塊的文件格式

游戲內置的結構位於游戲jar中的assets/minecraft/structures文件夾中,而用戶定義的結構存儲於存檔中的structures文件夾中。下面以igloo_bottom為例介紹一下結構方塊的文件格式。

《我的世界》1.10新特性結構方塊詳細教程

代碼:【根標簽
┣ blocks(List) – 方塊列表
┣ entities(List) – 實體列表
┣ palette(List) – 方塊狀態模板列表
┣ size(List) – 結構大小
┣ author(String) – 結構作者
┗ version(Int) – 文件版本,當前為1】

先從簡單的開始講,version就不用說了,author是放置結構方塊的玩家的名稱,size是3個Int組成的List,存儲了結構在xyz三個方向上的大小。

接下來是entities,這是由一系列實體組成的List。

《我的世界》1.10新特性結構方塊詳細教程

代碼:【實體
┣ nbt(List) – 實體NBT
┣ blockPos(List) – 實體所在方塊位置
┗ pos(List) – 實體所在位置】

其中blockPos是由3個Int組成的List,儲存的是實體所在方塊的位置(簡單地說就是整數)。pos是由3個Double組成的List,儲存的是實體的確切位置(簡單地說就是小數)。

下面就是最重要的blocks和palette了。它們都是List,互相配合來存儲方塊信息。下面是blocks中一個方塊的格式:

代碼:【方塊
┣ nbt(List) – 方塊NBT(可選)
┣ pos(List) – 方塊位置
┗ state(Int) – 方塊狀態索引】

nbt和pos的意思是顯而易見的,重要的是state的值,它代表了方塊狀態在palette中的索引值,從0開始。下面是palette中一個方塊狀態的格式:

《我的世界》1.10新特性結構方塊詳細教程

代碼:【方塊狀態模板
┣ Properties(List) – 方塊狀態(可選)
┗ Name(String) – 方塊名稱】

Name中存儲的是方塊的名稱,例如minecraft:stone,而Properties中存儲的是一系列方塊狀態(用String保存)的列表,標簽名稱是狀態的名稱,例如variant,而內容即是狀態的內容,例如stone。

方塊中的state的值就是在方塊狀態列表中的索引,例如state為4時對應palette中的第5個方塊狀態模板。

來源:我的世界中文論壇

guest
0 Comments
Inline Feedbacks
View all comments