本教程为Java版专制。
在动手制作资源包之前,请先确保拥有以下工具:Minecraft Java Edition
一个纯文本编辑器
一个图片编辑软件
一个压缩软件
纯文本编辑器
纯文本文档,就是没有任何文本修饰的,没有任何粗体,下划线,斜体,图形,符号或特殊字符及特殊打印格式的文本,只保存文本,不保存其格式设置。将所有的分节符、分页符、新行字符转换为段落标记。
我们在资源包中会遇到许多例如xxx.mcmeta、xxx.json、xxx.properties格式的文件,这些文件都是纯文本文件,需要用纯文本编辑器进行编辑。
若您的电脑未经过特殊的设置,一般打开txt文件都是使用记事本打开的。
图片编辑软件
我使用的是Photoshop
但只要满足这两个要求:能够编辑和导出png格式的图片。
支持alpha通道(透明度)。
都是可以使用的。
您也可以花点钱去steam买一个叫做Aseprite的软件,这是一个专门用于像素画的软件
压缩软件
我使用的是WinRAR,大家可以使用Bandizip
我们的首先要做的事是:让Minecraft识别并加载它
找到原版资源文件,方便我们模仿和修改
着手修改一个简单的材质
更换资源包的图标
第一步:
我们先在桌面建立一个文件夹,名字随你,这个名字确定了你的材质包的名字。
第二步:
我们在这个文件夹里面创建一个文本文件(txt文件),在里面写入下面的代码:
{
"pack":{
"pack_format":1,
"description":"2"
}
}
了解JSON格式的人已经知道了这个是一个JSON文件
我们需要把这个代码中的“1”,“2”替换掉
pack_format 后面的数字“1”用于表示资源包的版本,这里的版本不是你决定的版本,而是根据Minecraft版本决定的。在加载资源包时,如果资源包版本和游戏版本不匹配,就会显示出一个错误,需要进行确认后才能加载资源包。1.6.1-1.8.9是1,1.9-1.10.2是2,1.11-1.12.2是3,1.13-1.14.4是4,1.15是5。有些新手看了其他的文章说了pack_format后面的数字为Minecraft版本,就直接把版本号填了进去,我第一次也是一样。
description 为资源包的简介,后面的数字“2”可以随意修改,但是不得修改文字两端的双引号,也不能在文字中添加半角双引号。
再次强调,在代码中不能出现全角符号,一定要使用半角符号。不然游戏检测不出来。
第三步:
现在我们要去提取Minecraft原版材质。
原版材质位于“游戏目录\minecraft.\versions\版本号”的这个jar文件里面,我们需要用压缩软件打开这个jar文件(注意不是解压)。
把这个jar文件中的这个assets文件夹右击,选择解压到我们一开始创建的文件夹中。
让我们打开assets/minecraft/textures/block,然后找到我们要修改的材质。
提示:如果你实际看到的路径是assets/minecraft/textures/blocks,别担心,Minecraft的不同版本的资源路径并不相同,用你实际看到的路径即可。
打开图片编辑器,对其修改一番,并按照原名保存,覆盖掉原先的文件。
这时候我们可以把这个文件夹材质包的文件夹(也就是我们第一次建立的文件夹)放入游戏的资源包文件夹中然后就可以看到我们的材质包了。
第四步:
不想用默认的资源包图标,想要换一个好看的图标?首先我们需要一个正方形的png格式图片,必需是正常保存的png格式,别的格式把后缀改成png那不叫png格式。图片的边长应为2的次方,例如16,32, 64等。
然后改名为pack.png。
放入资源包文件夹下。
好了,我们的一个简略材质包就到此完成了。
下面,是这个教程的难点部分
我们接下来要做的是动态材质
动态材质实际上就是是逐帧绘制,竖向连接成长条的单张图案。在游戏中,自上而下逐帧播放,反复循环。一共有多少帧,每一帧播放多长时间,都是可以自定义的。
重点:因为最后一帧之后紧接着就是第一帧,所以开头和结尾最好要能接上。
然后,将刚刚修改的文件的文件名+后缀复制一下。
在这个文件夹内新建一个txt文件,名字为刚刚复制的那个名字,后缀把这个txt文件的txt改为mcmeta,然后在里面打上以下代码:
{
"animation": {
}
}
如果需要修改快慢,就打入以下代码:
{
"animation": {
"frametime": 3
}
}
在这段代码中我们添加了frametime,frametime表示材质的每一帧持续的时间(单位为0.05秒),默认值为1,也就是说一秒可以播放20帧,我们把它放慢三倍。
接下来我们注意到这张材质是上下对称的,下面的四张材质显得有些浪费,我们现在就要把这四张材质给去掉。
我们修改一下刚刚的代码,改为这样:
{
"animation": {
"frametime": 3,
"frames": [0,1,2,3,4,5,4,3,2,1]
}
}
"frames"里填写帧播放的次序,最上面的一帧是第0帧,我让它先从0帧播放到5帧,再倒着从5帧返回0帧了。
模型&渲染
这一章理论居多,例子偏少,等内容逐渐完善,将会补充更多实例。
本章不涉及实体模型。
下面我们要做的事:建模相关教程
阴影
建模相关教程建议去mcbbs寻找
阴影:
Minecraft中方块的下部会出现阴影,有时候会非常丑,那么我们该怎么做呢?
查阅了模型相关的资料之后我们发现方块模型的element有一个叫"shade"的选项,默认情况下为true,当它为false的时候,这个元素就不会渲染阴影了。
{
"from": [-8, -12, 32],
"to": [24, 17, 32],
"shade": false,
"rotation": {"angle": -45, "axis": "x", "origin": [8, -12, 32]},
"faces": {
"north": {"uv": [0, 0, 8, 8], "texture": "#1"},
"east": {"uv": [0, 0, 8, 8], "texture": "#1"},
"south": {"uv": [0, 0, 8, 8], "texture": "#1"},
"west": {"uv": [0, 0, 8, 8], "texture": "#1"},
"up": {"uv": [0, 0, 8, 8], "texture": "#1"},
"down": {"uv": [0, 0, 8, 8], "texture": "#1"}
}
}除了上述的每个方块的照明,Minecraft还可以为方块的每个面进行一些额外的计算,来增强照明的真实性。
这个方法根据面的朝向,用不同的光照强度渲染六个面:顶面(Y+)为最大亮度
底面(Y-)为50%亮度
Z轴上的面(Z+、Z-=南、北)为80%亮度
Z轴上的面(X+、X-=东、西)为60%亮度
好了,本期教程就先到这里了,下一节我将会介绍:环境光遮蔽
面剔除
tintindex
不透明方块
渲染类型
物品展示框——附加模型包
物品标签——添加更多物品
蝶舞——盆栽艺术
制作不易,求一波三连