√也许……你该去别的地方

此教程极不完善,作者已停更。但站内有更好的教程进行学习:

开发自己的数据包!(by YTXSY

√简介

数据包(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模板提供