开发自己的数据包!

您所在的位置:网站首页 cs原版数据包 开发自己的数据包!

开发自己的数据包!

2024-01-04 21:43| 来源: 网络整理| 查看: 265

本篇教程由作者设定使用 CC BY-NC 协议。

懒得看字的请看B站视频教程。

本教程遵循 CC: BY-NC 创作共用许可:

您(用户)可以复制、发行、展览、表演、放映、广播或通过信息网络传播本作品;

您必须按照作者或者许可人指定的方式对作品进行署名。

介绍

众所周知,MC在1.13中加入了数据包功能。

数据包允许玩家添加及修改函数、战利品表、世界结构、进度、合成、标签、维度和谓词等Minecraft游戏内容。            ——摘自中文Minecraft Wiki。

简单来说,就是一种轻量化的模组。

开发数据包有什么禁止的事项?

在制作或发布数据包时,你不应该:

发布Minecraft版本或修改版,使得未从Mojang购买Minecraft的玩家可以获得它;

以任何方式发布反编译的Minecraft源代码(虽然自己用是没逝的)。

开发数据包要准备些什么?

一个Wiki;

一个文件编辑器(几乎所有编辑器都可以,甚至是记事本,推荐VSC);

一个可以压缩/解压的软件(虽然你可以使用自带的文件管理器,但不建议);

思路清晰,目标明确;

问问题态度诚恳,这可以解决95%的问题;

搜索引擎比大佬在么好用多了(除非你在做一个前无古人,也有可能后无来者的小玩意);

下面的JSON小知识:

{    "一个项": "一个东西里面的东西",    //这是一个项    "一个列表": [    //这是一个列表            "一个列表里面的项",    //项的前面一定要有空格(不过这只是规范,不影响它识别)。            "一个列表里面的另外一个项"    //所有东西一定要用{}、[]、半角双/单引号包裹    ],    //←←← 如果不是最后一个列表/项,在}]后面一定要加半角逗号!    "另外一个列表": [            "另外一个列表里面的项”    ]}    //记得删前面带“//”的注释!

对,没错,只需要这7点,傻子非专业人员都可以制作数据包!

正式开发

注:为了后续开发的顺利,建议你关闭“隐藏文件扩展名”(百度/必应一下,你就知道)。

pack.mcmeta

打开自己存档中的“datapacks”文件夹,创建一个文件夹(名字自定,这里叫Test Datapack),在里面创建pack.mcmeta文件并写入如下内容:

{  "pack": {    "pack_format": 6,    "description": "测试数据包"  }}

pack.mcmeta,它是数据包的核心。

"pack_format" 代表数据包的版本编号(你用什么版本开发就填对应的版本编号!),对应的版本编号是:

编号版本编号版本31.13(17w43a-17w47b)41.13(17w48a)- 1.14.4(19w46b)51.15(1.15-pre1)-1.16.1(1.16.2-pre3)61.16.2(1.16.2-rc1)-1.16.5(20w45a)71.17(20w46a)-1.17.1(1.18-exp7)81.18(21w37a)-1.18.1(22w07a)91.18.2(1.18.2-pre1-正式版)101.19(22w11a)-1.19.3111.19.4(23w03a-23w05a)121.19.4(23w06a-1.19.4)131.20(23w12a-23w14a)141.20(23w16a-23w17a)151.20(23w18a)-1.20.1161.20.2(23w31a)171.20.2(23w32a - 23w35a)181.20.2(1.20.2-pre1 - 正式版)191.20.3(23w40a)201.20.3(23w41a)211.20.3(23w42a)221.20.3(23w43a)231.20.3(23w44a)及以上未来都还没出呢你看什么看

"description" 是数据包的简介,可以自定义。

既然你创建了pack.mcmeta,试着在游戏中测试它。打开游戏,进入包含这个数据包的世界,输入/reload,然后输入/datapack list。此时应该出现两条信息:第一条是[vanilla](原版的数据包),第二条应该是[file/Test Datapack(你的数据包的名称)]。当你将鼠标悬停在数据包名称上时,你应该会看到数据包的描述,就是你在"description"中写的东西。

data文件夹

创建一个叫data的文件夹,用来放数据包的文件。

在data里面创建一个文件夹,名字是你数据包的命名空间(就是数据包的身份证,不能和其它数据包/模组使用一个命名空间,这里用驼峰命名法命名为test_datapack)。

在数据包中,合法字符只有:0到9的10个数字、a到z的26个小写字母、下划线(_)和减号(-)(简而言之,就是ASCII所包含的大部分字符)。

以下是数据包可以包含的内容(除了其他Mod/数据包添加的特殊内容):

pack.mcmeta;

pack.png (一个正方形的图片,是数据包的图标,建议使用16x16的格式);data:

        test_datapack (当然,这里填你数据包的命名空间):                      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;

                        其他Mod添加的数据包自定义功能,在其他教程有出现。

数据包的内容

看到了吧?上面这些都是数据包可以包含的内容,不过我们先一个一个来,从最简单的配方开始。

配方

每一个配方文件都得放在 data/[命名空间]/recipes/(分类) 里面。

文件的名称建议使用成品的id,简洁明了。

工作台配方

顾名思义,就是使用工作台的配方。

有序配方

{    "type": "minecraft:crafting_shaped",    "pattern": [        "111",    //必须对应下面的“key”        " 2 ",    //空格就是空白        " 2 "    ],    "key": {        "1": {            "item": "minecraft:iron_ingot"    //这明显是铁锭        },        "2": {            "item": "minecraft:stick"    //这是木棍            //也可以用之后会教的“tag”        }    },    "result": {    //合成的成品        "item": "minecraft:iron_pickaxe",    //结合上面,这是一个铁镐的配方        "count": 1    //你可以用其他数字代替,当然,这不合理        }}

无序配方

{    "type": "minecraft:crafting_shapeless",    "result": {        "item": "minecraft:slime_ball",    //史莱姆球        "count": 3    //数量    },    "ingredients": [        [            { "item": "minecraft:milk_bucket" }    //一桶奶        ],        [            {                "item": "minecraft:lime_dye"    //黄绿色染料            }        ],        [            {                "item": "minecraft:lime_dye"    //同上            }        ]    ]}

熔炼配方

使用包括熔炉、高炉、烟熏炉、其他Mod添加的熔炉(比如热力系列的通量熔炼炉)的配方。

注:所有熔炼配方都可以在"result"下方添加"experience"(经验值)和"cookingtime"(烧练时间)项,但"result"后一定要加个半角逗号“,”!

"experience": 10,    //10点经验值"cookingtime": 20    //20tick(刻)=1秒

熔炉配方

{    "type": "minecraft:smelting",    "ingredient": {        "item": "minecraft:stick"    //输入木棍    },    "result": "minecraft:torch"    //输出火把}

高炉配方

{    "type": "minecraft:blasting",    "ingredient": {        "item": "minercraft:stick"    //输入木棍    },    "result": "minecraft:torch"    //输出火把}

烟熏炉

{    "type": "minecraft:smoking",    "ingredient": {        "item": "minercraft:stick"    //输入木棍    },    "result": "minecraft:torch"    //输出火把}

篝火

{    "type": "minecraft:campfire_cooking",    "ingredient": {        "item": "minercraft:stick"    //输入木棍    },    "result": "minecraft:torch"    //输出火把}

其他配方

在1.14,Minecraft添加了大量的工作方块,1.16还给锻造台加上了功能,以下就是那些配方了。

锻造台配方

由于1.20添加了锻造模板,导致所有的锻造台配方失效;

1.19.*版本因未知因素导致无法使用!

{    "type": "minecraft:smithing",    "base": {        "item": "minecraft:stick"    //输入木棍为原料物品    },    "addition": {        "item": "minecraft:coal"    //输入煤炭为附加物品    },    "result": {        "item": "minecraft:torch"    }}

切石机配方

实际上,它不仅仅是切“石”机,它可以切任何物品/方块,前提是你添加了这些配方。

{    "type": "minecraft:stonecutting",    "ingredient": {        "item": "minecraft:oak_planks"    //输入橡木木板     },     "result": "minecraft:stick",    //输出木棍     "count": 4    //(这个项必填)输出4个}

进度

你已经稍微学会制作数据包了,那你应该会制作下面关于进度的内容!

{    "criteria": {    //准则(就是放触发器的地方)        "stick": {    //名字自定义,可以有多个条件            "trigger": "minecraft:inventory_changed",    //一个触发器,具体用法在触发器条目            "conditions": {                "items": [                    {                        "item": "minecraft:torch"                    }                ]            }        }    },    "display": {        "icon": {    //进度的图标,可以用“"icon": "图片在数据包内部的路径"”代替            "item": "minecraft:torch"         },         "title": {             "translate": "火把!"         },         "description": {             "translate": "好烧好烧"         },         "frame": "task",    //进度的类型,"task"、"goal"、"challenge"分别为普通、目标、挑战         "announce_to_chat": true,     //进度完成后会不会在聊天框显示         "background": "图片在数据包内部的路径",    //可选,使用后该进度变为根进度,与parent冲突         "hidden": false,    //是否为隐藏进度         "show_toast": true    //进度完成后会不会在右上角的画面显示    },    "parent": "minecraft:story",    //可选,使用后改进度变为子进度,与background冲突    "requirements": [    //准则列表,在一个内容内则只需完成一个准则,如果有多个内容,则需完成全部内容(人话:在一起就做一个,不在一起就得全做)        ["stick"]    ],    "rewards": {    //进度完成后的奖励,具体内容在奖励条目        "experience": 10    //奖励经验    }}

触发器

恭喜!你应该学会使用这个自定义进度了!你可能发现了,我们可以修改它的完成方式!这需要触发器,但是触发器的内容众多,这个教程可能塞不下,所以具体内容可以在这个资料查询!

奖励

这个进度的功能包括“奖励10点经验”,我们可以修改它的奖励内容!它包括经验、函数、战利品表(本教程暂时不涉及)、配方(见配方条目)。

函数

虽然它叫“函数”,但是和那些数学里面的“函数”不同,函数只是用来执行指令的,相当于外部命令方块。

虽然它的原理简单,但是它却能干很多事情。

函数文件有个“.mcfunction”的后缀,不过它其实就是普通的文本文档(也就是说,你仍然能使用记事本开发它)。

新建一个“test.mcfunction”在/data/[命名空间](我们使用前面使用到的“test_datapack”)/functions/(分类)里,打开它,在里面写入以下内容:

say 这是一个用来测试的数据包的测试文档!

进入世界,输入/reload加载数据包,然后输入:

/function test_datapack(就是你的命名空间):(如果你放在分类里面,分类也要输入)/test

然后你就会在聊天框里面看到一句“这是一个用来测试的数据包的测试文档!”

函数就是这么简单。但是它和普通的指令不一样,类似命令方块,指令的前面要少一个“/”(比如著名模组创世神的大部分指令是两个“//”,要少一个变成“/”)。

本教程不持续更新中~



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3