第八十章 結(jié)構(gòu)方塊 下
?。ū菊乱延?022/7/20日重寫)
?。ū菊聦懽鲿r(shí),作者使用的是基巖Windows10版1.19.10、基巖Android版1.19.10、Java版1.12.2和Java版1.19)
(強(qiáng)烈推薦在游玩Minecraft時(shí)閱讀此章)
?。ū菊碌膬?nèi)容由于和指令沒(méi)有太大關(guān)系,所以并不會(huì)講得很詳細(xì))
在上一章,我們了解了結(jié)構(gòu)方塊五個(gè)模式中最重要的兩個(gè)模式:儲(chǔ)存和加載。這一章,我們將會(huì)了解剩下的3個(gè)模式:角落、數(shù)據(jù)和3D導(dǎo)出。
—③角落模式
角落模式(Corner Mode)和儲(chǔ)存模式的結(jié)構(gòu)方塊是互相配合的。在儲(chǔ)存模式的結(jié)構(gòu)方塊中,有一個(gè)『探測(cè)』按鈕,可以快速地通過(guò)同名的角落模式結(jié)構(gòu)方塊檢測(cè)結(jié)構(gòu)的大小和位置。
那到底怎么使用呢?舉個(gè)簡(jiǎn)單的例子:
████████?█
███▓▓▓▓▓██
██?███████
其中,?代表著儲(chǔ)存模式的結(jié)構(gòu)方塊,?代表著角落模式的結(jié)構(gòu)方塊,陰影部分代表我們要保存的結(jié)構(gòu)。
我們只需要在儲(chǔ)存模式中,寫上結(jié)構(gòu)要存儲(chǔ)成的名稱,比如填寫『my:str』,然后在角落模式結(jié)構(gòu)方塊中的『結(jié)構(gòu)名稱』參數(shù)也寫上『my:str』,最后使用『探測(cè)』功能,游戲就會(huì)以這兩個(gè)結(jié)構(gòu)方塊的位置分別作為兩個(gè)頂點(diǎn)構(gòu)成一個(gè)長(zhǎng)方體,這個(gè)長(zhǎng)方體就是儲(chǔ)存的區(qū)域。游戲也會(huì)自動(dòng)更新儲(chǔ)存模式結(jié)構(gòu)方塊中的相對(duì)位置和大小兩個(gè)參數(shù)。最后,你只需要按下『保存』就可以將結(jié)構(gòu)存儲(chǔ)下來(lái)。
你也可以使用兩個(gè)角落方塊來(lái)選取區(qū)域:
████████?█
█?█▓▓▓▓▓██
██?███████
在這里,你只需要確保兩個(gè)?都寫上了相同的『結(jié)構(gòu)名稱』,并且和?的一致,最后使用『探測(cè)』功能,游戲就會(huì)自動(dòng)以這兩個(gè)?為頂點(diǎn)來(lái)選取區(qū)域。
需要注意的是,角落方塊選取的區(qū)域不能超過(guò)游戲規(guī)定的上限,也不能是一個(gè)2維甚至是1維的區(qū)域(即長(zhǎng)寬高都不能為0)。并且,如果有超過(guò)兩個(gè)同名的角落方塊,雖然游戲也能選取,但選取的區(qū)域會(huì)有些奇怪。
—④數(shù)據(jù)模式[僅Java版]
數(shù)據(jù)模式(Data Mode)主要的用途是用來(lái)自然生成結(jié)構(gòu),雖然說(shuō)在Java1.17以下版本結(jié)構(gòu)方塊的默認(rèn)模式都是數(shù)據(jù)模式,但它對(duì)于玩家的用處其實(shí)并不大。
數(shù)據(jù)模式的結(jié)構(gòu)方塊只有一個(gè)參數(shù):自定義數(shù)據(jù)標(biāo)簽名稱。你雖然能夠填寫一些參數(shù),但其實(shí)你并不能自己觸發(fā)數(shù)據(jù)模式的結(jié)構(gòu)方塊,這只能由游戲在自然生成的過(guò)程中觸發(fā)。
所以即使截止Java1.19版本,數(shù)據(jù)模式對(duì)于玩家來(lái)說(shuō)也沒(méi)有任何用途。但是,對(duì)于游戲來(lái)說(shuō),這東西有著很大的用途。數(shù)據(jù)模式內(nèi)填寫的東西是游戲內(nèi)自帶的函數(shù),游戲觸發(fā)數(shù)據(jù)模式結(jié)構(gòu)方塊時(shí)其實(shí)就是觸發(fā)指定的函數(shù),然后對(duì)諸如箱子之類的東西進(jìn)行修改,比如放上戰(zhàn)利品表之類的。如果玩家也能夠使用數(shù)據(jù)模式來(lái)觸發(fā)函數(shù),那這個(gè)數(shù)據(jù)模式瞬間就變得十分有用,上限就變得無(wú)限大??!
所以作者這邊就埋個(gè)坑,看看Mojang以后到底會(huì)不會(huì)允許玩家使用數(shù)據(jù)模式。
—⑤3D輸出模式[僅基巖版Windows10版本]
3D輸出模式(3D Export mode)有些類似于存儲(chǔ)模式,只不過(guò)它并不是儲(chǔ)存結(jié)構(gòu),方便玩家以后生成,而是直接將游戲內(nèi)的結(jié)構(gòu)導(dǎo)出為3D模型文件,以用于其他地方,比如動(dòng)畫制作、手辦制作等等。
需要注意的是,該模式僅僅適用于基巖版的Windows10版本(當(dāng)然,Windows11也能用,畢竟是套殼Windows10[滑稽])。
該模式有如下幾個(gè)選項(xiàng):
相對(duì)位置——不用講了,同存儲(chǔ)模式
結(jié)構(gòu)大小——也不用講了,同存儲(chǔ)模式
移除方塊——也不用講了
顯示邊框——還是不用講
導(dǎo)出——將選取的區(qū)域以3D模型文件.glb導(dǎo)出
導(dǎo)出后,你可以使用一些3D模型軟件來(lái)打開(kāi)文件,如畫圖3D、3D Viewer等等。你甚至還能導(dǎo)入到Photoshop等專業(yè)軟件里面進(jìn)行操作,可謂是Minecraft二創(chuàng)開(kāi)發(fā)利器。
回到正題。現(xiàn)在,結(jié)構(gòu)方塊的五個(gè)模式我們都知道怎么用了,但有個(gè)東西我們還沒(méi)講:
如何生成游戲自帶的結(jié)構(gòu)呢?
讓我們先來(lái)到你的游戲版本目錄,找到你游戲的jar文件:
.minecraft\versions\<游戲名稱>\<游戲名稱>.jar
至于怎么找到.minecraft文件夾,我們?cè)诘诹乱呀?jīng)研究過(guò)了。
接下來(lái),用壓縮軟件打開(kāi)這個(gè)jar文件,找到如下位置:
文件根目錄\data\minecraft\structures\
在這個(gè)structures文件夾里面,就放著游戲自帶的各種結(jié)構(gòu)文件。在Java1.19版本的jar文件中,這個(gè)目錄下有這么幾個(gè)文件夾:
ancient_city
bastion
end_city
fossil
igloo
nether_fossils
pillager_outpost
ruined_portal
shipwreck
underwater_ruin
village
woodland_mansion
不難發(fā)現(xiàn),這每個(gè)文件夾都對(duì)應(yīng)了游戲內(nèi)的一個(gè)結(jié)構(gòu),如village對(duì)應(yīng)村莊,end_city對(duì)應(yīng)末地城等等。
打開(kāi)其中的文件夾,你會(huì)發(fā)現(xiàn).nbt后綴的結(jié)構(gòu)文件和更多的文件夾。我們這邊就以ruined_portal目錄下的portal_1.nbt文件為例。在游戲中打開(kāi)結(jié)構(gòu)方塊,調(diào)整為加載模式,然后輸入結(jié)構(gòu)名稱為:ruined_portal/portal_1。接下來(lái)點(diǎn)擊加載,你就會(huì)驚喜的發(fā)現(xiàn)生成了一個(gè)廢棄地獄門!還有寶箱!
廢棄地獄門的寶箱由于在結(jié)構(gòu)保存的時(shí)候就帶有了Loot標(biāo)簽(戰(zhàn)利品表的NBT標(biāo)簽),因此不需要數(shù)據(jù)模式的結(jié)構(gòu)方塊就能夠加載出戰(zhàn)利品。如果你加載的是其他類型的如村莊的結(jié)構(gòu),就會(huì)發(fā)現(xiàn)它們的箱子大多上面都頂著一個(gè)數(shù)據(jù)模式的結(jié)構(gòu)方塊。
最后,讓我們了解一下『結(jié)構(gòu)空位』。
你在加載結(jié)構(gòu)時(shí),就算是空氣也會(huì)替代原本的方塊,那該如何使得原本的方塊不被替換呢?
使用結(jié)構(gòu)空位(Structure Void)就能夠解決這個(gè)問(wèn)題。
結(jié)構(gòu)空位是一個(gè)方塊,其ID為minecraft:structure_void。當(dāng)你在保存一個(gè)結(jié)構(gòu)時(shí),結(jié)構(gòu)內(nèi)的結(jié)構(gòu)空位雖然也會(huì)被保存,但游戲在加載結(jié)構(gòu)時(shí)并不會(huì)將結(jié)構(gòu)空位加載出來(lái),也就是說(shuō)結(jié)構(gòu)空位所在的地方會(huì)被游戲忽略并保留原本的方塊。所以,適當(dāng)?shù)氖褂媒Y(jié)構(gòu)空位,可以防止我們的結(jié)構(gòu)在生成時(shí)破壞其周圍的地形。
?。ㄆ婷畹氖?,在基巖版,結(jié)構(gòu)空位被視作為一個(gè)完整的方塊,這就使得火把之類的東西能夠插在上面,然后結(jié)構(gòu)空位又是隱形的、能夠讓實(shí)體通過(guò)的.......)
這就是結(jié)構(gòu)方塊的全部?jī)?nèi)容了。
附錄:結(jié)構(gòu)方塊和結(jié)構(gòu)空位歷史
Java版
1.9——加入了對(duì)于玩家來(lái)說(shuō)沒(méi)有任何用處的結(jié)構(gòu)方塊
1.10——結(jié)構(gòu)方塊可以讓玩家使用了。加入了結(jié)構(gòu)空位。
1.11——更改ID從Structure至structure_block
1.13——結(jié)構(gòu)保存的位置從『存檔根目錄\structures』改到了『存檔根目錄\generated\<命名空間>\structures』。
1.14——結(jié)構(gòu)空位的渲染顏色被更改。
1.16——結(jié)構(gòu)的最大尺寸從32×32×32增加到了48×48×48
1.17——默認(rèn)模式從數(shù)據(jù)模式改到了加載模式,并隱藏了數(shù)據(jù)模式,只能在按住Alt鍵的情況下才能被切換到。結(jié)構(gòu)空位的渲染顏色再次被更改。
攜帶版/基巖版
1.0.0——加入了具有功能但完全無(wú)法獲得的結(jié)構(gòu)方塊和結(jié)構(gòu)空位。
1.2.0——結(jié)構(gòu)方塊現(xiàn)在能夠獲得,并具有了唯一的模式:3D輸出模式。只不過(guò),該模式僅在Windows10和IOS版本中可用。
1.5.0——結(jié)構(gòu)方塊能在Andorid和IOS版本中獲取了,但無(wú)法使用。
1.9.0——移除使用remix3d導(dǎo)出選項(xiàng),結(jié)構(gòu)改為本地導(dǎo)出
1.13.0——在IOS和Android版本中,結(jié)構(gòu)方塊能夠在開(kāi)啟『實(shí)驗(yàn)性玩法』的前提下使用。結(jié)構(gòu)空位能夠獲得了。
1.16.0——結(jié)構(gòu)方塊和結(jié)構(gòu)空位不再屬于『實(shí)驗(yàn)性玩法』,并加入了『檢測(cè)』按鈕。
1.17.0——結(jié)構(gòu)方塊現(xiàn)在能夠指定加載結(jié)構(gòu)的動(dòng)畫
1.17.30——結(jié)構(gòu)方塊現(xiàn)在有了角落模式