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

C60的命令教程系列Part2/3 数据包日记,今天开始起步
和指令日记不同,本帖需要一定的基础,因此会在第一节里补充一些知识,或者作出一些指引,正式教程会在第二节开始
老规矩,争取日更,尽量不拖更
本帖针对的版本是je 1.14,但是略微提一下1.13与1.14版本之间的不同之处
当然,如果在后续版本中有更新,我也会在本帖中做补充
最后,希望大家都能有所收获了

楼主 化学爱好者_C60  发布于 2019-07-06 20:18:00 +0800 CST  
老规矩,二楼留作目录,禁止回复
建议开启只看楼主模式
另外,如果度娘意外吞楼,我会再做一个pdf,链接也会发到这一层

楼主 化学爱好者_C60  发布于 2019-07-06 20:20:00 +0800 CST  
1、基础数据包基础知识

楼主 化学爱好者_C60  发布于 2019-07-06 20:20:00 +0800 CST  
由于编辑数据包需要修改文件,因此大家可以使用一些文本编辑软件,如Notepad。(此时,一位喜欢用记事本的C60默默路过)。


在数据包中,会较多地使用json格式的文本,因此,需要大家牢牢掌握json的用法。关于json的格式,大家可以参考上一期教程《指令日记》第10期(日常偷懒)。


在编辑数据包时,也会经常性的手动修改文件类型,因此需要在电脑的系统设置里修改文件属性,确保你能够看到并修改文件的后缀名。

楼主 化学爱好者_C60  发布于 2019-07-06 20:34:00 +0800 CST  
有些时候,会碰到数据包无法正常加载的情况。有些时候,我们可能找不到出错的原因。这个时候,我们可以打开mc的输出日志。下面给出v2.1版本官启里的输出日志打开方法。
右下角点击
设置,后在启动器设置一栏里找到“启动时显示输出日志”并勾选。这个时候就可以在启动时看到输出日志。如果有无法正常加载的情况,可以通过输出日志来判断原因。
如果英文够好,应该是能看懂这个输出日志的,不需要了解太多术语。



楼主 化学爱好者_C60  发布于 2019-07-06 20:44:00 +0800 CST  
数据包的位置
任意打开一个1.13+的存档文件,可以看到一个名为datapacks的文件夹。打开这个文件夹,如果这个存档不是从别人那里下载的,正常情况下这个文件夹应该是空的。我们要做的事情就是在这个文件夹里加各种各样的东西。

楼主 化学爱好者_C60  发布于 2019-07-06 20:54:00 +0800 CST  
数据包的结构
图片截自wiki

首先我们要在datapacks这个文件夹里新建一个文件夹。这个文件夹的名字就是数据包的名字。
然后打开这个文件夹。这个文件夹的里面应该有一个名为data的文件夹,和一个名为pack,格式为mcmeta的文件。建立好后,打开data文件夹
这个时候,需要设置命名空间。新建一个文件夹,名字随意。这个文件夹的名字就是命名空间。一个数据包里可以有多个命名空间,最终使用哪一个命名空间取决于那个数据文件在哪个文件夹里。
再次打开这个文件夹,里面就是各种数据文件夹,里面就是各种数据文件了,详见上图。

楼主 化学爱好者_C60  发布于 2019-07-06 21:05:00 +0800 CST  
Unicode字符
有时候会碰到中文或其他字符显示乱码的情况。一些文本编辑器会有相关设置来解决这类问题。但是,不排除某些文本编辑器不支持这些功能(比如记事本)。这个时候,需要用到Unicode字符。关于什么是Unicode字符,大家可以自行百度。这个时候,可以去找一些中文、Unicode转换工具。转换效果如下:
《数据包日记》
↓↑
\u300A\u6570\u636E\u5305\u65E5\u8BB0\u300B

楼主 化学爱好者_C60  发布于 2019-07-06 21:23:00 +0800 CST  
接下来介绍一些基础的数据包命令
/datapack list --- 列出当前所有可用数据包
/datapack enable <数据包名> --- 启用某个数据包
/datapack disable <数据包名> --- 禁用某个数据包
/reload --- 用于重新加载数据包
注:
数据包默认是开启的
原版数据包名为vanilla
自定义数据包会自动加上“file/”前缀


楼主 化学爱好者_C60  发布于 2019-07-06 21:35:00 +0800 CST  
本系列的讲解顺序为:函数、标签、配方、进度、战利品表
结构不做讲解,大家用结构方块保存一下区域,然后把结构文件复制粘贴过去就行了。


那么,大家明天见了

楼主 化学爱好者_C60  发布于 2019-07-06 21:40:00 +0800 CST  
昨天帖子被吞了好在现在恢复了,下午有事,所以现在更新吧

楼主 化学爱好者_C60  发布于 2019-07-08 11:43:00 +0800 CST  
2、函数

楼主 化学爱好者_C60  发布于 2019-07-08 11:46:00 +0800 CST  
作为一个cb玩家,函数在数据包里的出场率几乎达到了100%,有时候甚至一个数据包里只有函数。
此外,在后续的进度的教程里,也会用到这里的函数。


函数是一些命令的集合,就是可以使用一个命令,来执行多个命令。
函数的后缀名为mcfunction

楼主 化学爱好者_C60  发布于 2019-07-08 11:54:00 +0800 CST  
函数的合适也非常简单,一行一个指令,即可,需要注意的是,函数里
也可以在一行的开头加井号#表示注释。
示例:

#function by Chelover_C60
gamerule doDaylightCycle false
gamerule doMobSpawning false
gamerule doWeatherCycle false
time set 6000


好,保存,更名为任意数字、字母、下划线的组合,不要忘了加后缀名。进入游戏。如果已经进入了游戏,则输入/reload。

楼主 化学爱好者_C60  发布于 2019-07-08 12:16:00 +0800 CST  
使用/function命令来执行函数,格式为
/function <命名空间:函数名(去掉后缀名)>
示例:
刚刚我写的函数的命名空间是dod,函数名是example,于是输入
/function dod:example

楼主 化学爱好者_C60  发布于 2019-07-08 12:20:00 +0800 CST  
另外,functions文件夹内也可以再建立文件夹,此时函数的表示方法为:
<命名空间:functions内的路径+函数名>
如果我把刚刚的那个函数放进functions内的一个名为123的文件夹内,那么使用方法应为:
/function dod:123/example


楼主 化学爱好者_C60  发布于 2019-07-08 12:26:00 +0800 CST  
这个时候,可能会有人问,这个function好像没什么用啊,我直接用几个连锁命令方块不就行了吗?


一种比较好的解答方式是,有时候需要execute某个实体执行大量命令,而又不想一个个写execute命令时,就可以直接execute实体执行函数,可以省下不少敲键盘的时间。


另外,function的魅力不止于此。在function内还可以再嵌套使用function。如果在一个function里嵌套使用自身(术语称为“递归”),就可以做出来循环结构!
当然,使用递归时一定要用execute控制好循环条件,否则一言不合就会执行65536个命令

楼主 化学爱好者_C60  发布于 2019-07-08 12:37:00 +0800 CST  
考虑到可能不是很好理解,我画了一个流程图,表示function递归的原理


楼主 化学爱好者_C60  发布于 2019-07-08 12:48:00 +0800 CST  
差不多就是这样了,大家明天见

楼主 化学爱好者_C60  发布于 2019-07-08 13:00:00 +0800 CST  
3、标签

楼主 化学爱好者_C60  发布于 2019-07-09 16:56:00 +0800 CST  

楼主:化学爱好者_C60

字数:10834

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

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

评论数:264条评论

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

 

热门帖子

随机列表

大家在看