我的世界一起来制作一个数据包吧!
√简介
数据包(Data Pack)系统为玩家进一步定制其Minecraft体验提供了一种新方式。数据包可用于覆盖或添加新的进度、维度、函数、战利品表、谓词、配方、结构、标签、自定义世界生成和生物群系,而不进行任何代码修改。而这篇教程将会帮助你如何创建自己的数据包!
在开始之前,您需要知道出现在各章节的特定符号:
√表示该章节已完成编写,仅在游戏机制拥有重大改动时更改;
…表示该章节正在编写或者完成主干部分;
×表示该章节没有编写。
…准备
√需要知道的
在开始前,我想你需要知道该做些什么:
-
不能发布玩家在没有从Mojang购买的情况下游玩的Minecraft版本或修改版。
-
不能以任何方式发布反编译的Minecraft源代码。
然后,我们也需要准备一些东西:
-
一台电脑;
-
一个你喜欢的编辑器;
-
一个wiki;
-
一个压缩软件;
-
基本的json知识;
-
一个脑子学会提问。
√创建pack.mcmeta
在创建前建议开启文件后缀名,对于之后的编写会很有用。
windows7的步骤:
计算机\工具(T)\文件夹选项(o)\查看\隐藏已知文件类型的扩展名(取消选勾)
然后我们新建一个文件夹(建议英文名),如果您使用的是记事本,在里面新建一个叫做pack.txt的文本文件,如果您使用的是编辑器,创建json文件到新建的文件夹。在新建文件中编写以下内容:
{
"pack": {
"pack_format": X,
"description": "教程数据包"
}
}
你应该根据你的Minecraft版本替换“pack_format”后面的X,版本如下:
-
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至1.18.2-rc1)为9
-
1.19(22w11a)及以上为10
而description是数据包的简介,可以在引号中修改。
之后将文件后缀改为.mcmeta,放入新建的文件夹中,这样我们就完成了这一步。
√文件夹创建
我们创建好了pack.mcmeta,现在我们需要创建名为data的文件夹,以存储代码。
另外,在数据包中,合法字符只允许有0123456789abcdefghijklmnopqrstuvwxyz_-
在你的数据包文件夹根据需求来创建文件夹,后面的中文名仅为注释。
pack.mcmeta
pack.png
data
命名空间
advancements进度
functions函数
loot_tables战利品表
predicates战利品表谓词
item_modifiers物品修饰器
structures结构
recipes配方
tags
functions函数标签
blocks方块标签
items物品标签
entity_types实体类型标签
fluids流体标签
game_events游戏事件标签
dimension维度
dimension_type维度类型
worldgen
noise_settings噪声设置
biome生物群系
configured_carver地形雕刻器
configured_surface_builder地表生成器
configured_feature地物
configured_structure_feature结构地物
template_pool模板池
processor_list处理器列表
…制作
…配方
其他站内参考链接:教你定制属于自己的配方~(白鹤云中)
如何使用数据包制作带NBT合成表(Mc_candycube6623)
此章将会交给您如何用数据包添加各种类型的配方。
在您根据本章教程写好一个配方json后,把它放到 命名空间/recipes/ 中(新建文件夹时新建的文件夹),并且请把文件名改为合法字符(上面).json,我们就大功告成了。
注意:合成配方现在无法支持NBT!但我们可以使用扔地合成来完成,这会在以后提到。
√有序配方
json模板:(此模板由走乖觉提供,使用时请将注释删除)
{
"type": "minecraft:crafting_shaped", // 配方类型:工作台有序合成
"pattern": [
"AAA", // 这里是三行字符串,每行三个字符!
"BCD", // 每个字符等价代换为合成表的格子,常用的字符是a~z和A~Z,区分大小写
" A " // 如果遇到合成表上为空的使用空格填充,不要跳过,比如说这行写的是:[空格] [A] [空格]
],
"key": { // 这里写的就是上面的格子里的字母代表什么物品,有两种写法
"A": {"item": "minecraft:gold_ingot"}, // 第一种写法就是直接使用{},通常使用物品名 [item]或标签[tag]
"B": {"item": "minecraft:emerald"}, // 本行使用的就是物品名,后面的双引号里写的就是物品名
"C": {"tag": "minecraft:books"}, // 本行使用的就是标签,后面的双引号里写的就是标签这东西写出来效果跟跑马灯一样
"D":[ // 第二种写法就是使用[]套{},{}内的写和上面的一样,通常用于多个标签或者标签和物品名混合使用
{"tag": "minecraft:books"}, // 我还是那句话,这东西写出来效果跟跑马灯一样
{"tag": "forge:ingot"} // 这东西你写多长都没人管你,反正就占一个格子,记得逗号就行,听不懂就算了
]
},
"result": { // 这里写的是合成结果,item是物品名,count是数量
"item": "minecraft:totem_of_undying", // 行了,这里没有tag也没有[], 谁家合成结果还跟跑马灯似的
"count": 1 // 其实这条不用写也行,不写默认为1,原版除了切石机,没有任何一个配方强制要求写数量
} // 接上句 ,你要是写数量,要注意一下,数字没有引号,数字也不能填小数,不写就算了
}
由于疏忽,json模板中可能有中文逗号导致无法使用,使用时请找到它并且换成英文逗号,顺便告诉作者。
×无序合成
正在施工……
×切石机配方
正在施工……
×熔炉配方
正在施工……
×高炉配方
正在施工……
×烟熏炉配方
正在施工……
×营火配方
正在施工……
×锻造台配方
×进度
正在施工……
×函数
正在施工……
…发布
×测试
√创建pack.png
pack.png是您数据包中的封面,当您在数据包界面时看见此包含此png的数据包,图片就会显现出来。当然,这一点不是必须的,如果没有看到的会是一颗原石的角。
这图片仅仅需要为正方形,并且是png格式,然后改名为pack便可以起效。
√其他
鸣谢
走乖觉——部分json模板提供