本帖最后由 719220502 于 2017-7-15 21:07 编辑 
↑直接点击对应文字可翻页点击论坛顶部“切换到宽版”浏览,效果更佳

优秀代表作品:3D原版材质包
推荐使用模型编辑器,可以大大节省编写时间和减少错误:
↑直接点击对应文字可翻页点击论坛顶部“切换到宽版”浏览,效果更佳
 资源包模型教程-1.9新特性研究
资源包模型教程-1.9新特性研究
优秀代表作品:3D原版材质包
推荐使用模型编辑器,可以大大节省编写时间和减少错误:
本教程所指的目录均为minecraft.jar中的目录,而非游戏目录转载不需经过本人同意,但需要遵守 CC-BY-NC-SA 3.0 协议,贴上本帖地址以及WIKI地址
一、状态文件 某些方块会有几个特殊的状态,每个方块都会有与其他方块不同的状态。这些状态都储存在assets/minecraft/blockstates中。 状态文件和模型文件不是同一个概念,它们是分开储存的,但是是密不可分的。 自1.9开始,方块多种状态的状态文件将合并在一个文件之中 状态文件的合并不会对方块的外观,行为方式,NBT,状态等有任何的影响
方块状态文件如下:(括号内为值的数据类型)
点击论坛顶部“切换到宽版”浏览,效果更佳
二、方块模型
方块模型文件如下:(括号中为数据类型)点击论坛顶部“切换到宽版”浏览,效果更佳
————方块模型部分结束————回首页
[/td][/tr]
[/table]
三、物品模型
点击论坛顶部“切换到宽版”浏览,效果更佳
————物品模型部分结束————回首页
[/td][/tr]
[/table]
四、更新历史
————更新历史部分结束————回首页
[/td][/tr]
[/table]
恭喜发现彩蛋~
记得加分哦
↑直接点击对应文字可翻页点击论坛顶部“切换到宽版”浏览,效果更佳

资源包模型教程-1.9新特性研究
| 方块模型规定游戏中所有的方块的外观,特征,形状,材质等; 物品模型规定物品在不同位置的不同形态:戴在头上时、拿在手上时、丢在地上时、是否拉弓、工具损坏程度等。 多变的模型组合可以在游戏的背后,刻画出一个崭新的世界。准备好了吗? | 
优秀代表作品:3D原版材质包

推荐使用模型编辑器,可以大大节省编写时间和减少错误:
| opl's Model Creater       (免费,感谢flashtt的提供和719823597的汉化) 或 BDcraft Cubik LITE       (普通版下载,专业版请去官网购买) | 
本教程所指的目录均为minecraft.jar中的目录,而非游戏目录
转载不需经过本人同意,但需要遵守 CC-BY-NC-SA 3.0 协议,贴上本帖地址以及WIKI地址
2021.12 数据,可能有更多内容
↑直接点击对应文字可翻页点击论坛顶部“切换到宽版”浏览,效果更佳

| 方块模型规定游戏中所有的方块的外观,特征,形状,材质等; 物品模型规定物品在不同位置的不同形态:戴在头上时、拿在手上时、丢在地上时、是否拉弓、工具损坏程度等。 多变的模型组合可以在游戏的背后,刻画出一个崭新的世界。准备好了吗? | 
优秀代表作品:3D原版材质包

