[数据包日记]从萌新到入门的je1.14数据包制作教程

注意:这里的标签不是指nbt标签,也不是命令/tag的标签。
这里的标签是指一些东西的合集。
举例来说,在原版中,可以使用#minecraft:planks来代表所有种类的木板
这个#minecraft:planks就是一个标签

楼主 化学爱好者_C60  发布于 2019-07-09 17:01:00 +0800 CST  
标签位于命名空间下的tags文件夹中。
tags有5中,方块(blocks)、实体类型(entity_types)(1.14新增)、物品(items)、流体(fluids)和函数(functions)。
添加方法为在tags文件夹内建立一个文件夹,然后修改为对应名称,再打开后写入内容,即可。
比如,我要加入一个新的方块标签,我就需要在tags下新建一个名为blocks的文件夹,再往里添加json格式文件即可。


tags的json格式内含两个值:布尔值replace和数组values
replace后加true或false,可不填,表示是否替换原标签(若为true则会使原标签失效,若为false则作为原标签的补充),不填则默认为false
values后接中括号,内部写上各种元素,可以引用另一个标签。不要忘记加引号

楼主 化学爱好者_C60  发布于 2019-07-09 17:17:00 +0800 CST  
举个例子,我需要一个标签,能够让我同时选中所有种类的僵尸

于是我在命名空间为dod下的tags文件夹内新建一个名为entity_types的文件夹,后在其中新建一个文件,写入以下内容


{
"replace": false,
"values": [
"minecraft:zombie",
"minecraft:drowned",
"minecraft:husk",
"minecraft:zombie_villager"
]
}


