Block2Json是一款能将方块文件(包括.schematic和.nbt)转化为Json模型文件(.json)的转化工具。
|
原项目是Schematic2Json。
本项目是其完全重制版,优化了过程、使资源文件外置为json且可自定义、增加了压缩等转化、并且开始支持.nbt文件、最大的更新是将版本升级至了1.13。项目已开源:https://github.com/tremblestarman/Block2Json/wiki
填补方块与Json模型的代沟? Schematic2Json是Block2Json的前身,开发目的是鉴于国内外圈子中对像.schematic一类的方块文件(区块文件、结构文件)处理的软件非常多,相且当成熟,但对于Json模型这个被应用于模组和材质包的模型处理软件或者插件相对来说少的不利情况。
将方块像素和Json模型结合起来,才能弥补以上短板。首先是想借对于方块、像素之间的沟通,以及目前对方块已经十分完备的开发处理,弥补对Json模型开发的缺憾。当然还重要的是简化Json模型的制作过程,这也是Block2Json的最根本的开发目的。 说了这么多,一句话概括就是想蹭方块像素的热度,"解放"建模的双手。 当然有了Block2Json并不是一劳永逸的,毕竟Json模型与方块还是两个概念,Json有很多特性仅靠方块的排列堆砌也无法展现。因此Block2Json也仅仅只是残次的替代品,不是偷天换日,也并不能称得上完全替代建模的双手。 |
更多的信息见上方目录,点击目录文字进行跳转
下载地址
- [R0.1.5] (2019-7-13)
- [R0.1.4] (2018-8-26)
- [R0.1.3] (2018-2-13)
- [R0.1.2] (2018-2-9)
- [R0.1.1] (2018-2-5)
- [R0.1.0] (2018-1-29)
- [R0.1.0-T] (2018-1-28)
更新记录
- Block2Json
R0.1.6
- 继续修复路径bug
- 新增1.14中的功能方块(高炉,石磨,营火等)
- 新增1.14中的新半砖(苔石,红砂石等)
- 新增1.14中的新台阶(苔石,红砂石等)
- 已通过1.14测试
- 修复部分路径bug
- 建筑方块中添加了1.13新方块
- 修复了ColorMap无限递归问题
- 修复了部分材质路径错误
- 修复了数字Data匹配问题
- 修复了因浮点精度导致模型大小超过限制的问题
- 正式更名为"Block2Json",并拥有了图标
- 修复了hollow存在的bug
- 修复了fillflow存在的bug
- 统一了引用格式
- 修复了All.json
- 增加了compress,hollow,fillflow命令
- 增加hollow过程,即镂空实心区域,可用于对模型二次处理,靠hollow命令设定
- 增加fillflow过程,即填充区域,可用于对模型二次处理及压缩,靠fillflow命令设定
- 优化了压缩算法,提高了压缩效率
- 开始支持1.13
- 更名为"Blocks2Json"
- 除了.schematic,开始支持.nbt的转化
- 增加了压缩过程,算法尚未优化
- 第二次重置版
- 重构了模型架构
- 独立并外置四个部分:方块信息(BlockInfos)、方块标签(BlockTags)、模型信息(ModelInfos)、生物群系列表(BiomeList)
- 将外置信息高度可自定义化
- 优化了部分算法,加快了生成速度
- filter_blocks的值可引用方块标签
- 第一次重置版
- 重构了程序架构
- 将方块信息(BlockInfos)外置
- 加入了方块标签(BlockTags)
- 控制台加入了进度条
- Schematic2Json
◎v1.0.5
- 增加filter_blocks、filter_models、biome指令(仅限cmd)
- 修复colormap材质算法,使与生物群系关联的方块有与生物群系关联的材质,包括树叶、荷叶(默认生物群系为虚空void)
- 增加UI操作
- 优化模型类型结构,并支持所有层级方块
- 修复透明材质问题
- 支持栅栏、玻璃板、地毯、雪层、压力板、红石比较器、红石中继器、陷阱门、荷叶、阳光感应器、附魔台、铁砧、活塞头、火、炼药锅、漏斗
- 修复普通玻璃的不透明性
- 修复DV读取不全
- 支持树叶
- 增加version指令
- 支持流体:水和岩浆
- 将材质列表升级为1.12版本
- 优化了部分算法
- 支持所有建筑方块
- 增加了smooth模式
- 将材质列表升级为1.10版本
- 程序框架完成,材质仅支持羊毛和硬化黏土
在【详解】的子目录中,我将以处理流程顺序展开,详细介绍像“命令行”、“资源文件”这些可设定的部分,其中难免涉及到一些原理。
处理流程,可分为以下几个子过程:
- 读取资源 - (教你如何自定义元素模型、添加和修改方块元素信息)
- 读取文件 - (教你如何过滤掉不想保留的方块)
- 生成模型 - (教你如何让生成的Json模型更小更完美)
名词释义
在接下来的详解中,可能会涉及到一些有歧义,有多义,或者新定义的名词。
在这里列举,以免混淆。如果在后面的内容中遇到了这些名词,你可以在此处随时查找释义。
(有关于Json模型的名词遵照【Wiki-模型 - 方块模型】的官方翻译)
- 模型
- Json模型
即Json模型文件,Block2Json最终生成的文件。
是可以被Minecraft读取的模型。 - 方块组
是处理中的一个过程量,储存所有方块元素。
方块组只存在于处理过程中,是三维集合,可以以坐标形式储存方块元素。 - 方块元素模型
非Json模型文件,是指./ModelInfos文件夹中的模型信息文件(ModelInfo.json)被读取所匹配的方块元素的模型集合。
从资源定义的角度可以理解成所匹配的所有模型枚举(An Enum)。
这个模型集合被储存在方块元素中,作为它的模型。
还要注意的是,方块元素模型是一个模型枚举元素的集合,并非元素。
- Json模型
- 元素
- 元素
即Json模型中"elements"列表下的"An Element"。
方块元素的最终表现形式。
根据一个模型枚举元素所生成。 - 方块元素
是处理中的一个过程量,储存于方块组中,储存着方块元素信息和方块元素模型。
方块元素的详细信息来源于所匹配的方块信息,模型也来源于所匹配的方块元素模型。 - 模型枚举元素
是指./ModelInfos文件夹中的模型信息文件(ModelInfo.json)中定义的"An Enum"下"Elements"中的"An
Element"。
是方块元素模型也是模型枚举(An Enum)中一个基本元素。
本质上可以理解为是一个长方体 - 立方体元素
对方块元素忽略其模型(即其方块元素模型),笼统视为立方体(1*1*1)。
- 元素
- 方块
- 方块
是方块文件中的方块,可以理解为Minecraft中一个方块。 - 方块信息
是指./BlocksInfos文件夹中的方块信息文件(BlockInfo.json)被读取所匹配的方块元素的信息。
指定了一个版本下的一个方块的名称、数据、所引用的方块元素模型和材质。 - 方块元素
同上. - 立方体元素
同上.
- 方块
- 方块信息
- 方块
是方块文件中的方块,可以理解为Minecraft中一个方块。 - 方块信息
是指./BlocksInfos文件夹中的方块信息文件(BlockInfo.json)被读取所匹配的方块元素的信息。
指定了一个版本下的一个方块的名称、数据、所引用的方块元素模型和材质。 - 元素模型信息
是指./BlocksInfos文件夹中的模型信息文件(BlockInfo.json)被读取所匹配的元素模型的信息。
定义了一组模型枚举
- 方块
表达式
有许多地方需要用到不同的表达式,包括指令、引用、设参等。
在这里详解所有可能用到的表达式的格式及其解释。
- cmd命令行
cmd命令行就是一开始你需要输入的命令,其格式为:
复制代码- [filePath] [commands]
- fillPath即方块文件的路径,例如"C:\Users\Administrator\Desktop\foo.nbt"。
- command即命令,用空格隔开每条命令,例如"smooth nopause"。
ep:
这是一个标准的命令行格式,先要知道具体作用?参照【命令行】的子目录。复制代码- C:\Users\Administrator\Desktop\foo.nbt smooth pause fillflow=r(0,0,0)air
值得一提的是文件路径中若含有空格,则路径需要用引号围起来才能正确读取,例如'"C:\Users\Administrator\Desktop\f o o.nbt"'。将文件直接拖入控制台内,是获取文件路径最快捷的做法。
- 引用资源文件
引用资源文件,包括引用方块信息文件(BlockInfo.json)、模型信息文件(ModelInfo.json)、方块标签文件(BlockTag.json)。
复制代码- [fileName].json
- fillName是相对于对应文件夹下的路径,例如"A.json"表示就在该文件夹下的A.json,"A/B.json"则是在名为"A"的子文件夹下的"B.json"。
- .json是不可省略的后缀。
- '/'正斜杠是正确的分隔符。(在0.1.2前是反斜杠)
ep:
子文件夹"A"的子文件夹"B"的子文件夹"C"下的"D.json"。复制代码- A/B/C/D.json
- 方块集合
方块集合,用于定义方块滤器(filter_blocks)的过滤对象、和模型信息文件(ModelInfo.json)里条件中定义"A RelativeBlock"。
复制代码- BlockTag.json;Id[Data]; ...
- BlockTag.json即引用方块标签文件(BlockTag.json)。方块集合中将加入此方块标签文件(BlockTag.json)中所表示的所有方块。
- Id[Data]表达一个名为Id方块,数据值为Data的方块。如"1[0]"或"minecraft:oak_trapdoor[facing=north,half=bottom,open=false]"。是一种十分宽松的表达形式。
- Id、Id[]、Id[x]表达的可以是多个名称相同,但数据值不同的的方块,是一种宽泛的表达方式。例如"1"则对应所有石头。
ep:
表示:标签"G.json"下全体方块 + 石头 + 花岗岩 + 底部未打开朝向北面的橡木活板门。复制代码- G.json;1[0];stone[1];minecraft:oak_trapdoor[facing=north,half=bottom,open=false]
进一步解释一下单方块的表达式"Id[Data]":
1. Id和Data不管是数字还是字符都是可以的,只要能对应方块信息文件(BlockInfo.json)中定义的信息即可。
2. Id如果没有命名空间,默认加上"minecraft:"前缀。
- 坐标运算
坐标运算,存在于和模型信息文件(ModelInfo.json)里定义模型枚举元素的"from"和"to"。
复制代码- 任意数学表达式即可
- 数学表达式需要有解。
- 继承Size[Data]是可以继承方块信息文件(BlockInfo.json)中一个方块信息中的"Size"。可用"$sx"、"$sy"、"$sz"分别继承"Size"中的"X","Y","Z"。
ep:
这个表达式我也不知道什么用途,只是展示一下基本的写法。复制代码- ($sx+$sy)/0.5+0.233*$sz
"From"和"To"是字符串列表,详情参见[Block2Json-Wiki-ModelInfos]。
列表中第一个表达式表示"from"或"to"中的X轴坐标,第二个表示Y轴,第三个表示Z轴。
这个坐标不是相对于整个Json模型或者方块组而言的,而是相对于将方块元素视为立方体元素后的元素中心(0.5,0.5,0.5)。
读取资源
每次运行程序后,首先进行的是读取资源。这个过程在输入命令之前。
资源文件存在于外部文件夹中,包括./BlockInfos、./ModelInfos、./BlockTags、./BiomeList。
你可以在程序运行前,对资源文件增加、修改、删除。
资源文件使用的是Json格式,[Block2Json-Wiki]中对其中的Json标签有详解。
资源文件是高度可自定义的,在本项的子目录中,我将详细介绍如何自定义这些资源文件。
ModelInfo - 元素模型信息
首先介绍元素模型信息,是因为它是最基本的信息,而且也是目前结构、内容最复杂的信息文件。
在Block2Json的架构中,联通方块文件与Json模型的桥梁就是每个方块元素的模型,因此方块信息文件(BlockInfo.json)需要对元素模型信息进行引用以定义一个方块元素的模型。
在经过识别、匹配等过程后,通过元素模型信息最终能够生成方块元素模型。
[Block2Json-Wiki-ModelInfos]中详解了标签结构和意义。当然本篇不止于此,还将用例子的形式进一步解释,教你玩转元素模型信息。
详解
这是Half.json,也是自带的最基本的模型。
|
BlockInfo - 方块元素信息
方块元素信息,是对方块的定义集。读取方块文件后借由这些定义生成对应的方块元素。
定义包括方块的基本信息(Id、Data),大小(Size),模型(Model),以及信息所适用的版本。
[Block2Json-Wiki-BlockInfos]介绍了BlockInfo.json的基本结构和意义。
详解
Block2Json所内置的BlockInfo.json的内容都很多,不便于举出,这里直接进入结构的分析。 我们以小见大,先从一个方块信息变种(A BlockInfo)开始分析:
接下来我们来解释一个方块信息变种(A BlockInfo)外部的结构:
在[Block2Json-Wiki-BlockInfos]中有笼统的解释,这里我详细解释一下:
从涵义上讲
|
BlockTag - 方块标签
方块标签,是一组方块的集合,其意义类似于Minecraft1.13中更新的datapacks的tags。
设置方块标签目的是为了简化对方块重复的枚举过程。
方块标签用于很多地方,像滤器、模型信息等。
如果以单个方块做大量的枚举,效率低而且工程量巨大,方块标签是一个很好的简化方式。
[Block2Json-Wiki-BlockTags]介绍了BlockTag.json的基本结构和意义。
详解
增添与移除 Plus & Minus
|
BiomeList - 生物群系列表
生物群系列表中定义的是生物群系。
一个生物群系的特性主要包括降水(Rainfall)和温度(Temperature)
生物群系主要控制的是使用ColorMap材质的uv(例如./BlockInfo/ColorMap.json中的方块),可以通过biome命令设置。
关于生物群系详细解释:[Wiki-生物群系]
关于生物群系列表的结构和标签:[Block2Json-Wiki-BiomeList]
这里就不做详解了,一个例子大家都能看懂:
- {
- "Ocean": {
- "Temperature": 0.5,
- "Rainfall": 0.5
- },
- "Plains": {
- "Temperature": 0.8,
- "Rainfall": 0.4
- },
- "Desert": {
- "Temperature": 2.0,
- "Rainfall": 0.0
- },
- "ExtremeHills": {
- "Temperature": 0.2,
- "Rainfall": 0.3
- }...
- }
如果想修改或添加生物群系,你只能修改这个文件。
读取方块文件
读取资源后,便是输入命令行了。命令行在[Block2Json-Wiki-CommandLine]或者本帖的【命令行】有详解,这里不做多余的解释了。
接下来,就是解析方块文件,将其中的方块提取出来,匹配方块信息,生成方块组。
在这一步骤中,命令行中的滤器会发挥作用。
滤器
滤器用于过滤所指定的方块,有两种滤器:
- filter_classes:过滤的是方块信息文件(BlockInfo.json)。
- filter_blocks:过滤的是方块,使用方块集合表达式。
简单来说,过滤掉的对象都不会出现在最后生成的模型中。
生成模型
在读取方块文件后得到了方块组,依靠方块组最终生成Json模型。
在这一步中,有很多关键的操作,包括材质获取(uv)、二次处理(hollow、fillflow)、压缩以及最终调整大小。
下面将讲解具体的过程。
材质获取
材质获取的主要过程就是对./textures下的材质获取像素uv。
- 定义材质的注意事项
在方块信息中定义材质时首先要保证材质路径的准确,其二就是不要忘了将自定义的材质放入./textures。
在获取材质时,要获取材质中的一个不透明或半透明(Alpha>0)的像素,因此必然要读取该材质。
这是因为如果uv选取了一个全透明的区域,最终生成元素的面是黑色的。
- 关于colormap参数
下面是ColorMaped.json中的例子:
grass(草方块):第一个参数"ColorMap"是必须的,表明参数定义colormap;复制代码- ColorMap 5 false 0.0 0.0
第二个参数是像素随机范围(在256*256大小下的数值),越大则非smooth模式下uv随机范围越大;
第三个参数是是否使用"foliage.png",false则是使用"grass.png";
第四个参数是温度调整,正值让最终选取的温度更高(对应材质越接近热带);
第五个参数是降水调整,正值让最终选取的降水更高(对应材质约接近潮湿)。
接下来我们看看spruce_leaves(云杉树叶):我们可以得知云杉树叶的像素随机范围为5。复制代码- ColorMap 5 true -10.0 -5.0
使用的是"foliage.png",而且因为云杉树叶材质更接近寒带干燥,我们将温度调整减少10,降水调整减少5,这样便能选取出一个接近的材质。
如果你想自定义一个使用colormap的材质,需要你手动进行调整,只能说靠上面的参数设置来获取一个近似的颜色。
二次处理
二次处理是对方块组的进一步处理,目前包括hollow(镂空实心物体)和fillflow(液体填充)。
- hollow
镂空,非常好理解,就是将一个实心物体内部掏空。
例如下面的图片:
这个岩浆球内部被镂空了,成为了空心模型。
hollow只是方便你对Json模型进一步处理,本质上会增加模型的面数,因此会增加模型的大小。
- fillflow
液体填充,可能不太好理解。可以类比于在一个坐标处,打开异次元的大门,不断排出液体,这个过程持续到液体填满为止。最终将液体浸没的区域填充为某个方块。
例如下面图片所示:
这个空心的球被橙色羊毛填满了。
具体命令见[Block2Json-Wiki-CommandLine-fillflow]或本帖的【命令行】。
fillflow还有一个反向模式,最终是将没有液体浸没的区域填充为某个方块。
因此对于上面的球来说复制代码- fillflow=(7,7,7)35[1] 等价于 fillflow(0,0,0)35[1]
二次操作的弊端
二次操作中将方块元素视作立方体元素处理,因此无法顾及方块模型最终大小不是(1*1*1)的方块元素。
就如同上面的hollow中,岩浆对应模型并非完整方块,出现了缝隙;
fillflow中,活板门并非完整方块,但液体填充时并没有溢出到外部。
另外,fillflow过程在hollow之后。
压缩
想让你的模型更小,让模型在游戏中资源消耗越少,必然涉及到这一环节。
目前有三种压缩的方法。
- compress 删去重合面
这是一个基本操作,将元素间重合的不可见面删去。
下面是压缩前后大小对比:
可以使用命令行命令nocompress取消这一过程。
- surface 仅保留可见表面
基于Json模型元素的面,自动寻找接壤面,并自动判断是否可见,最终会删去不可见的面。
寻找表面的算法需要消耗大量时间,但十分精准,适用于所有方块元素。
可以使用命令行命令surface启用这一过程。
前提需要启用compress过程。
- fillflow 仅保留可见表面(快速处理)
将方块元素视为立方体元素,将定义的区域填充为空气,通过compress过程以达到删除定义区域的面的目的。
一个通用的命令:
这条命令适用于填充大部分封闭物体的模型。复制代码- fillflow=r(0,0,0)air
前提需要启用compress过程。
fillflow对比surface的压缩效率非常高,下面是对一个空心物体(67*255*132)的最终大小对比:
调整大小
Json模型最大为32*32*32(单位1表示一个1/16的像素),
也就是最大为2*2*2(单位1表示一个方块)。
这一步是调整Json模型大小至这个范围。
unlimit将控制这个环节,其意义在[Block2Json-Wiki-CommandLine-unlimit]或本帖的【命令行】已经交代了,我不再赘述了。
举个例子,若想将Json模型的大小控制在1格方块内,那么方块文件大小不得超过16*16*16。
日志与忽略错误
命令行命令log(详见[Block2Json-Wiki-CommandLine-log]或本帖的【命令行】),启用日志输出。这个日志不会包括所有处理过程信息,只是包括其中涉及到的错误信息(包括读取方块未识别,材质路径错误等等)。
命令行命令nopause(详见[Block2Json-Wiki-CommandLine-nopause]或本帖的【命令行】),启用跳过所有错误信息。某些错误是会导致程序中断的,nopause将跳过这些中断,并在生成模型后直接关闭程序。
命令行命令
◎ version=
『用于定义模型所适用的版本』
ep:
- version=1.122
将模型版本设置为1.122(即Minecraft Jave Edition 1.12.2)
- 材质、方块的更新,让模型无法兼容不同的版本
- 不同版本的模型往往出现材质缺失的问题,即元素表现为紫黑材质
- 通过定义[BlockInfo]中的VersionFrom和VersionTo,分析[texture]中的材质,解决不同版本的兼容问题
= 版本格式:小数
◎ unlimit
『不限制模型大小』
ep:
- unlimit
启用后,模型大小不会被程序缩至2^3
- 即便启用,模型导入后仍将被游戏自动缩至2^3
- 对于大小在2^3内的模型(即原方块文件的长宽高在32^3内)无效
= 不启用将省去导入时游戏缩放模型的过程,提升模型的导入速度
◎ nocompress
『不对模型进行压缩』
ep:
- nocompress
启用后,跳过压缩过程,模型将保留原始的文件大小
- 压缩的原理是删除元素中的重合面
= 压缩是压缩模型文件大小,并降低导入模型后在游戏内的资源消耗
◎ surface
『仅保留表面』
ep:
- surface
启用后,删除所有不可见面,仅保留表面
- 对模型进一步压缩,尤其是对空心的物体
- 处理时间很长
= 基于模型的面处理,十分精准
◎ hollow
『镂空实心物体内部』
ep:
- hollow
启用后,镂空实心物体内部。
- 将方块元素作为立方体元素处理
= 会在一定程度上增加模型的大小
◎ fillflow
『液体填充』
ep:
- fillflow=(7,7,7)35[1]
在坐标(7,7,7)生成液体流,液体浸没的区域被填充为橙色羊毛
- 将方块元素作为立方体元素处理
- 加上前缀'r'进行反向填充处理
= 一般可以用r(0,0,0)air快速删去不可见面(前提启用compress)
◎ smooth
『使用平滑材质』
ep:
- smooth
启用后,同种方块将使用统一的材质
- 主要控制元素的uv,让材质平滑
- 不启用时,元素的uv是随机的,让材质有噪点
◎ nopause
『不暂停』
ep:
- nopause
忽略所有错误导致的暂停,并自动退出
◎ log
『生成日志文件』
ep:
- log
收集所有错误信息,在程序执行结束后生成一个日志文件
◎ biome=
『用于定义模型所在的生物群系』
ep:
- biome=TheVoid
将模型生物群系设为The Void
- 使用colormap材质的模型,在不同生物群系下颜色不同
- 通过设定[BlockInfo]中Textures的Params,设置相关参数
= 生物群系名称格式:首字母大写&无空格
● filter_classes=
『过滤所选的模型类型』
ep:
- filter_classes=Building.json;Liquid.json
- 将所选的[BlockInfo]从资源列表中过滤掉
- 模型中不会出现所选的[BlockInfo]中所有定义的元素
= 滤器格式:
- BlockInfo.json; ...
(.json不可省略、用;分隔不同的[BlockInfo])
● filter_blocks=
『过滤所选的模型类型』
ep:
- filter_classes=Full-Block.json;1[0];stone[1];minecraft:oak_trapdoor[facing=north,half=bottom,open=false]
- 将所选的[Block]从资源列表中过滤掉
- 模型中不会出现所选的[Block]中所对应的元素
= 滤器格式 (即方块集合表达式):
- BlockTag.json;Id[Data]; ...
(.json不可省略且表示[BlockInfo]、用;分隔不同的[Block]、Id和Data既支持数字也支持字符串)
FAQ-常见问题及解答
- 导入游戏后模型呈紫黑方块
有以下两种可能:
1. 模型信息损坏。检查模型是否被意外修改,然后重新生成。
2. 材质丢失。检查模型的"textures"列表中定义的材质是否在资源包中存在。
- 有部分方块缺失
这是因为所有方块信息中没有对该方块的定义。使用log模式,可在日志中找到该方块没有匹配的错误信息。
你可以手动添加一份方块信息,也可以期待下次更新中能够加入该方块。
- 材质变黑
可能在./texture不存在该材质,导致该材质缺失。
也有可能引用了一个全透明材质,无法找到可见像素。
问答
Q:Block2Json转化的模型能否作为资源包模型?
A:这要视情况而定。你可能会质疑在上面所有展示过的模型大小,都在数M甚至数十M。
其实上面的展示都是演示的模型,长宽高所占的区域逾百万格,包含的方块也超过十万个,可以说精度相当高了。
经过压缩,这些模型也可以有一个可观的大小。例如首页展示的武装直升机,结构大小为227*80*234,最终模型大小为8M。
一般来讲,制作普通的武器、工具或物品的模型,结构大小在16*16*16或者32*32*32已足矣,最终模型大小仅在1~2M或者数百K。
所以对于展示级别的模型,大小的确有些大(30M~50M);但用于资源包中的不要求高精度的模型,是完全能够承载的。
Q:如何将模型压缩到最小?
A:在【压缩】中有过详解,在这里我不免需要再唠叨一句。
对于一般地实心结构,默认压缩即可;
对于存在空心结构,精度高但耗时长的方法是启用surface,精度低但耗时短的方法是使用fillflow=r(0,0,0)air。
Q:如何反馈问题
A:在本帖回复即可。
最起码的要求是提供原方块文件(.schematic或.nbt),因为它大小仅为数k到数百k,方便上传。
最好配上截图,和问题的描述,有条件的话提供一下问题模型,能够方便我调试。
相关链接
方块处理软件插件,有很多,例如:
Mcedit-Unified(Mcedit2的.schematic格式目前不支持)
WorldEdit模组
WorldPainter
[Wiki-辅助程序与编辑器-地图工具]
当然还有很多,上面列举的只是典型。
接下来是模型处理软件,能够对Json模型处理:
CubikStudio(只能用于查看Block2Json的模型)
[Wiki-辅助程序与编辑器-3D建模工具]
展示所用的方块文件下载:
方块文件资源链接(其中大部分来源于www.minecraft-schematics.com)
相关Wiki链接:
https://minecraft-zh.gamepedia.com/模型
https://minecraft-zh.gamepedia.com/生物群系[groupid=546]Command Block Logic[/groupid]