推荐使用模型编辑器,可以大大节省编写时间和减少错误:
| opl's Model Creater (免费,感谢flashtt的提供和719823597的汉化)或BDcraft Cubik LITE (普通版下载,专业版请去官网购买) | 
本教程所指的目录均为minecraft.jar中的目录,而非游戏目录转载不需经过本人同意,但需要遵守 CC-BY-NC-SA 3.0 协议,贴上本帖地址以及WIKI地址
一、状态文件 某些方块会有几个特殊的状态,每个方块都会有与其他方块不同的状态。这些状态都储存在assets/minecraft/blockstates中。 状态文件和模型文件不是同一个概念,它们是分开储存的,但是是密不可分的。 自1.9开始,方块多种状态的状态文件将合并在一个文件之中 状态文件的合并不会对方块的外观,行为方式,NBT,状态等有任何的影响
方块状态文件如下:(括号内为值的数据类型)
点击论坛顶部“切换到宽版”浏览,效果更佳
| (The root tag) └ variants:包含着多个状态。(Compound) │ ├ (A variant):储存方块的状态(状态的名称及其值)。(Compound) │ │ └ (A model):储存方块的状态,A variant下的每一个对象。(Compound) │ │ ├ model:在 assets/minecraft/models/blocks 下寻找指定的模型文件。(String) │ │ ├ x:将模型在x轴上旋转指定的角度,值为90的整数倍。(Int) │ │ ├ y:将模型在y轴上旋转指定的角度,值为90的整数倍。(Int) │ │ ├ uvlock:是否锁定模型的旋转。当值为false时,模型才可以旋转,默认为false。(Byte)* │ │ └ weight:该模型被随机到的概率,默认为1(100%)。(Int) │ ├ model:在 assets/minecraft/models/blocks 下寻找指定的模型文件。(String) │ ├ x:将模型在x轴上旋转指定的角度,值为90的倍数。(Int) │ ├ y:将模型在y轴上旋转指定的角度,值为90的倍数。(Int) │ └ uvlock:是否锁定模型材质的旋转。当值为false时,模型材质才可以旋转,默认为false。(Byte)* └ multipart:用于结合多种方块状态。(List) └ (A case):确定一个方块状态和此状态下应使用的方块模型。(Compound) ├ when:相当于逻辑与门,如果集对象内的方块状态全部满足其值或返回true,那么使用 apply 集合下的模型,如果不满足任何一项或返回false,则跳过 apply 及其子项。如果未设置此集合, apply 集合将永远启用。(Compound) │ ├ OR:相当于逻辑或门,只要满足值中的任意对象,返回true。反之,如果不满足值中的任何对象,返回false。(List) │ │ └ (A condition):相当于逻辑与门,对象中所有的方块状态符合其值时,返回true。(Compound) │ │ └ (A case):A condition对象中的单个数据的数据,多个值之间用“|”隔开。 (String) │ └ (A case):when对象中的单个数据的数据,多个值之间用“|”隔开,注意,这是when的子项,而不是OR的子项(A condition的数据),不可混淆。 (String) └ apply:在when返回值为true时执行。储存方块的状态。(Compound) ├ (A model):方块的状态数据(名称及其值)。(String) │ ├ model:在 assets/minecraft/models/blocks 下寻找指定的模型文件。(String) │ ├ x:将模型在x轴上旋转指定的角度,值为90的整数倍。(Int) │ ├ y:将模型在y轴上旋转指定的角度,值为90的整数倍。(Int) │ ├ uvlock:是否锁定模型材质的旋转。当值为false时,模型材质才可以旋转,默认为false。(Byte)* │ └ weight:该模型被随机到的概率,默认为1(100%)。(Int) ├ model:在 assets/minecraft/models/blocks 下寻找指定的模型文件。(String) ├ x:将模型在x轴上旋转指定的角度,值为90的倍数。(Int) ├ y:将模型在y轴上旋转指定的角度,值为90的倍数。(Int) └ uvlock:是否锁定模型材质的旋转。当值为false时,模型材质才可以旋转,默认为false。(Byte)* | 
| 提示: 1.如果该方块没有任何状态,那么状态名称即以“normal”命名。 查看方块有什么状态的方法如下:1.打开游戏 2.随机进入一个世界,按下F3,打开调试界面 3.将准星指向你要查看的方块 4.在红框框出的地方会列出该方块的所有状态  可以看到,草方块有一个snowy状态(是否有雪) 方块的状态不止有一个,值也不一定局限于true/false,如红石:  也有部分方块没有任何方块状态,如灵魂沙:  如何处理这种没有状态的方块,前文已提到所有方块状态一览: Block states(英文,推荐) 方块状态(中文,不推荐) 中文版可能滞后或翻译错误,所有条目请以英文版为准 2.如果在A variant下有很多个对象且没有设置出现几率(weight),那么它们就会以同等的几率出现(有四个,每个就是1/4几率) | 
| 注释: 1.uvlock 当值为false时,模型材质才可以旋转(当值为true时,材质,仅仅是材质,不会旋转) "uvlock":"false"(默认):  "uvlock":"true":  可以看到,即使uvlock打开,模型依然会旋转,但是模型材质的方向被锁定了 2.名称带括号的条目 包括(The root tag),(A variant),(A model),(A case-对象),(A condition),(A case-List) 带括号的条目使用时不使用括号内的内容,而是随情况改变 (The root tag) = 整个JSON(头尾两个花括号) (A variant) = variants子项下的每一个条目 (A model) = A variant子项下的每一个条目 (A case-Compound) = multipart数组下的每一个条目 (A condition) = OR数组下的每一个条目 (A case-String) = A condition子项下的每一个数据 例子(grass.json): 
 例子2(Oak Fence): 
 
 3.数据类型 “数据类型”指值的应该是什么类型的数据,不同的数据类型对值的处理方式不同,不可混用。 
 
 ————状态文件部分结束————回首页 | 
