[数据包日记]从萌新到入门的je1.14数据包制作教程
C60的命令教程系列Part2/3 数据包日记,今天开始起步
和指令日记不同,本帖需要一定的基础,因此会在第一节里补充一些知识,或者作出一些指引,正式教程会在第二节开始
老规矩,争取日更,尽量不拖更
本帖针对的版本是je 1.14,但是略微提一下1.13与1.14版本之间的不同之处
当然,如果在后续版本中有更新,我也会在本帖中做补充
最后,希望大家都能有所收获了
和指令日记不同,本帖需要一定的基础,因此会在第一节里补充一些知识,或者作出一些指引,正式教程会在第二节开始
老规矩,争取日更,尽量不拖更
本帖针对的版本是je 1.14,但是略微提一下1.13与1.14版本之间的不同之处
当然,如果在后续版本中有更新,我也会在本帖中做补充
最后,希望大家都能有所收获了
由于编辑数据包需要修改文件,因此大家可以使用一些文本编辑软件,如Notepad。(此时,一位喜欢用记事本的C60默默路过)。
在数据包中,会较多地使用json格式的文本,因此,需要大家牢牢掌握json的用法。关于json的格式,大家可以参考上一期教程《指令日记》第10期(日常偷懒)。
在编辑数据包时,也会经常性的手动修改文件类型,因此需要在电脑的系统设置里修改文件属性,确保你能够看到并修改文件的后缀名。
在数据包中,会较多地使用json格式的文本,因此,需要大家牢牢掌握json的用法。关于json的格式,大家可以参考上一期教程《指令日记》第10期(日常偷懒)。
在编辑数据包时,也会经常性的手动修改文件类型,因此需要在电脑的系统设置里修改文件属性,确保你能够看到并修改文件的后缀名。
有些时候,会碰到数据包无法正常加载的情况。有些时候,我们可能找不到出错的原因。这个时候,我们可以打开mc的输出日志。下面给出v2.1版本官启里的输出日志打开方法。
右下角点击
设置,后在启动器设置一栏里找到“启动时显示输出日志”并勾选。这个时候就可以在启动时看到输出日志。如果有无法正常加载的情况,可以通过输出日志来判断原因。
如果英文够好,应该是能看懂这个输出日志的,不需要了解太多术语。
右下角点击
设置,后在启动器设置一栏里找到“启动时显示输出日志”并勾选。这个时候就可以在启动时看到输出日志。如果有无法正常加载的情况,可以通过输出日志来判断原因。
如果英文够好,应该是能看懂这个输出日志的,不需要了解太多术语。
数据包的位置
任意打开一个1.13+的存档文件,可以看到一个名为datapacks的文件夹。打开这个文件夹,如果这个存档不是从别人那里下载的,正常情况下这个文件夹应该是空的。我们要做的事情就是在这个文件夹里加各种各样的东西。
任意打开一个1.13+的存档文件,可以看到一个名为datapacks的文件夹。打开这个文件夹,如果这个存档不是从别人那里下载的,正常情况下这个文件夹应该是空的。我们要做的事情就是在这个文件夹里加各种各样的东西。
数据包的结构
图片截自wiki
首先我们要在datapacks这个文件夹里新建一个文件夹。这个文件夹的名字就是数据包的名字。
然后打开这个文件夹。这个文件夹的里面应该有一个名为data的文件夹,和一个名为pack,格式为mcmeta的文件。建立好后,打开data文件夹
这个时候,需要设置命名空间。新建一个文件夹,名字随意。这个文件夹的名字就是命名空间。一个数据包里可以有多个命名空间,最终使用哪一个命名空间取决于那个数据文件在哪个文件夹里。
再次打开这个文件夹,里面就是各种数据文件夹,里面就是各种数据文件了,详见上图。
图片截自wiki
首先我们要在datapacks这个文件夹里新建一个文件夹。这个文件夹的名字就是数据包的名字。
然后打开这个文件夹。这个文件夹的里面应该有一个名为data的文件夹,和一个名为pack,格式为mcmeta的文件。建立好后,打开data文件夹
这个时候,需要设置命名空间。新建一个文件夹,名字随意。这个文件夹的名字就是命名空间。一个数据包里可以有多个命名空间,最终使用哪一个命名空间取决于那个数据文件在哪个文件夹里。
再次打开这个文件夹,里面就是各种数据文件夹,里面就是各种数据文件了,详见上图。
Unicode字符
有时候会碰到中文或其他字符显示乱码的情况。一些文本编辑器会有相关设置来解决这类问题。但是,不排除某些文本编辑器不支持这些功能(比如记事本)。这个时候,需要用到Unicode字符。关于什么是Unicode字符,大家可以自行百度。这个时候,可以去找一些中文、Unicode转换工具。转换效果如下:
《数据包日记》
↓↑
\u300A\u6570\u636E\u5305\u65E5\u8BB0\u300B
有时候会碰到中文或其他字符显示乱码的情况。一些文本编辑器会有相关设置来解决这类问题。但是,不排除某些文本编辑器不支持这些功能(比如记事本)。这个时候,需要用到Unicode字符。关于什么是Unicode字符,大家可以自行百度。这个时候,可以去找一些中文、Unicode转换工具。转换效果如下:
《数据包日记》
↓↑
\u300A\u6570\u636E\u5305\u65E5\u8BB0\u300B
接下来介绍一些基础的数据包命令
/datapack list --- 列出当前所有可用数据包
/datapack enable <数据包名> --- 启用某个数据包
/datapack disable <数据包名> --- 禁用某个数据包
/reload --- 用于重新加载数据包
注:
数据包默认是开启的
原版数据包名为vanilla
自定义数据包会自动加上“file/”前缀
/datapack list --- 列出当前所有可用数据包
/datapack enable <数据包名> --- 启用某个数据包
/datapack disable <数据包名> --- 禁用某个数据包
/reload --- 用于重新加载数据包
注:
数据包默认是开启的
原版数据包名为vanilla
自定义数据包会自动加上“file/”前缀
本系列的讲解顺序为:函数、标签、配方、进度、战利品表
结构不做讲解,大家用结构方块保存一下区域,然后把结构文件复制粘贴过去就行了。
那么,大家明天见了
结构不做讲解,大家用结构方块保存一下区域,然后把结构文件复制粘贴过去就行了。
那么,大家明天见了
作为一个cb玩家,函数在数据包里的出场率几乎达到了100%,有时候甚至一个数据包里只有函数。
此外,在后续的进度的教程里,也会用到这里的函数。
函数是一些命令的集合,就是可以使用一个命令,来执行多个命令。
函数的后缀名为mcfunction
此外,在后续的进度的教程里,也会用到这里的函数。
函数是一些命令的集合,就是可以使用一个命令,来执行多个命令。
函数的后缀名为mcfunction
函数的合适也非常简单,一行一个指令,即可,需要注意的是,函数里
也可以在一行的开头加井号#表示注释。
示例:
#function by Chelover_C60
gamerule doDaylightCycle false
gamerule doMobSpawning false
gamerule doWeatherCycle false
time set 6000
好,保存,更名为任意数字、字母、下划线的组合,不要忘了加后缀名。进入游戏。如果已经进入了游戏,则输入/reload。
也可以在一行的开头加井号#表示注释。
示例:
#function by Chelover_C60
gamerule doDaylightCycle false
gamerule doMobSpawning false
gamerule doWeatherCycle false
time set 6000
好,保存,更名为任意数字、字母、下划线的组合,不要忘了加后缀名。进入游戏。如果已经进入了游戏,则输入/reload。
使用/function命令来执行函数,格式为
/function <命名空间:函数名(去掉后缀名)>
示例:
刚刚我写的函数的命名空间是dod,函数名是example,于是输入
/function dod:example
/function <命名空间:函数名(去掉后缀名)>
示例:
刚刚我写的函数的命名空间是dod,函数名是example,于是输入
/function dod:example
另外,functions文件夹内也可以再建立文件夹,此时函数的表示方法为:
<命名空间:functions内的路径+函数名>
如果我把刚刚的那个函数放进functions内的一个名为123的文件夹内,那么使用方法应为:
/function dod:123/example
<命名空间:functions内的路径+函数名>
如果我把刚刚的那个函数放进functions内的一个名为123的文件夹内,那么使用方法应为:
/function dod:123/example
这个时候,可能会有人问,这个function好像没什么用啊,我直接用几个连锁命令方块不就行了吗?
一种比较好的解答方式是,有时候需要execute某个实体执行大量命令,而又不想一个个写execute命令时,就可以直接execute实体执行函数,可以省下不少敲键盘的时间。
另外,function的魅力不止于此。在function内还可以再嵌套使用function。如果在一个function里嵌套使用自身(术语称为“递归”),就可以做出来循环结构!
当然,使用递归时一定要用execute控制好循环条件,否则一言不合就会执行65536个命令
一种比较好的解答方式是,有时候需要execute某个实体执行大量命令,而又不想一个个写execute命令时,就可以直接execute实体执行函数,可以省下不少敲键盘的时间。
另外,function的魅力不止于此。在function内还可以再嵌套使用function。如果在一个function里嵌套使用自身(术语称为“递归”),就可以做出来循环结构!
当然,使用递归时一定要用execute控制好循环条件,否则一言不合就会执行65536个命令