新聞中心
此特性為Java版獨有。

本教程介紹如何制作數(shù)據(jù)包。
目錄
- 1 入門
- 1.1 禁止事項
- 2 創(chuàng)建數(shù)據(jù)包
- 2.1 創(chuàng)建pack.mcmeta文件
- 2.2 測試你的數(shù)據(jù)包
- 2.2.1 故障排除
- 2.3 命名
- 2.3.1 合法字符
- 2.3.2 命名空間
- 2.4 函數(shù)
- 2.5 戰(zhàn)利品表
- 2.6 結(jié)構(gòu)
- 2.7 進(jìn)度
- 2.8 配方
- 2.8.1 有序配方
- 2.8.2 無序配方
- 2.8.3 燒煉配方
- 2.9 標(biāo)簽
- 2.10 謂詞
- 2.11 生物群系
- 2.12 維度
- 2.13 維度類型
- 3 參見
- 3.1 實例
入門[ ]
數(shù)據(jù)包允許玩家添加及修改函數(shù)、戰(zhàn)利品表、世界結(jié)構(gòu)、進(jìn)度、合成、標(biāo)簽、維度和謂詞等Minecraft游戲內(nèi)容。
禁止事項[ ]
在制作或發(fā)布數(shù)據(jù)包時,你不應(yīng)該:
- 發(fā)布Minecraft版本或修改版,使得未從Mojang購買Minecraft的玩家可以獲得它。
- 以任何方式發(fā)布反編譯的Minecraft源代碼。
創(chuàng)建數(shù)據(jù)包[ ]
要創(chuàng)建數(shù)據(jù)包,請首先找到世界文件夾中的datapacks文件夾。要查找世界文件夾,請在游戲目錄(默認(rèn)情況下為.minecraft)中找到saves文件夾。
- 在單人游戲中,你可以選中你的世界,點擊“編輯”,然后點擊“打開世界文件夾”。
- 在服務(wù)器上,你可以打開其根目錄(server.properties所在的位置),然后打開
world文件夾。
打開datapacks文件夾后,創(chuàng)建一個文件夾并打開。文件夾名即是數(shù)據(jù)包名,可以任取,但不能含有漢字。
打開新文件夾后要做的第一件事是創(chuàng)建pack.mcmeta文件。這樣Minecraft才能識別該數(shù)據(jù)包。
創(chuàng)建pack.mcmeta文件[ ]
參見: 數(shù)據(jù)包§pack.mcmeta
在剛剛創(chuàng)建的文件夾里新建一個名為pack.mcmeta的純文本文件。
- 注意
重命名時,請確保文件擴(kuò)展名為.mcmeta而非.txt。也即,你可能要更改其擴(kuò)展名。你可能會收到警告:如果改變文件擴(kuò)展名,可能會導(dǎo)致文件不可用。這表明,你已正確重命名pack.mcmeta文件。
如果你使用的是Microsoft Windows操作系統(tǒng)并且看不到文件擴(kuò)展名,對于Windows 11,可以在文件資源管理器的“查看”→“顯示”菜單中找到“文件擴(kuò)展名”選項并開啟;對于Windows 8、Windows 8.1或Windows 10,可以通過轉(zhuǎn)到其中的“查看”菜單并勾選“文件擴(kuò)展名”復(fù)選框來啟用它。
對于其他Windows版本,可以取消勾選“文件夾選項”中的“隱藏已知文件類型的擴(kuò)展名”選項。
在文件夾選項中設(shè)置顯示文件擴(kuò)展名
理論上任何文本編輯器都可以編輯pack.mcmeta,但建議文本編輯器支持JSON。JSON是mcmeta文件和數(shù)據(jù)包中大多數(shù)其他文件使用的格式。大多數(shù)文本編輯器不會將mcmeta擴(kuò)展名識別為JSON文本。因此,你需要手動配置編輯器。
在你選擇的文本編輯器中打開pack.mcmeta并粘貼或鍵入以下內(nèi)容:
{
"pack": {
"pack_format": X,
"description": "教程數(shù)據(jù)包"
}
}
對于pack.mcmeta,可在數(shù)據(jù)包的描述和名稱中使用“§”符號(Minecraft格式化代碼)。
你應(yīng)該根據(jù)你的Minecraft版本替換“pack_format”后面的X。
“pack_format”需為:
- 1.13快照17w43a至17w47b為
3 - 1.13(17w48a)至1.14.4(19w46b)為
4 - 1.15(1.15-pre1)至1.16.1(1.16.2-pre3)為
5 - 1.16.2(1.16.2-rc1)至1.16.5(20w45a)為
6 - 1.17(20w46a)至1.17.1(1.18-exp7)為
7 - 1.18(21w37a)至1.18.1(22w07a)為
8 - 1.18.2(1.18.2-pre1至正式版)為
9 - 1.19(22w11a)至1.19.3為
10 - 1.19.4快照23w03a至23w05a為
11 - 1.19.4(23w06a至正式版)為
12 - 1.20快照23w12a至23w14a為
13 - 1.20快照23w16a至23w17a為
14 - 1.20(23w18a)至1.20.1為
15 - 1.20.2快照23w31a為
16 - 1.20.2快照23w32a至23w35a為
17 - 1.20.2(1.20.2-pre1)及以上為
18
description可以使用字符串或原始JSON文本。當(dāng)你將鼠標(biāo)懸停在/datapack list列出的數(shù)據(jù)包名或進(jìn)入創(chuàng)建世界的數(shù)據(jù)包界面時,這段內(nèi)容將會顯示。
- 注意
這個文件是用JSON編寫的!本教程沒有詳細(xì)介紹JSON格式,但要注意,不要忘記引號、冒號、圓括號和方括號。缺少任意一個都可能導(dǎo)致你的數(shù)據(jù)包無法正常工作!你可以使用JSON驗證器檢查你的文件,例如JSONLint。
測試你的數(shù)據(jù)包[ ]
如果你創(chuàng)建了pack.mcmeta,嘗試在游戲中測試它。打開Minecraft,進(jìn)入世界或輸入/reload(如果你已經(jīng)進(jìn)入了世界),然后輸入/datapack list。此時應(yīng)該出現(xiàn)兩條信息:第一條是[vanilla],第二條應(yīng)該是[file/(你的數(shù)據(jù)包的名稱)]。當(dāng)你將鼠標(biāo)懸停在數(shù)據(jù)包名稱上時,你應(yīng)該會看到數(shù)據(jù)包的描述,即你在pack.mcmeta的 description中所寫的內(nèi)容。
故障排除[ ]
如果列表中沒有你的包,請確保pack.mcmeta的語法正確且已保存??纯从袥]有缺少大括號{}、逗號,、冒號:,雙引號"",方括號[]。請記住,對于每個左大括號、雙引號或方括號,必須有一個右大括號、雙引號或方括號與之配對。
命名[ ]
參見: 命名空間ID
在數(shù)據(jù)包文件夾中創(chuàng)建一個名為data的文件夾,與pack.mcmeta在同一個文件夾下。在data文件夾中,須創(chuàng)建至少一個文件夾作為命名空間。
數(shù)據(jù)包中的條目以命名空間:路徑作為命名空間ID。相應(yīng)的文件將位于data/命名空間/(數(shù)據(jù)類型)/路徑.(后綴)。請注意,路徑中的/字符將轉(zhuǎn)換為目錄分隔符。
例如:
- ID為
dummy:foo_proof/bar的物品標(biāo)簽將定位到data/dummy/tags/item/foo_proof/bar.json。 - ID為
foo:handler/bar_call的函數(shù)將定位到data/foo/functions/handler/bar_call.mcfunction。
合法字符[ ]
數(shù)據(jù)包中的命名空間、路徑、文件夾名和文件名應(yīng)僅包含以下符號:
0123456789數(shù)字abcdefghijklmnopqrstuvwxyz小寫字母_下劃線-連字號(減號)/正斜杠(不能用于命名空間).句號(不能用于命名空間)
首選命名格式為以下劃線隔開的小寫字母單詞(lower_case_with_underscores),稱為蛇形命名法(lower snake case)。
命名空間[ ]
游戲中的大多數(shù)對象都有一個命名空間(namespace),以防止?jié)撛诘膬?nèi)容沖突或無意的覆蓋。
例如,如果有兩個數(shù)據(jù)包為Minecraft分別添加了一個新的小游戲機(jī)制,并且兩者都有名為start的函數(shù)。如果沒有命名空間,這兩個函數(shù)就會沖突,小游戲也會被破壞。但如果它們分別有game_1和game_2兩個不同的命名空間,則函數(shù)名分別為game_1:start和game_2:start,就不會沖突了。
大多數(shù)情況下Minecraft的命名空間ID需要命名空間的存在,如/function命令,路徑和命名空間缺一不可。若命名空間未指定,則默認(rèn)其為minecraft。
添加新內(nèi)容時,請一定使用你自己的命名空間。僅當(dāng)需要覆蓋其他東西,或追加標(biāo)簽的時候,才使用其他命名空間。例如,游戲本體使用minecraft命名空間。僅當(dāng)數(shù)據(jù)包需要覆蓋原版數(shù)據(jù),或?qū)?nèi)容添加到原版標(biāo)簽時才會使用此命名空間。
函數(shù)[ ]
主條目: Java版函數(shù) 參見: 教程/命令方塊
函數(shù)是一系列順次執(zhí)行的命令。
要創(chuàng)建新函數(shù),應(yīng)在命名空間文件夾中新建functions文件夾。然后,在functions(或其子文件夾)中新建函數(shù)文件(函數(shù)名).mcfunction,這就是你的函數(shù)文件。你的函數(shù)會被游戲命名為(命名空間):(函數(shù)名稱),或者當(dāng)位于子文件夾時為(命名空間):(子文件夾1)/(子文件夾2)/…/(名稱)。
一行命令需要單獨出現(xiàn)在一行,行首可以有若干空格或縮進(jìn)。在函數(shù)文件中,命令不以/開頭。
作為分隔,你可以留下空白行。你也可以使用#在行首以引起一段單行注釋。#必須在一行的最前面,其前面不應(yīng)有空格。
在實際運(yùn)行函數(shù)時,空白行、注釋均會被忽略。
在游戲規(guī)則sendCommandFeedBack為true且每次以玩家的身份運(yùn)行函數(shù)(玩家主動運(yùn)行或通過/execute)時,均會返回一行“已執(zhí)行函數(shù)example:test中的x條命令”。
戰(zhàn)利品表[ ]
主條目: 戰(zhàn)利品表
當(dāng)一個生物死亡時,Minecraft根據(jù)戰(zhàn)利品表決定其掉落物。當(dāng)首次開啟自然生成的容器(例如箱子)時,Minecraft也根據(jù)戰(zhàn)利品表生成其中的戰(zhàn)利品??梢酝ㄟ^/loot命令調(diào)用它們。
在命名空間文件夾中新建loot_tables文件夾以創(chuàng)建一個新的戰(zhàn)利品表。然后,在loot_tables(或其子文件夾)中新建戰(zhàn)利品表文件戰(zhàn)利品表名.json。在游戲中,戰(zhàn)利品表以命名空間ID的格式引用。
作為參考,這里給出牛的戰(zhàn)利品表的一個樣例:
{
"type": "minecraft:entity",
"pools": [
{
"rolls": 1.0,
"bonus_rolls": 0.0,
"entries": [
{
"type": "minecraft:item",
"functions": [
{
"function": "minecraft:set_count",
"count": {
"type": "minecraft:uniform",
"min": 0.0,
"max": 2.0
},
"add": false
},
{
"function": "minecraft:looting_enchant",
"count": {
"type": "minecraft:uniform",
"min": 0.0,
"max": 1.0
}
}
],
"name": "minecraft:leather"
}
]
},
{
"rolls": 1.0,
"bonus_rolls": 0.0,
"entries": [
{
"type": "minecraft:item",
"functions": [
{
"function": "minecraft:set_count",
"count": {
"type": "minecraft:uniform",
"min": 1.0,
"max": 3.0
},
"add": false
},
{
"function": "minecraft:furnace_smelt",
"conditions": [
{
"condition": "minecraft:entity_properties",
"predicate": {
"flags": {
"is_on_fire": true
}
},
"entity": "this"
}
]
},
{
"function": "minecraft:looting_enchant",
"count": {
"type": "minecraft:uniform",
"min": 0.0,
"max": 1.0
}
}
],
"name": "minecraft:beef"
}
]
}
]
}
如果你想要查找原版戰(zhàn)利品表,或是學(xué)習(xí)其中標(biāo)簽的具體含義,請參見戰(zhàn)利品表。
結(jié)構(gòu)[ ]
結(jié)構(gòu)可以用于結(jié)構(gòu)方塊或拼圖方塊,也可以覆蓋Minecraft中原版結(jié)構(gòu)的外觀。結(jié)構(gòu)以NBT格式存儲,你可以使用結(jié)構(gòu)方塊創(chuàng)建NBT文件。MCEdit之類的第三方軟件也可以導(dǎo)出NBT文件。
在命名空間文件夾中建立structures文件夾以向數(shù)據(jù)包添加一個新的結(jié)構(gòu)。然后,把你的NBT結(jié)構(gòu)文件放在structures文件夾(或它的子文件夾)之下。在游戲中,結(jié)構(gòu)以命名空間ID的格式引用。
進(jìn)度[ ]
主條目: 進(jìn)度
玩家通過完成進(jìn)度來獲得獎勵。
在命名空間文件夾中建立advancements文件夾以創(chuàng)建一個新的進(jìn)度。然后,在這個文件夾(或它的子文件夾)之下新建進(jìn)度文件 進(jìn)度名.json。在游戲中,進(jìn)度以命名空間ID的格式引用。
{
"parent": "namespace:example/advancement/root",
"display": {
"icon": {
"item": "minecraft:wooden_sword"
},
"title": "First blood",
"description": "to kill a monster.",
"announce_to_chat": true,
"show_toast": true,
"frame": "task"
},
"criteria": {
"first_kill_monster":{
"trigger":"player_killed_entity",
"conditions": {
"entity":{
"type":"#namespace:target",
"nbt": "{Tags:[\"change\"]}"
}
}
}
}
}
parent鍵是可選的,它提供了該進(jìn)度的上游進(jìn)度,當(dāng)該進(jìn)度是根進(jìn)度時無需此鍵。
display鍵是可選的,它描述了該進(jìn)度在進(jìn)度界面(Esc點擊進(jìn)度按鈕打開,或直接在游戲中按下L打開)的顯示方法。不填寫將不會顯示在進(jìn)度界面。
criteria鍵是必需的,它描述了該進(jìn)度可能需要達(dá)成的條件。
除此之外,還有可選鍵requirements、rewards。
配方[ ]
主條目: 配方
玩家根據(jù)配方合成、燒煉物品。
在命名空間文件夾中建立recipes文件夾以創(chuàng)建一個新的配方。然后,在這個文件夾(或它的子文件夾)之下新建配方文件 配方名.json。在游戲中,配方以命名空間ID的格式引用。
有序配方[ ]
參見: 配方§minecraft:crafting_shaped
第一種常見的配方類型是有序配方。
{
"type": "minecraft:crafting_shaped",
"pattern": [
"123",
"231",
"312"
],
"key": {
"1": {
"item": "(物品命名空間ID)"
},
"2": {
"item": "(物品命名空間ID)"
},
"3": {
"item": "(物品命名空間ID)"
}
},
"result": {
"item": "(物品命名空間ID)",
"count": 5
}
}
由"type": "crafting_shaped"可以看出,這是一個有序配方。
pattern 是一個列表,描述了配方的形狀,最多包含3個字符串。一個字符串表示一橫行,每個字符串最多含有3個字符,一個字符表示合成網(wǎng)格中的一個格子。字符串不必非得是3個,每個字符串也不一定要3個字符,但是每個字符串中的字符個數(shù)必須是相等的??崭癖硎究崭褡?。
key 是一個對象,規(guī)定了pattern中的字符所代表的物品。可以用item 后接物品ID,也可以用tag后接數(shù)據(jù)包標(biāo)簽。
result 是一個對象,其中item規(guī)定了最終合成的是何種物品。count是一次合成成品的數(shù)量。
以下是活塞的原版合成配方,供參考:
{
"type": "minecraft:crafting_shaped",
"pattern": [
"TTT",
"#X#",
"#R#"
],
"key": {
"R": {
"item": "minecraft:redstone"
},
"#": {
"item": "minecraft:cobblestone"
},
"T": {
"tag": "minecraft:planks"
},
"X": {
"item": "minecraft:iron_ingot"
}
},
"result": {
"item": "minecraft:piston"
}
}
無序配方[ ]
參見: 配方§minecraft:crafting_shapeless
無序配方是另一種常見的配方類型。
{
"type": "crafting_shapeless",
"ingredients": [
{
"item": "(物品命名空間ID)"
},
{
"item": "(物品命名空間ID)"
},
[
{
"item": "(物品命名空間ID)"
},
{
"item": "(物品命名空間ID)"
}
]
],
"result": {
"item": "(物品命名空間ID)",
"count": 5
}
}
由"type": "crafting_shapeless"可以看出,這是一個無序配方。
無序配方?jīng)]有pattern。ingredients是一個列表,列出合成所需的原料。原料可以以任何形狀排列在合成網(wǎng)格中。ingredients中如果出現(xiàn)列表,則表明該列表中的任何一種物品都可以使用,如下面火焰彈配方中,煤和木炭都可以使用。
以下是火焰彈的原版合成配方,供參考:
{
"type": "minecraft:crafting_shapeless",
"ingredients": [
{
"item": "minecraft:gunpowder"
},
{
"item": "minecraft:blaze_powder"
},
[
{
"item": "minecraft:coal"
},
{
"item": "minecraft:charcoal"
}
]
],
"result": {
"item": "minecraft:fire_charge",
"count": 3
}
}
燒煉配方[ ]
也可自定義燒煉配方。
{
"type": "(smelting、blasting和smoking之一,分別對應(yīng)熔爐、高爐和煙熏爐的燒煉配方)",
"category": "(配方所屬的類別)",
"ingredient": {
"item": "(物品命名空間ID)"
},
"result": "(物品命名空間ID)",
"experience": 0.35,
"cookingtime": 200
}
這是一個燒煉配方的大致示例。
category用于指定該配方在配方書中所屬的類別,可選值為blocks、?food和misc。ingredient用于指定你要燒煉的物品。result將指定燒煉產(chǎn)品。在experience中,你可以選擇燒煉所獲得的經(jīng)驗值,在cookingtime中,你可以選擇該物品熔煉所需的時間,在本例中為10秒(200刻=10秒)。如果經(jīng)驗值有小數(shù)部分,則表示有小數(shù)部分的概率獲得額外的1經(jīng)驗值。如上例,0.35表示有35%概率獲得1經(jīng)驗值,剩下65%不獲得。
這是默認(rèn)的鉆石礦石燒煉配方:
{
"type": "minecraft:smelting",
"category":"misc",
"group": "diamond",
"ingredient": {
"item": "minecraft:diamond_ore"
},
"result": "minecraft:diamond",
"experience": 1.0,
"cookingtime": 200
}
標(biāo)簽[ ]
主條目: 標(biāo)簽
標(biāo)簽用來對方塊、物品、實體和函數(shù)分組。minecraft:tick函數(shù)標(biāo)簽用來表示函數(shù)每游戲刻都執(zhí)行,minecraft:load 函數(shù)標(biāo)簽則用來表示函數(shù)在每次世界加載(或重新加載)的時候都運(yùn)行。
在命名空間文件夾之下新建tags文件夾以創(chuàng)建新的標(biāo)簽。在這個文件夾之下,新建文件夾blocks、items和functions。然后,在任意一個文件夾(或它們的子文件夾)之下新建標(biāo)簽文件標(biāo)簽名.json。在游戲中,標(biāo)簽以命名空間ID的格式引用。
謂詞[ ]
本段落介紹的是戰(zhàn)利品表謂詞。關(guān)于數(shù)據(jù)包中的其他謂詞,請見“
謂詞(消歧義)”。
戰(zhàn)利品表謂詞(Predicate)是技術(shù)性JSON文件,被用作戰(zhàn)利品表、命令/execute if predicate和predicate目標(biāo)選擇器參數(shù)的條件。
在命名空間文件夾之下新建predicates文件夾以創(chuàng)建新的謂詞。然后,在這個文件夾(或它的子文件夾)之下新建標(biāo)簽文件謂詞名.json。在游戲中,標(biāo)簽以命名空間ID的格式引用。
生物群系[ ]
主條目:自定義生物群系
生物群系(Biome)是JSON文件,用于指定一個世界包含的所有生物群系。他允許你為世界添加新的生物群系(注:正常世界中將不會出現(xiàn)新增的生物群系,可以使用WorldEdit或添加新維度或指令/fillbiome的方法加入)
生物群系文件儲存在數(shù)據(jù)包中的/data/(命名空間)/worldgen/biome路徑的JSON文件中
在命名空間文件夾內(nèi)創(chuàng)建一個名為worldgen的文件夾,再在其中創(chuàng)建一個名為biome的文件,之后在其中創(chuàng)建一個名為群系名.json的文件。文件格式詳見自定義生物群系
維度[ ]
主條目: 自定義維度
維度(Dimension)是JSON文件,用于指定一個世界包含的所有維度。
維度的特殊之處在于它們只在minecraft命名空間中工作。在minecraft命名空間文件夾中創(chuàng)建一個維度文件夾以創(chuàng)建新的維度,然后創(chuàng)建一個名為維度名.json的文件。建議將維度文件放在與你的命名空間同名的單獨文件夾中:
minecraft:(命名空間)/維度名.json。
自定義維度在游戲中可使用/execute in minecraft:維度名訪問。
維度類型[ ]
主條目: 自定義維度§維度類型
維度類型(Dimension Type)是JSON文件,用于自定義一個新的維度類型。
通過它,你可以自定義在一個維度中的環(huán)境光照、高度限制等。它需要放在data/<命名空間>/dimension_type/<維度類型名稱>.json中。
自定義維度可以使用自定的維度類型,調(diào)整自定義維度的type鍵即可。
參見[ ]
- 數(shù)據(jù)包
- 資源包
- 教程/安裝數(shù)據(jù)包
實例[ ]
- 蜜蜂助手
- 消除視線
| 數(shù)據(jù)包 | |||
|---|---|---|---|
| 組件 |
| ||
| 數(shù)據(jù)包 |
| ||
| 教程 |
| ||
教程(作下劃線標(biāo)記的教程為中文獨有教程) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
文章名稱:創(chuàng)新互聯(lián)MinecraftWiki教程:入門[]
標(biāo)題鏈接:http://www.dlmjj.cn/article/djspcip.html


咨詢
建站咨詢