二、方块模型
| 所有的方块模型文件都储存在assets/minecraft/models/block目录下,这些文件的文件名可以更改,但必须与状态文件中的指定文件名吻合(不建议这么做) | 
| (The root tag)  ├ parent:从 assets/minecraft/models 中加载方块模型作为父类。(String)*  ├ ambientocclusion:是否使用环境光遮蔽,默认为true。(Byte)* ├ display:显示物品模型的不同地方。(对象) │ └ thirdperson_righthand, thirdperson_lefthand, firstperson_righthand, firstperson_lefthand, gui, head, ground, fixed:分别指:第三人称视角右手的物品,第三人称视角左手的物品,第一人称视角右手的物品,第一人称视角左手的物品,GUI内的物品,头上戴的物品,在地面上的物品,和物品的帧数(物品展示框的旋转角度等)。(Compound) │ ├ rotation:在x,y,z轴上确定模型旋转的角度。格式为[x, y, z]。(List) │ ├ translation:在x,y,z轴上确定模型平移的距离,单位为像素,值在-24至24之间。格式为[x, y, z]。(List) │ └ scale:在x,y,z轴上确定模型在x, y, z轴上缩放的倍数,值在0至4之间。格式为[x, y, z]。(List) ├ textures:从 assets/minecraft/textures 中载入材质作为模型的材质,也可以使用材质变量。(Compound) │ ├ particle:决定模型被破坏时的粒子材质。(String) │ └ (A texture variable):定义一个材质变量,从 assets/minecraft/textures 中载入材质。(String)* └ elements:该模型的所有组成元素,这些元素都应为方块形式。(List) └ (An element):单个元素,多个元素组成一个方块。(Compound)* ├ from:选择区域的起点坐标,值在-16~32之间。格式为[x, y, z]。(List)* ├ to:选择区域的终点坐标,值在-16~32之间。格式为[x, y, z]。(List)* ├ rotation:定义一个元素的旋转属性。(Compound) │ ├ origin:设置旋转的中心,格式为[x, y, z],默认值为[8, 8, 8]。(List) │ ├ axis:定义旋转方向,值为"x"或"y"或"z"。(String) │ ├ angle:定义旋转的角度,值在-45至45之间,必须为22.5的倍数。默认为0。(Int) │ └ rescale:规定每个旋转后面是否会缩放到单个面的大小,默认为false。(Byte) ├ shade:是否渲染阴影,默认为true。(Byte) └ faces:规定方块六个面的材质,如果有一个面没有规定材质,那么它将会显示错误方块(紫黑方块)。(Compound) └ down, up, north, south, west, east:保存方块六个面的数据。(Compound) ├ uv:使用规定的材质的某个区域作为方块模型某个部分的材质。格式为[x1,y1,x2,y2]。(List)* ├ texture:规定指定面使用的材质,在材质变量前面前缀"#"以使用材质变量。(String) ├ cullface:值为down, up, north, south, west, east,这一面接触其他元素时,不渲染(String) ├ rotation:旋转材质的角度,值为90的倍数。(Int) └ tintindex:是否将材质使用colormap文件夹内的色谱进行着色。按照文件名排序从0开始索引,-1则为不着色(Int) | 
| 注释:1.parent既然这是“父模型”那么肯定也有对应的“子模型”。技术上说,可以不必规定父子模型,但是父模型会大大让模型简洁且容易阅读。典型的例子:torch.json ├ normal_torch.json ├ lit_redstone_torch.json └ unlit_redstone_torch.json其中torch.json是父模型,下面三个是子模型torch.json: 
 
 代码: 
 2.ambientocclusion即Ambient Occlusion,简称AO,环境光遮蔽,对不规则形状的方块使用效果较为明显。 AO是来描绘物体和物体相交或靠近的时候遮挡周围漫反射光线的效果,可以解决或改善漏光、飘和阴影不实等问题,解决或改善场景中缝隙、褶皱与墙角、角线以及细小物体等的表现不清晰问题,综合改善细节尤其是暗部阴影,增强空间的层次感、真实感,同时加强和改善画面明暗对比,增强画面的艺术性。可以说:AO特效在直观上给我们玩家的感受主要体现在画面的明暗度上,未开启AO特效的画面光照稍亮一些;而开启AO特效之后,局部的细节画面尤其是暗部阴影会更加明显一些。—— 百度百科 3.(A texture variable)定义:如果定义了一个材质变量,就无需多次输入材质的储存路径了,注意它是textures的子项格式为"变量名称": "从assets/minecraft/textures载入的材质路径"变量名称可以随意变换,但最好符合一定的规律以便使用子模型中定义的变量可在父模型内使用,不同子模型可以使用相同的变量名例子: 
 调用:调用你也可以理解为“读取”,只要在变量名之前加入一个#即可完成调用例子: 
 4.(An element)指单个元素,多个元素才能组成一个方块,elements则是多个元素的集合举例: 
 5.from, tofrom, to的xyz坐标为一个方块内的顶点坐标连接from, to两点可得到一个对角线,就确定一个立方体(原理和圈地相同,不详细介绍)  黑科技:from, to的取值范围(-16~32)限制了方块的最大大小(4x4),不过配合"rotation"标签是可以避开这一限制的详见 http://www.mcbbs.net/thread-637959-1-1.html chyx的研究 6.uv截取选定材质(texture)的一部分作为方块模型某个部分的材质,格式为[x1,y1,x2,y2]一个16x16的材质,坐标分布图如下:    代码: 
 需要注意的问题: 
 | 
