最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

我的世界模組制作教程:數(shù)據(jù)包

2023-04-09 12:19 作者:貓-里奧  | 我要投稿

§2 數(shù)據(jù)包

數(shù)據(jù)包 (datapacks) 可用于覆蓋或添加新的函數(shù)、進度、戰(zhàn)利品表、戰(zhàn)利品表謂詞、物品修飾器、配方、結構、標簽、維度、維度類型和自定義世界生成。數(shù)據(jù)包文件夾位于?.minecraft/saves/世界名稱/datapacks,其下方子文件夾或?zip?文件即為一個數(shù)據(jù)包。

安裝數(shù)據(jù)包:單人游戲中,對于新創(chuàng)建的世界,在創(chuàng)建時點擊創(chuàng)建新的世界->世界預設->數(shù)據(jù)包,將數(shù)據(jù)包拖入并選擇至右側即可。對于已生成的世界,選擇你需要安裝數(shù)據(jù)包的世界,點擊編輯->打開世界文件夾->打開文件夾 datapacks,并將數(shù)據(jù)包?.zip?文件或文件夾放入其中。多人游戲中,打開服務器文件夾->worlds->datapacks文件夾,并將數(shù)據(jù)包?.zip?文件或文件夾放入其中。數(shù)據(jù)包放置好后,在首次生成該世界/重新進入該世界/下次服務器啟動時會啟用該數(shù)據(jù)包。管理員也可以輸入?/reload?來加載數(shù)據(jù)包,但這不適用維度和自定義世界生成。

原版數(shù)據(jù)包是 Minecraft 自帶的一個默認開啟的數(shù)據(jù)包,其?data?文件夾位于?.minecraft/versions/版本號/版本號.jar/data,其中包含的原版進度、戰(zhàn)利品表、配方、結構和標簽等內(nèi)容,是制作數(shù)據(jù)包的文件樣板。注意原版的維度和自定義世界生成不在該路徑,可從此處下載這些內(nèi)容。

對于創(chuàng)建世界時添加的數(shù)據(jù)包,可以在數(shù)據(jù)包選擇頁面調(diào)整加載次序。其它情形添加的數(shù)據(jù)包優(yōu)先級最高,即最后加載。同時加入的數(shù)據(jù)包優(yōu)先級則和文件名順序相關。數(shù)據(jù)包的優(yōu)先級順序儲存在文件?level.dat?中,可以通過?/datapack?命令查看或修改。在游戲中通過命令?/datapack?可以禁用/啟用數(shù)據(jù)包,最后啟用的優(yōu)先級最高。由于數(shù)據(jù)包加載順序不定,因此在制作數(shù)據(jù)包的過程中,盡量不要依賴數(shù)據(jù)包的加載順序。原版數(shù)據(jù)包的優(yōu)先級一般是最低的。

使用?/datapack list?命令顯示數(shù)據(jù)包名稱時,原版數(shù)據(jù)包為?[vanilla],玩家自定義的數(shù)據(jù)包為?[file/數(shù)據(jù)包名稱]。

文件夾結構

由于命名空間ID的命名要求,data?下所有文件和文件夾可使用的字符為?_-.abcdefghijklmnopqrstuvwxyz0123456789,不可使用大寫字母、空格或中文,所有文本文件使用?UTF-8?編碼。為了便于傳播,發(fā)布時可將所有內(nèi)容壓縮為一個?zip?文件。壓縮和解壓的時候,注意文件層次,應當打開?zip?文件就可以看到數(shù)據(jù)包的?pack.mcmeta。穩(wěn)妥的做法是?打開文件夾->全選->右鍵->發(fā)送到->壓縮文件夾?或?打開文件夾->全選->7-Zip->添加到 "文件夾名.zip"。文件夾格式的數(shù)據(jù)包若有錯誤文件仍可以加載,但?zip?格式的會無法加載。


§2.1 元信息和圖標

Minecraft 通過文件?pack.mcmeta?來識別數(shù)據(jù)包,因此該文件是不可或缺的。例如:

其中數(shù)據(jù)包描述為單個字符串或一個原始JSON文本。創(chuàng)建新的世界時,它會顯示在數(shù)據(jù)包菜單中數(shù)據(jù)包名稱下方。在數(shù)據(jù)包列表下,光標移動到對應的數(shù)據(jù)包時會顯示此處填寫的描述。

1.16版本原版數(shù)據(jù)包里的?pack.mcmeta?文件為

數(shù)據(jù)包可以包含一個?pack.png,它是正方形的圖片,用于創(chuàng)建新的世界時在數(shù)據(jù)包菜單中顯示。