后保存,更名为zombie,格式为json
进入游戏后,使用/kill @e[type=#dod:zombie] 即可同时杀死所有种类的僵尸



楼主 化学爱好者_C60  发布于 2019-07-09 17:44:00 +0800 CST  
唔~好像又是一个没啥用的内容~~~


实际上,标签在数据包内的出场率也是非常高。
除了能省下一些敲键盘的时间以外,一些特定的标签还拥有特殊的功能,这些功能集中在以minecraft作为命名空间的标签中。
比如,方块标签minecraft:enderman_holdable决定了哪些方块可以被末影人拿起。据此,我们可以做一些有趣的事情。
在minecraft命名空间下建立tags/blocks目录并建立名为enderman_holdable,后缀名为json的文件,在里面写入以下内容:


{
"replace": false,
"values": [
"minecraft:bedrock"
]
}


后进入游戏,我们可以发现


更多这样的标签的作用详见wiki“标签”页面

楼主 化学爱好者_C60  发布于 2019-07-09 17:58:00 +0800 CST  
另外说两个函数标签吧,也是非常常用的标签
minecraft:tick 拥有这个标签的函数将在每刻执行一次
minecraft:load 拥有这个标签的函数将在数据包加载时(如进入地图、输入/reload)执行一次


具体用法不再详细介绍

楼主 化学爱好者_C60  发布于 2019-07-09 18:03:00 +0800 CST  
今天就到这了,大家明天见

楼主 化学爱好者_C60  发布于 2019-07-09 18:04:00 +0800 CST  
没人看系列

楼主 化学爱好者_C60  发布于 2019-07-10 15:01:00 +0800 CST  
4、配方

楼主 化学爱好者_C60  发布于 2019-07-10 15:12:00 +0800 CST  
配方用于自定义合成表,可以根据需要制作出自定义的合成、熔炼等合成表
不过,由于配方不支持自定义nbt,导致其理应很有用,实际存在感却不强。

楼主 化学爱好者_C60  发布于 2019-07-10 15:19:00 +0800 CST  
配方保存至命名空间下的recipes文件夹中,为json格式的文件
所有形式的配方文件借助type这个参数来区分。type参数后可接minecraft:crafting_shaped(有序合成)、minecraft:crafting_shapeless(无序合成)、minecraft:smelting(熔炉)、minecraft:blasting(高炉)(1.14新增)、minecraft:campfire_cooking(篝火)(1.14新增)、minecraft:smoking(烟熏炉)(1.14新增)、minecraft:stonecutting(切石机)(1.14新增)和特殊配方。其中特殊配方应用于旗帜、烟火之星、地图等,本节不做介绍。

楼主 化学爱好者_C60  发布于 2019-07-10 15:30:00 +0800 CST  
先来介绍有序合成
有序配方通过pattern参数使用密钥对配方进行描述,然后借助key参数对密钥进行解释,使用result参数决定合成结果。
pattern内借助字符串来表示合成表的样子,如:
"pattern": [
"AAA",
"ABA",
"AAA"
]
这就表示我设计的配方是需要8个物品A和1个物品B来合成物品,并且需要使用物品A将物品B围成一圈。这里的字母A和字母B就是密钥。
如果对应区域没有物品,使用空格来代替密钥即可。
密钥可以使用任意字符,也可以使用符号。


然后使用key参数对密钥进行解释
"key":{
"A": {
"item": "minecraft:iron_bars"
},
"B": {
"item": "minecraft:nether_star"
}
}
这里说明了物品A是铁栅栏,物品B是下界之星。
同时,密钥里也可以使用标签。需要将item换成tag,然后把物品id换成标签id即可,不要加井号。


最后使用result参数决定最终合成的物品
"result": {
"count": 1,
"item": "minecraft:spawner"
}

楼主 化学爱好者_C60  发布于 2019-07-10 16:01:00 +0800 CST  
那么,刚刚的那个配方的完整形式是
{
"type": "minecraft:crafting_shaped",
"pattern": [
"AAA",
"ABA",
"AAA"
],
"key": {
"A": {
"item": "minecraft:iron_bars"
},
"B": {
"item": "minecraft:nether_star"
}
},
"result": {
"count": 1,
"item": "minecraft:spawner"
}
}
最终效果如下


由于无法加nbt,导致只能做出猪的刷怪笼。

楼主 化学爱好者_C60  发布于 2019-07-10 16:04:00 +0800 CST  
切石机配方有点迷。。。
切石机使用ingredients参数来表示所需物品(不加中括号),可以使用物品或标签。
在输出结果一栏,使用result直接接物品id,再使用count参数来决定数量(喂,和wiki上说的一点都不一样啊)
示例:
{
"type": "minecraft:stonecutting",
"ingredient": {
"item": "minecraft:prismarine"
},
"result": "minecraft:prismarine_shard",
"count": 4
}
效果:


楼主 化学爱好者_C60  发布于 2019-07-10 16:46:00 +0800 CST  
熔炉、高炉、烟熏炉、篝火的配方格式相同,这里只介绍熔炉的配方格式。
使用ingredients参数来决定输入物品,格式同无序合成
使用result参数直接接生成物品
使用experience来决定配方给予的经验
使用cookingtime来决定熔炼时间(单位:游戏刻)
示例:
{
"type": "minecraft:smelting",
"ingredient": [
{
"item": "minecraft:rotten_flesh"
}
],
"result": "minecraft:leather",
"experience": 0.1,
"cookingtime": 200
}
表示将腐肉经过10秒的熔炉后烧制成皮革,并奖励0.1点经验(原版腐肉烧皮革get)


楼主 化学爱好者_C60  发布于 2019-07-10 17:00:00 +0800 CST  
使用/recipe命令,或者配方书,可以奖励或剥夺玩家的配方。详情可以参考上一期教程《指令日记》


今天就到这了,大家明天见

楼主 化学爱好者_C60  发布于 2019-07-10 17:01:00 +0800 CST  
战利品表和进度的顺序调整一下,先讲战利品表,再讲进度
刚刚发现进度里涉及了战利品表的内容

楼主 化学爱好者_C60  发布于 2019-07-11 12:19:00 +0800 CST  
5、战利品表

楼主 化学爱好者_C60  发布于 2019-07-11 16:55:00 +0800 CST  
战利品表算是一个比较常用的功能吧,
通过自定义战利品表,可以使宝箱随机生成内容,也可以控制实体的掉落物,算是一个比较实用的内容吧。
战利品表的结构还算比较容易理解,但是。。。写起来是真的头疼(我想事先准备一个战利品表,方便些教程。本来不想写太多,然而。。。一不小心写了113行

楼主 化学爱好者_C60  发布于 2019-07-11 16:59:00 +0800 CST  
战利品表的组成是一个个随机池。在执行战利品表的时候,会在每一个随机池里抽出一定数目的物品,后将这些物品作为战利品掉落或放入箱子。

楼主 化学爱好者_C60  发布于 2019-07-11 17:08:00 +0800 CST  
(1.14里)战利品表用有多种类型,不同类型的战利品表由参数type控制。type后可接参数有:
empty 空战利品表
entity 实体战利品表
block 方块战利品表
chest 宝箱战利品表
fishing 钓鱼战利品表
advancement_reward 进度战利品表
generic 其他类型战利品表(可应用于所有类型的战利品表,类似于1.13)

楼主 化学爱好者_C60  发布于 2019-07-11 17:13:00 +0800 CST  

楼主:化学爱好者_C60

字数:10834

发表时间:2019-07-07 04:18:00 +0800 CST

更新时间:2020-02-21 20:37:18 +0800 CST

评论数:264条评论

帖子来源:百度贴吧  访问原帖

 

热门帖子

随机列表

大家在看