| 例子:1.torch.json(关于父子模型部分,材质变量部分详见注释) 
 2.cube.json 
 3.cross.json这是一个为需要交叉渲染的方块准备的父模型(如树苗,小麦,草等呈十字的方块) 
   | 
————方块模型部分结束————回首页
[/td][/tr]
[/table]
三、物品模型
| 物品模型没有不同的状态,因此不需要状态文件。模型文件存储在assets/minecraft/models/item中。这些模型文件的名称为硬编码,不可修改。 | 
点击论坛顶部“切换到宽版”浏览,效果更佳
| (The root tag) ├ parent:从 assets/minecraft/models 中加载方块模型作为父类。(String)* ├ textures:从 assets/minecraft/textures 中载入材质作为模型的材质,也可以使用材质变量。(Compound) │ ├ layer#:从 assets/minecraft/models 中加载物品在物品栏中显示的图标,#为一个数字,表示第几层图标,从0起始。有些模型不止有一层(如刷怪蛋)。模型的层数是由硬编码规定的,不可增加。只可以当"parent"的值为"builtin/generated"时使用(String) │ ├ particle:决定物品的粒子材质,默认为"layer0"的值。(String) │ └ (A texture variable):定义一个材质变量,从 assets/minecraft/textures 中载入材质。(String) ├ elements:该模型的所有组成元素,这些元素都应为方块形式。(List)* │ └ (An element):单个元素,多个元素组成一个物品。(Compound) │ ├ from:选择区域的起点坐标,值在-16~32之间。格式为[x, y, z]。(List) │ ├ to:选择区域的终点坐标,值在-16~32之间。格式为[x, y, z]。(List) │ ├ rotation:定义一个元素的旋转属性。(Compound) │ │ ├ origin:设置旋转的中心,格式为[x, y, z],默认值为[8, 8, 8]。(List) │ │ ├ axis:定义旋转方向,值为"x"或"y"或"z"。(String) │ │ └ angle:定义旋转的角度,值在-45至45之间,必须为22.5的倍数。默认为0。(Int) │ └ faces:规定物品六个面的材质,如果有一个面没有规定材质,那么它不会被渲染。(Compound) │ └ down, up, north, south, west, east:保存物品六个面的数据。(Compound) │ ├ uv:使用规定的材质的某个区域作为物品模型某个部分的材质。格式为[x1,y1,x2,y2]。(List) │ ├ texture:规定指定面使用的材质,在材质变量前面前缀"#"以使用材质变量。(String) │ ├ cull:是否渲染不可见的元素。(Byte) │ ├ rotation:旋转材质的角度,值为90的倍数。(Int) │ └ tintindex:是否将材质使用硬编码进行着色。(Int) ├ display:规定模型在不同地方的不同显示状态。(Compound) │ └ thirdperson_righthand, thirdperson_lefthand, firstperson_righthand, firstperson_lefthand, gui, head, ground, fixed:分别指:第三人称视角右手的物品,第三人称视角左手的物品,第一人称视角右手的物品,第一人称视角左手的物品,GUI内的物品,头上戴的物品,在地面上的物品,和锁定物品的帧数(使用第几帧的物品)。(Compound) │ ├ rotation:在x,y,z轴上确定模型旋转的角度。格式为[x, y, z]。(List) │ ├ translation:在x,y,z轴上确定模型平移的距离,单位为像素,值在-24至24之间。格式为[x, y, z]。(List) │ └ scale:在x,y,z轴上确定模型在x, y, z轴上缩放的倍数,值在0至4之间。格式为[x, y, z]。(List) └ overrides:使用物品标签确定不同状态下物品的模型及材质。(List) ├ (a case):单个标签。(Compound) │ └ predicate:储存多个物品标签。(Compound) │ └ (a case):单个物品标签,详见注释。(String)* └ model:从 assets/minecraft/models/ 中调用模型的路径。(String) | 
| 注释: 1.parent 具体用法详见方块模型页,以下为物品模型特性: 
 "builtin/compass"可以写成: 代码: 
 "builtin/clock"可以写成: 代码: 
 2.(a case)-String(物品标签):物品标签有如下几种,表示物品在特定情况下的状态: 
 单个标签使用不同值时,值从小到大排列,例: 
 单个模型匹配多个标签时,使用逗号分隔,例 bow.json 
 | 