§2.2 命名空間

命名空間 (namespace) 為玩家自定義的、可操作的空間。使用獨立的命名空間也有利于解決和他人的沖突。數(shù)據(jù)包下可以有多個命名空間,如果不同數(shù)據(jù)包中有相同的命名空間,則其中相同的文件名內(nèi)容會根據(jù)加載先后順序被覆蓋。特別地,原版內(nèi)容被保存在?minecraft?命名空間,想要修改和替換原版的內(nèi)容只需在你的數(shù)據(jù)包內(nèi)建立?minecraft?命名空間和相應的同名文件并修改即可。

標簽文件,即?tags?中的文件內(nèi)容默認追加而不是覆蓋。因此標簽文件是解決數(shù)據(jù)包沖突和聯(lián)動的有力工具。


1.16~1.16.1 版本的維度、維度類型和世界生成文件位置為?minecraft/類型/命名空間/路徑/文件名.json?而不是?命名空間/類型/路徑/文件名.json。

若命名空間為?minecraft,則可直接省略?minecraft:。本文中我們會混用兩種寫法,注意區(qū)分。除此之外,如戰(zhàn)利品表的?type、戰(zhàn)利品表謂詞的?condition?等諸多情形的值也是?minecraft?命名空間下的命名空間ID,因此此時也可以省略?minecraft:。

§2.3 函數(shù)

函數(shù) (Function) 是一系列順次執(zhí)行的命令列表,可以被命令?function?命名空間ID?來依次執(zhí)行函數(shù)的每一條命令,還可被調(diào)用于進度JSON文件的?rewards->function。函數(shù)每一行表示一個單獨的命令,無需?/?開頭。執(zhí)行時會按順序依次執(zhí)行,使用?#?開頭的行是注釋。

如果函數(shù)被另一個函數(shù)執(zhí)行,則默認無執(zhí)行者,執(zhí)行位置為出生點,除非在執(zhí)行時繼承調(diào)用它的函數(shù)的執(zhí)行者和執(zhí)行位置。如果函數(shù)被命令方塊執(zhí)行,則無執(zhí)行者,執(zhí)行位置為命令方塊位置。如果函數(shù)被玩家手動執(zhí)行,則執(zhí)行者為玩家自身,執(zhí)行位置為玩家位置。如果函數(shù)被進度獎勵,執(zhí)行者為完成進度的玩家,執(zhí)行位置為玩家位置。這些情形下的執(zhí)行者和執(zhí)行位置均可使用命令?execute?來改變。

如果需要函數(shù)在游戲加載/每刻執(zhí)行,則需要將其加入函數(shù)標簽中。


§2.4 進度

進度 (Advancement) 為游戲內(nèi)檢測玩家行為,觸發(fā)后完成并執(zhí)行獎勵的系統(tǒng),游戲內(nèi)按?L?即可查看,可被用作命令?advancement?的參數(shù),以授予或移除玩家的特定進度。

注意1.17的物品謂詞和方塊謂詞與舊版本的有差異。

沒有?parent?的進度被稱為根進度。若其有?display,則它定義了一個進度的選項卡。

當一個進度沒有?display?時,或者其上游的根進度沒有?display?時,它不會顯示在進度頁面中。解鎖配方的進度,以及我們只是用來實現(xiàn)某些效果而并非希望將其添加到進度頁面的進度,應當省略?display?以隱藏之。

當進度需要所有的條件都達成時才能完成時,我們不需要定義?requirements,這等價于?"requirements": [["條件 1"],["條件 2"],...,["條件 n"]]。如果我們需要復雜的組合條件時,就需要使用該字段。requirements?的格式為或的與(合取范式),即其列表中的每一個項(該項還是一個條件的列表)中的均至少有一個條件滿足。例如?"requirements": [["條件 a", "條件 b"],["條件 c", "條件 d"]]?表示當?條件 a?和?條件 b?至少有一個滿足且?條件 c?和?條件 d?至少有一個滿足時,進度會完成。不過較為常見的還是所有條件只要有一個滿足即可,這時寫作?"requirements": [["條件 1","條件 2",...,"條件 n"]]。例如下例中兩個條件?sealing_wand,?dream_wand?分別表示玩家獲取了相應 NBT 物品的觸發(fā)器,只要其中有一個滿足即可完成進度。

完整的觸發(fā)器和觸發(fā)器的條件請查看進度/JSON格式#觸發(fā)器列表。我們簡要列出常見的觸發(fā)器:


所有的觸發(fā)器條件均有一個可選的戰(zhàn)利品表謂詞列表?player?字段用于要求玩家額外需要滿足的戰(zhàn)利品表謂詞。例如


獎勵中的解鎖配方一般適用于數(shù)據(jù)包添加的配方相應的解鎖進度,這樣的進度無需?display?字段,參考配方。獎勵中的經(jīng)驗建議僅在高難度進度完成時給予,這樣的進度通常設置?frame?為挑戰(zhàn)。獎勵中的函數(shù)的執(zhí)行者為完成進度的玩家,位置為玩家的位置。

游戲內(nèi)或函數(shù)內(nèi)使用?advancement?命令可以手動給予或剝奪進度。進度配合獎勵函數(shù)剝奪玩家該進度,則該進度可反復觸發(fā),可用于諸如檢測玩家生物群系、飲食、放置方塊等需要循環(huán)檢測的情形。這樣的進度需要缺省?display?字段。例如:

原版進度?如果需要修改原版的進度,只需要在數(shù)據(jù)包中添加相同路徑的相應名稱文件并修改之即可。原版的進度被劃分為5個選項卡,命名空間ID分別為?minecraft:story/*,?minecraft:nether/*,?minecraft:end/*,?minecraft:adventure/*,?minecraft:husbandry/*。其中?minecraft:nether/all_effects,?minecraft:adventure/hero_of_the_village,?minecraft:adventure/arbalistic?為隱藏進度。這些進度沒有獎勵,或只有獎勵經(jīng)驗值。

除此之外,原版獲取配方的進度命名空間ID為?minecraft:recipes/*。

§2.5 戰(zhàn)利品表

戰(zhàn)利品表 (Loot table) 用于生成隨機的一些物品,可作為容器的隨機物品、實體的掉落物、方塊的掉落物、釣魚的戰(zhàn)利品、豬靈以物換物的內(nèi)容、貓和村民的禮物、進度的完成獎勵、loot?命令的參數(shù)以給予玩家特定戰(zhàn)利品表物品等。

  • setblock ~ ~ ~ chest{LootTable:"cpp:chests/something"}

  • give @s barrel{BlockEntityTag:{LootTable:"cpp:chests/something"}}

  • summon bat ~ ~ ~ {DeathLootTable:"cpp:entities/something"}

  • loot spawn ~ ~ ~ loot cpp:something

即使沒有指定戰(zhàn)利品表種類,或指定為?minecraft:generic,游戲也會根據(jù)實際應用的場景來決定它的類型。這意味著在相應情形無效的條件和函數(shù)不會生效,而且游戲不會報錯提示。例如在方塊戰(zhàn)利品表中檢測擊殺者。

rolls,?bonus_rolls, 以及在戰(zhàn)利品表、戰(zhàn)利品表謂詞和物品修飾器中的大部分數(shù)值可以有如下形式之一:

項目會根據(jù)種類的不同而擁有不同的JSON格式:


我們在設計物品時,可以將物品信息打包成一個戰(zhàn)利品表。之后我們便可以在其它戰(zhàn)利品表中使用?loot_table?類型來方便地引用,見物品設計。alternatives?類型在需要判斷條件時很有用,例如原版的樹葉掉落物就使用了該類型。當工具為剪刀或附有精準采集魔咒時,掉落樹葉,否則掉落樹苗。dynamic?類型配合潛影盒可以掉落不定?id?的物品,見物品輸出和修改玩家背包。

戰(zhàn)利品表條件?用于對戰(zhàn)利品表進行一些條件判斷。僅當條件列表?conditions?中每一個條件都被滿足時,其同層次的隨機池/項目/函數(shù)才會被選取。戰(zhàn)利品表條件和戰(zhàn)利品表謂詞JSON對象的格式完全相同。

戰(zhàn)利品表函數(shù)?用于對戰(zhàn)利品表進行一些修改。函數(shù)列表?functions?中每一個函數(shù)會依次應用于同層次的隨機池/項目生成的戰(zhàn)利品上,函數(shù)的不同順序可能有不同效果。戰(zhàn)利品表函數(shù)和物品修飾器JSON對象的格式完全相同。

下面這個例子是對原版牛的掉落物進行的修改。

該例子戰(zhàn)利品表表示牛死亡時

  • 掉落?0-(2+搶奪等級)個皮革;

  • 掉落?1-(3+搶奪等級)個牛肉,著火則掉落熟牛肉;

  • 被玩家殺死時,有?(2.5+搶奪等級)%?幾率掉落戰(zhàn)利品表?cpp:limb_of_ridge?的物品;

  • 被玩家殺死時,有?(2.5+搶奪等級)%?幾率掉落戰(zhàn)利品表?cpp:cow_head?的物品。

戰(zhàn)利品表除上述用途外,還可用于生成隨機數(shù),見隨機數(shù);指定自定義機器的配方,見配方處理等諸多場景。

原版戰(zhàn)利品表用于決定方塊、實體的默認掉落物以及游戲的一些默認內(nèi)容。如果需要修改原版的戰(zhàn)利品表,只需要在數(shù)據(jù)包中添加相同路徑的相應名稱文件并修改之即可。原版的戰(zhàn)利品表被劃分為實體掉落物?minecraft:entities/*, 方塊掉落物?minecraft:blocks/*, 箱子戰(zhàn)利品表?minecraft:chests/*和游戲內(nèi)容(釣魚、豬靈以物換物、村民禮物、貓的禮物)?minecraft:gameplay/*。

§2.6 戰(zhàn)利品表謂詞

戰(zhàn)利品表謂詞 (Predicate) 用于對所在情形進行條件判斷,可作為戰(zhàn)利品表的條件、命令?execute?的條件子命令?(if|unless) predicate foo:bar、目標選擇器參數(shù)?predicate={foo:bar}、進度中判斷實體條件等。戰(zhàn)利品表的條件和戰(zhàn)利品表謂詞格式相同。

注意1.17和舊版本的物品謂詞和方塊謂詞有差異。

這個例子表示玩家的分數(shù)?cppChainTick?至少為?1?時,或者手持物具有特定標簽時通過。


戰(zhàn)利品表謂詞文件也可以為戰(zhàn)利品表謂詞JSON對象的列表。這個例子表示玩家的手持物或盔甲擁有指定標簽,且玩家不擁有?cpp:temperancer?時通過。


§2.7 物品修飾器

物品修飾器 (Item modifier) 用于在命令?/item?中對物品添加戰(zhàn)利品表函數(shù)。戰(zhàn)利品表的函數(shù)和物品修飾器格式相同,但物品修飾器不可被戰(zhàn)利品表的函數(shù)引用。

物品修飾器也可以為物品修飾器JSON對象的列表。例如下例中我們提前將需要設置的耐久存入?storage cpp:_?的?Damage,且已損傷的耐久不小于?25?時將其數(shù)量-1。


例:將玩家1個副手物品移動到頭盔欄。注意引用時應當先檢測玩家頭盔欄是否為空再執(zhí)行該函數(shù)。


例:獲取函數(shù)執(zhí)行者手持物的最大耐久。


§2.8 配方

配方 (Recipe) 為游戲內(nèi)指定工作臺合成、切石機合成、熔爐燒煉、高爐燒煉、煙熏爐燒煉、營火燒煉和鍛造臺合成的格式,一般不支持帶 NBT 標簽。

在默認情形(限制配方關閉)下,玩家總是可以使用所有的配方,且使用一個配方會使玩家自動發(fā)現(xiàn)它。因此建議為你的自定義配方添加合適的進度來獲取該配方。一旦配方被發(fā)現(xiàn),就將被加入玩家的配方書。配方只會在玩家使用與當前配方類型所匹配的方塊時顯示。例如,燒煉配方將只在熔爐的界面中顯示。當在背包中使用配方書時,只有能在玩家的?2×2?背包合成欄內(nèi)使用的配方才會顯示。已發(fā)現(xiàn)的配方儲存在玩家?recipeBook?的NBT中。

原版的合成、燒煉使用配方文件即可實現(xiàn),較為簡單,但是無法識別且無視配方材料的NBT(除了特殊合成配方),因此只能實現(xiàn)原版物品的合成和燒煉。同時原版模組若使用了相關物品,則相應的模組物品亦可代替原物品進行合成。想要實現(xiàn)帶NBT的合成需要藉由其它方式,見NBT合成與燒煉。

鍛造臺則會保留要升級的物品的NBT信息而只修改其id。

大部分配方中所使用的配方材料格式可以為下述幾種。

§2.8.1 有序合成


使用6羊毛+雞蛋工字形有序合成兩個羊刷怪蛋。

這里?cpp:wools?為自定義的包含所有顏色羊毛的物品標簽。

§2.8.2 無序合成


配料可以重復。單個物品配方請使用有序合成而不是無序合成。

2沙子和紅石無序合成2紅沙。

§2.8.3 切石機配方


注意?result.count?不能省略。

使用切石機切割橡木木板為2臺階。

§2.8.4 燒煉配方



熔爐配方的默認燒煉時間是200刻,即10秒。高爐配方和煙熏爐配方的默認燒煉時間是100刻,即5秒。營火的默認燒煉時間是100刻,即5秒,但所有的原版營火配方都將燒煉時間修改為了600刻,即30秒。

熔爐燒煉皮革裝備、腐肉、鞍為兔子皮。

§2.8.5 鍛造臺配方


使用鍛造臺使用鉆石將鐵斧升級為鉆石斧。


§2.8.6 工作臺特殊配方


工作臺有一些特殊配方由游戲內(nèi)部的代碼處理,無法通過JSON文件來修改。這些配方均涉及物品的NBT修改。當原版數(shù)據(jù)包被禁用時,你可以用它們來重新啟用你所需要的特殊合成配方。

§2.8.7 覆蓋原版配方


在數(shù)據(jù)包的pack.mcmeta中可以指定忽略的數(shù)據(jù)包文件,例如下面就屏蔽了原版棕色蘑菇合成兔肉煲的配方,以及用于解鎖該配方的相應進度。

1.19之前的版本如果想要修改原版的合成或燒煉配方,先使用壓縮軟件打開版本?.jar?文件,依次打開?data/minecraft/recipes,找到相應的配方文件,然后在自己的數(shù)據(jù)包中的相同位置(必然是?minecraft?命名空間下)放入同名文件即可覆蓋默認的配方。

將橡木臺階合成數(shù)量改為8。

將原版白色床+墨囊=黑色床的合成配方修改為任意床+墨囊=黑色床。


如果需要刪除原版配方,可使用生存無法獲得的方塊如基巖=基巖、屏障=屏障、結構空位等物品來合成。配方文件內(nèi)容為?{}?時會被認為是錯誤文件而無法覆蓋原配方。同時,我們需要將解鎖該配方的進度觸發(fā)器設置為?minecraft:impossible。

§2.8.8 配方獲取


一個完整的配方應當有相應的進度來使玩家獲取之,通常觸發(fā)器為玩家背包含有合成材料。也可以根據(jù)需要在函數(shù)中使用命令?recipe?給予。

§2.9 結構


結構 (Structure) 存儲了一個長方體區(qū)域的方塊和實體信息,玩家可以使用結構方塊來創(chuàng)建、保存、調(diào)用結構。結構大小一般至多為?48×48×48,1.15及更早版本則至多為?32×32×32。

在游戲中獲得結構方塊后,放置好所需要的方塊結構和實體,然后放置結構方塊,設置為保存模式,調(diào)整好大小,輸入名稱(命名空間ID),點保存即可(注意區(qū)分是否需要保存實體)。然后從?.minecraft/saves/世界名稱/generated/命名空間/structures/路徑/文件名.nbt?復制到數(shù)據(jù)包內(nèi)。調(diào)用時,在結構方塊中輸入命名空間ID來加載(注意區(qū)分是否需要加載實體)。

我們也可以在函數(shù)中加載,先放置結構方塊,然后放置并清除紅石塊,最后清除結構方塊。這個技巧配合戰(zhàn)利品表和斷言,可用于隨機在世界生成結構,也可直接用于模板池。例如:

結構文件的NBT結構為:

  • size 結構的長寬高;

  • entities 結構包含的實體;

  • blocks 結構包含的方塊,其中 pos 指定了相對坐標,state 指定了該方塊在方塊狀態(tài)列表的編號,從0開始;

  • palette 方塊狀態(tài)列表,其中 Name 為方塊命名空間ID,Properties 指定該方塊的所有方塊狀態(tài)。也可以為palettes,這個列表的每一個項目都是一個方塊狀態(tài)列表,然后調(diào)用結構時會根據(jù)種子(坐標和完整度)來確定選擇哪一個列表來使用,原版的沉船就使用該方式來存儲。

通過直接編輯結構文件,我們可以繞過使用結構方塊保存的一些限制。在游戲內(nèi)保存好大致的結構后,使用NBT編輯器打開:

  • 通過直接修改結構的palettes,可以將設置隨機的結構方塊狀態(tài)列表;

  • 通過直接修改結構的size,可以將結構設置為大于48的區(qū)域;

  • 通過修改blockspos,我們可以指定長方體區(qū)域外位置的方塊;

  • 通過修改entities,我們可以刪除實體不需要保存的一些NBT,這通常包括Air, FallDistance, Fire, Motion, NoGravity, OnGround, PortalCooldown, Pos, Rotation, UUID等,blockPos也可以刪除。

這些技巧的使用請參考任意純方塊結構。

如果結構用于結構地物中,當結構只有部分在已加載區(qū)塊中時,系統(tǒng)會根據(jù)結構的size來確定還有哪些部分沒有被加載。blockspos不在長方體區(qū)域內(nèi),這可能會導致生成的結構不完整。

§2.10 標簽

標簽 (Tag) 用于將多個具有相同性質的內(nèi)容放置在一起以便于調(diào)用。Minecraft 中有很多內(nèi)容都叫做標簽,注意區(qū)分它們。

由于數(shù)據(jù)包加載次序難以控制,因此?"replace": true?的情形較為少用,一般僅用于覆蓋原版標簽。

標簽的?required?設置為 false 時,可用于添加其他模組的相應ID。這在為數(shù)據(jù)包添加對模組的支持時很有用,例如cpp/tags/blocks/chests.json。而函數(shù)標簽則為數(shù)據(jù)包添加附屬和擴展提供了方便的接口。

標簽共包括6種,分別用于不同情形。

§2.10.1 方塊標簽


方塊標簽 (Block tag) 可以在用命令測試方塊時以?#命名空間ID?的格式調(diào)用,只要方塊滿足了該標簽中定義的任何一個方塊,命令就會測試通過。方塊標簽還可在進度、斷言、戰(zhàn)利品表中以?"tag": "命名空間ID"?的格式調(diào)用。調(diào)試模式(F3)下,玩家指向方塊時會顯示含有該方塊的所有方塊標簽。

原版方塊標簽被用于各種方塊屬性,我們按照功能分類并列出。我們不列出僅用于其它標簽、進度、斷言、戰(zhàn)利品表、影響生物尋路和影響方塊連接的方塊標簽。

檢測玩家頭部是否被方塊卡住。


然后執(zhí)行命令


因為命令執(zhí)行地點為實體的腳,所以我們使用?anchored eyes?來使得局部坐標的位置變?yōu)橥婕业难劬Α?/p>

讓末影人無法拿起任何方塊。

§2.10.2 物品標簽



物品標簽 (Item tag) 在配方、進度、斷言、戰(zhàn)利品表中用?"tag": "命名空間ID"?的格式使用。還可在創(chuàng)造模式物品欄輸入?#命名空間ID?來搜索相應標簽物品。物品標簽命名空間ID命名空間:路徑/文件名對應的文件為?命名空間/tags/items/路徑/文件名.json。

原版物品標簽被用于各種物品屬性,我們按照功能分類并列出。我們不列出僅用于其它標簽、配方、進度、斷言、戰(zhàn)利品表,影響生物尋路和影響方塊連接的物品標簽。

讓紙可以作為熔爐燃料使用,每次可燒煉一個物品。


§2.10.3 函數(shù)標簽


函數(shù)標簽 (Function tag) 可以在?function?命令中以?#命名空間ID?的形式調(diào)用,所有在該標簽中指定的函數(shù)都會按照它們出現(xiàn)的順序執(zhí)行,不會重復執(zhí)行。函數(shù)標簽命名空間ID命名空間:路徑/文件名對應的文件為?命名空間/tags/functions/路徑/文件名.json。

minecraft?命名空間中的標簽

  • minecraft/tags/functions/load.json?中的函數(shù)會在加載時被執(zhí)行一次,我們常稱之為加載函數(shù)、load函數(shù)。用于初始化的函數(shù)應當添加至該標簽。

  • minecraft/tags/functions/tick.json?中的函數(shù)每刻會被執(zhí)行一次,我們常稱之為循環(huán)函數(shù)、主函數(shù)、tick函數(shù)。需要高頻執(zhí)行的函數(shù)應當添加至該標簽。

本文中我們有時會不加注明地使用命名空間:load?和命名空間:tick?表示這兩個函數(shù)標簽中的函數(shù)。

§2.10.4 實體類型標簽


實體類型標簽 (Entity type tag) 標簽可以在實體選擇器參數(shù)?type?以及戰(zhàn)利品表條件中以?#命名空間ID?的形式調(diào)用,只要實體滿足了該標簽中定義的任何一個類型,就會被選中。實體類型標簽命名空間ID命名空間:路徑/文件名對應的文件為?命名空間/tags/entity_types/路徑/文件名.json。

原版實體類型標簽被用于各種實體屬性,我們在此列出。

§2.10.5 流體標簽


流體標簽 (Fluid tag) 標簽很少使用,修改后會影響空氣、水和熔巖的性質,其命名空間ID命名空間:路徑/文件名對應的文件為?命名空間/tags/fluids/路徑/文件名.json。

流體和流體對應的方塊是不同的,例如?flowing_water?不是一個合法的方塊,但流體可以為

原版流體標簽?minecraft:water?和?minecraft:lava?用來決定何種流體具有類似水和熔巖的性質,具體見標簽#流體,我們在此省略。

§2.10.6 游戲事件標簽


游戲事件標簽 (Game event tag) 標簽目前僅用于指定影響潛聲傳感器的事件,其命名空間ID命名空間:路徑/文件名對應的文件為?命名空間/tags/game_events/路徑/文件名.json。

原版游戲事件標簽?minecraft:vibrations?用于決定哪些事件會被潛聲傳感器檢測到,minecraft:ignore_vibrations_stepping_carefully?用于決定哪些事件在玩家潛行時不會被潛聲傳感器檢測到,具體見標簽#游戲事件。

§2.11 維度和維度類型

維度和維度類型用于自定義維度。維度和自定義世界生成無法通過命令?/reload?在游戲內(nèi)更新。

維度 (Dimension) 規(guī)定了維度的生成方式和生物群系。

噪聲型維度的的地形由噪聲設置?generator.settings?確定,生物群系由?generator.biome_source?的不同可分為五種情形,其中類型為?multi_noise?時,游戲會生成四維柏林噪聲圖,然后對每個坐標選擇噪聲最接近的生物群系。其中生物群系的?offset?會影響計算接近程度,從而影響該生物群系的大小,offset?越大,該生物群系越難被選中。

超平坦型維度僅需指定方塊層的分布、生物群系和使用的結構參數(shù)即可。如果生成要塞,則要塞由原點向外逐個生成在一系列的環(huán)上,直到總數(shù)達到?count。其中第?i?個環(huán)的要塞數(shù)量為?spread × (i+1) × (i+2)/6?向下取整,第?i?個環(huán)到原點的平均距離為?distance × (6i-2)?個區(qū)塊。


調(diào)試世界維度僅用于調(diào)試世界,沒有其它可選的設置。


原版的維度包括


§2.11.2 維度類型


維度類型 (Dimension type) 規(guī)定維度的一些與地形無關的信息。

可用的維度類型

這些是 Minecraft 內(nèi)部已生成的維度類型命名空間ID,可直接使用。已省略 minecraft:。

§2.11.3 實例


定義好新的維度之后,我們還需要為其設計傳送方式。簡單的可以使用物品觸發(fā),見右鍵交互。更常見的則是使用多方塊結構為傳送檢測方式。

定義一個新的維度,其中僅有繁花森林生物群系。使用高花擺放成八邊形并在中間放置白色羊毛激活傳送門。

檢測傳送門是否完整。檢測玩家位置來傳送。


§2.11.4 自定義世界


自定義世界是一種世界類型,它用自定的特性取代了世界的普通地形。創(chuàng)建世界時,點擊更多選項->導入世界->選擇JSON文件即可。這種方式還可以用來創(chuàng)建額外的維度而不借助于數(shù)據(jù)包,但是默認只能使用命令?/execute in?維度名稱?進入額外的維度。

§2.12 自定義世界生成

自定義世界生成 (Custom world generation) 允許數(shù)據(jù)包改變世界的生成方式,這需要和維度配合使用。本節(jié)中列出的很多JSON內(nèi)容的作用仍然需要測試。點此可下載原版所有的?worldgen?內(nèi)容?(slicedlime?提供)。注意原版的維度和維度類型并不保存在原版數(shù)據(jù)包中。

§2.12.1 噪聲設置


噪聲設置 (noise_settings) 用于設置維度生成的噪聲。噪聲設置文件為JSON文件,格式可參考Noise Settings – Official Minecraft Wiki。噪聲設置的命名空間ID命名空間:路徑/文件名對應的文件為?命名空間/worldgen?/noise_settings/路徑/文件名.json。

當維度的高度或最低高度發(fā)生改變時,再次進入該維度會導致區(qū)塊 (regions?文件夾下文件)重新生成,但實體 (entities?文件夾下文件)會保留。

可用的噪聲設置

這些是 Minecraft 內(nèi)部已生成的噪聲設置命名空間ID,可直接使用。

§2.12.2 生物群系

生物群系 (Biome) 規(guī)定了生物群系的特性,可用于維度JSON文件的相應參數(shù)。

可用的生物群系

這些是 Minecraft 內(nèi)部已生成的生物群系命名空間ID,可直接使用。

§2.12.3 地形雕刻器


地形雕刻器 (Carver) 用來在地形中雕刻出空氣或液體的區(qū)域,被調(diào)用于生物群系JSON文件的?carvers。

可用的地形雕刻器

這些是 Minecraft 內(nèi)部已生成的地形雕刻器命名空間ID,可直接使用。

§2.12.4 地表生成器

地表生成器 (Surface builder) 用來刻畫地面的起伏和構成地形的默認方塊,被調(diào)用于生物群系JSON文件中的?surface_builder。

可用的地表生成器

這些是 Minecraft 內(nèi)部已生成的地表生成器命名空間ID,可直接使用。

§2.12.5 地物


地物 (Feature) 是指樹、花、礦石等,被調(diào)用于生物群系JSON文件的?features?中。

上述JSON格式中的


均勻分布的整數(shù)可以為一個JSON對象或一個非負整數(shù)。


可用的地物

這些是 Minecraft 內(nèi)部已生成的地物命名空間ID,可直接使用。已省略?minecraft:。

裝飾物

可用的裝飾物

這些是 Minecraft 內(nèi)部已生成的裝飾物命名空間ID,可直接使用。已省略?minecraft:。

§2.12.6 結構地物


結構地物 (Structure feature) 指定特定類型的結構以及結構的參數(shù),被調(diào)用于生物群系JSON文件的?starts。

可用的結構地物

這些是 Minecraft 內(nèi)部已生成的結構地物命名空間ID,可直接使用。已省略?minecraft:。

§2.12.8 模板池


模板池 (Template pool) 使用結構文件來生成結構,其中結構包含的拼圖方塊會工作以生成更復雜的結構。拼圖方塊是一個允許游戲使用較小模板生成結構的拼接方塊:

  • name?名稱,該拼圖方塊的標記。

  • pool?目標池,指的是拼圖方塊將要使用的模板池。

  • target?目標,與該拼圖方塊連接的另一拼圖方塊的?name。

  • joint?連接類型,rollable?(默認值) 或?aligned。當拼圖方塊朝上或朝下時才有,其中?aligned?指拼接的結構位置固定,rollable?指的是拼接的結構可隨機旋轉。

  • final_state?轉變?yōu)椋褐傅氖瞧磮D方塊在整個功能被放置后會轉變的方塊。默認為?minecraft:air

  • 層數(shù),0~7?之間,指生成完之后拼接的結構繼續(xù)生成的嵌套層數(shù)。

  • 保留拼圖方塊,與其拼接的結構生成完之后其包含的拼圖方塊保留還是轉變?yōu)?final_state?指定方塊。

拼圖方塊目前僅用于生成掠奪者前哨站、村莊和堡壘遺跡類型的結構地物。這些結構的生成開始于包含拼圖方塊的模板。每個拼圖方塊都使用下列流程來生成另一個模板:

  • 在目標池內(nèi)隨機選擇一個模板。

  • 在該模板的拼圖方塊,至少存在1個模板含有目標拼圖方塊。如果有多個方塊符合條件,那么會隨機選擇其中的一個。

  • 這會使兩個拼圖方塊連接使得第2個拼圖方塊朝向第1個拼圖方塊并與之相鄰。

  • 最后,兩個拼圖方塊會被替換為對應的“轉變方塊”設置的方塊。

初始模板和附加模板里的拼圖方塊都會重復上述流程,直到?jīng)]有剩余的拼圖方塊或者結構足夠大為止。使用結構方塊加載結構不能復現(xiàn)上述過程。

§2.12.9 處理器列表


處理器列表 (Processor list) 用于指定拼圖方塊生成結構之后拼圖方塊本身的處理方式。

可用的處理器列表

這些是 Minecraft 內(nèi)部已生成的處理器列表命名空間ID,可直接使用。已省略?minecraft:



我的世界模組制作教程:數(shù)據(jù)包的評論 (共 條)

分享到微博請遵守國家法律
甘孜| 铁岭县| 广汉市| 集贤县| 富锦市| 黄浦区| 承德市| 安图县| 宜兰市| 泗水县| 平昌县| 曲阜市| 阳高县| 吴川市| 岫岩| 河北省| 海伦市| 枣阳市| 嘉禾县| 耒阳市| 龙岩市| 临夏县| 新建县| 隆尧县| 宣城市| 江川县| 酉阳| 札达县| 新沂市| 缙云县| 马关县| 佛坪县| 鄱阳县| 河北区| 杭锦旗| 吴堡县| 巴塘县| 麻阳| 城固县| 平武县| 宾川县|