我的世界定制你自己的椅子
在模组的 jar 包内,找到 chair_packs.json 文件并修改。
* 该文件修改后需更新到 模组的jar包 内才可识别,若是服主或多人联机玩家,你还需要将修改后的 模组 同步到你的客户端,或者好友。
chair_packs.json 文件默认内容:
{
"packlist": [
]
}
复制代码
根对象中所包含的键(Key):
-
packlist
值(Value)为若干个字符串。每个字符串为你自定义的ID。
一个简单的例子:
{
"packlist": [
"demo",
"my_chairs_pack"
]
}
复制代码
在这个例子中,分别添加了两个包:
demo : nzchairs_pack_demo
my_chairs_pack : nzchairs_pack_my_chairs_pack
进入下一步之前,这是你所需要知道的东西:
-
包名
你自定义的ID,作为识别符,下文都会简称为 包名 。 -
命名空间
为了防止你的包名与其他模组冲突,该模组会在你的包名前面加上前缀 nzchairs_pack_ 。
完整的形式为 nzchairs_pack_<包名> ,这是模组在Minecraft中注册的id,也是你的 命名空间。
此时你已经完成第一步了,接下来是将你的资源包复制进模组的 jar包 内的 assets 文件夹内。
资源目录示例:assets/<命名空间>/*
在你的资源目录下,应该还需要一个文件 pack.json:
assets/<命名空间>/pack.json
pack.json 用来注册你的方块,以及定义相关信息。
示例:
{
"blocks" : {
"nuclear_waste_cask" : {
"sit_pos" : [0.3125,1,0.5] ,
"ass_cancer" : true ,
"no_occlusion" : false ,
"shape_box" : [
[ 4, 0, 2, 12, 16, 14 ] ,
[ 2, 0, 4, 14, 16, 12 ] ,
[ 3, 0, 3, 13, 16, 13 ]
]
}
}
}
复制代码
根对象中所包含的键:
-
blocks
值为若干个键值对。每个键的名为你的方块的ID。
-
<方块ID>
值为若干个键值对,存放着对方块的定义。 -
sit_pos
值为一个长度为 3 的数组,用来定义你坐在椅子上的相对坐标。顺序为 x,y,z。
方块的坐标可以见文章末尾的示意图,在示意图中高度轴Y不表示。
坐标的值没有限定范围,但最好在区间 [0,1] 内。
0~1代表你在这个方块中的位置,可以理解为 0%~100%,也可以用熟知的 pos = n/16(像素)来表示,你如果不清楚该写什么,那 x 和 z 都应该写为 0.5(方块中心)。 -
ass_cancer
值为一个布尔值,可不填写,为true时,坐在该椅子上的玩家会获得 屁屁癌 -
no_occlusion
布尔值,可不填写,为true时,可以解决你的模型的碰撞箱的奇怪问题,例如透视。
在你不会编辑碰撞箱或模型过于复杂时打开这个开关。 -
shape_box
一个不限长度的数组,内部的值是一个长度为 6 的存放数字的数组,支持小数,你如果不知道怎么写,可以不填写这个字段,而是打开 no_occlusion 开关。
这个数组用来定义碰撞箱,前三个值为一个方块元素(box)的起始坐标(x,y,z),后三个值是结束坐标。可以理解为对角点,坐标的写法参考 BlockBench。这个值跟之前的将其他方块注册为椅子的教程略有不同,这里使用的区间是 [0,16],因为mc常用的方块贴图是16个像素=1方块,blockbench里也是用的该套计算方法。每个点表明1个像素,无论你的方块尺寸是对少,这里的比值都是1:16。
在完成这些设置后,你的椅子们就导入到游戏中了。
如果你需要配方,那是数据包该做的事。
配方的添加请参见 数据包
命名空间跟你的资源包是一样的。