| 例子: 1.torch.json 
 材质通过layer0决定,为火把材质 2.fishing_rod.json 
 | 
————物品模型部分结束————回首页
[/td][/tr]
[/table]
四、更新历史
| 本页用作引用WIKI的“history”部分,如果需要亲自编写模型,请务必仔细阅读本页,确定所编写版本是否拥有某标签,以免发生意料外的错误,本页仅做PC的更新  由于方块模型的快速更新且MINECRAFT不作兼容处理,所以编译或使用带有方块模型的材质请仔细对应版本 虽然兼容性大大降低,但是MINECRAFT不会因为方块模型的编译错误而导致崩溃,请编译完一套的方块模型之后仔细地查看有无错误的方块,也要注意检查在物品栏内不显示的方块 | 
| 划线的为影响兼容性的更新 1.9(15w31a) 
 
 
 
 
 1.8(14w25a) 
 
 
 
 
 
 
 | 
————更新历史部分结束————回首页
[/td][/tr]
[/table]
恭喜发现彩蛋~
记得加分哦
怎么翻页?
人气亮了
1XWJ 发表于 2015-9-3 15:51
怎么翻页?
点那几个字啊= =
逼精华,赞{ps:大触你哪找到的}
试了一下,怎么感觉方块模型和物品模型的display的fixed、ground好像没效果呢……难道是我1.8的版本太低?等下试试1.8.8看看……
话说fixed是不是也包括了放在物品展示框时的状态?
话说fixed是不是也包括了放在物品展示框时的状态?
flash0tt 发表于 2015-9-5 00:21
试了一下,怎么感觉方块模型和物品模型的display的fixed、ground好像没效果呢……难道是我1.8的版本太低? ...
display及其子项是1.9快照才更新的~
719220502 发表于 2015-9-5 15:31
display及其子项是1.9快照才更新的~
display这个半年前还是1.8版本我看的时候就有了~但是我不太记得当时子项是不是有这么多……
顺便这块是不是区分一下1.8和1.9,1.8版本是没有后面区分左右手的后缀的~
看都看不不懂。。。。
对了 有些不是具体某个方块的父模型可以拿出来列个表讲一下~例如cube、cube_all、cube_column等等~
好高端,看不懂
flash0tt 发表于 2015-9-6 21:55
对了 有些不是具体某个方块的父模型可以拿出来列个表讲一下~例如cube、cube_all、cube_column等等~ ...
这些感觉格式都比较简单,蛮好理解的
找时间写一下,毕竟这几天要上学
感谢支持~
好厉害 高手  大触    膝盖归你了{:10_514:}
额 小白完全不懂
谢谢分享!
719220502 发表于 2015-9-7 19:02
这些感觉格式都比较简单,蛮好理解的
找时间写一下,毕竟这几天要上学
感谢支持~ ...
恩,总体结构较1.8没什么特别大的变化.
状态文件增加了更多可定制参数.....
另外翻译的很棒,浅显易懂
赞一个!!!!!!!!!
试了一下,display=fixed确实包括了方块/物品在物品展示框里面显示所用的模型。但是1.8里面要在1.8.8版本才能正常显示,之前的版本是不行的。
那是不是以后制作材质包方式要改变?
719人生第1精GET√
1814人生第1精ING……
1814人生第1精ING……
格林 发表于 2015-9-13 21:29
那是不是以后制作材质包方式要改变?
不用
lz辛苦了 点个赞 祝你作品越来越棒
完全不懂。。资源包为啥需要程序?
哈鱼 发表于 2015-9-18 12:51
完全不懂。。资源包为啥需要程序?
如果只是改外观的话,不需要用模型文件的= =
