Minecraft(我的世界)中文论坛
标题:
[1.10]structure NBT格式研究
作者:
pca006132
时间:
2016-5-20 20:02
标题:
[1.10]structure NBT格式研究
本帖最后由 pca006132 于 2017-1-22 12:26 编辑
本次研究的structure为minecraft内置的,位置为xxx.jar\assets\minecraft\structures。由于这个格式并不是txt模式,因此需要特殊方法才能检索,建议使用
NBT Explorer
———————————
从这里我们可以看到,structure的文件有六个标签:
-blocks: 这是一个列表格式的标签,里面的子标签为compound格式,存有
每个方块的位置及数值
(下方将会详细介绍)
-entities: 这也是一个列表格式的标签,这里暂时没法进行研究
-palette: 这是一个列表格式的标签,里面的子标签为compound格式,
存有方块id及方块属性
(下方将会详细介绍)
-size: 这是一个列表格式的标签,里面的子标签为整数(int)格式,分别储存该
结构的x、y、z大小
-author: 这是一个字串格式的标签,数值应该是作者的名字?暂时未能发现有任何用途
-version: 这是一个整数(int)格式的标签,未发现有任何用途
———————————
这是entity里面的一个compound(感谢@chyx)
里面有三个标签:
- nbt: 储存着实体的nbt
- blockPos: 储存着实体
所在方块坐标
(xyz, int)
- pos: 储存着实体的
精确位置
(xyz, double)
nbt里面的格式和一般实体的格式一样,里面有uuid、pos等等的nbt,不过uuid及pos就会被游戏无视
*详见
五楼, by chyx
———————————
这是blocks里面的一个compound,可以看见有三个标签:
-nbt: compound, 储存着那个方块的
nbt
-pos: list(子标签为三个int), 储存着那个方块的
x、y、z坐标
(
相对于原点
,也就是储存/加载的时候指定的位置)
-state: int, 储存方块的资料(数据值、方块id),数值为
相应方块在palette里的索引值
(从0开始),下面将会提供一个例子
———————————
这是palette里面的一个compound,可以看见有两个标签:
-Properties: 方块属性,储存着比如朝向等
特殊的方块属性
,估计就是材质的那个属性,也就是数据值的一部分
-Name: 方块id,储存着
方块的种类
———————————
xxx.nbt(为了方便编写,我用了json格式,并且简化了一点,只写出需要看的)
{
"palette": [
{
"Name":"minecraft:air"
},
{
"Name":"minecraft:stone"
},
{
"Name":"minecraft:stained_glass",
"Properties": {
"color":"white"
}
}
],
"blocks": [
{
"pos":[0,0,0],
"state":0
},
{
"pos":[0,1,0],
"state":1
},
{
"pos":[0,2,0],
"state":2
}
]
}
复制代码
state为0的就是palette里第一个方块,也就是空气
state为1的就是palette里第二个方块,也就是石头
state为2的就是palette里第三个方块,也就是白色的玻璃
所以这个结构就是(从上而下): 白色的玻璃、石头、空气
———————————奇奇怪怪的分隔线———————————
这研究还是很稚嫩,因为我完全没办法去实践我的猜测...而且研究的时间也很短(今天刚开始)。所以以后会慢慢增加内容的了希望各位能够明白structure的格式,如果有错漏/不足之处,还请指出,我会尽快修改
如果有不明白的话,也欢迎询问,我会尽力回答你们的问题
[groupid=546]Command Block Logic[/groupid]
作者:
chyx
时间:
2016-5-21 00:43
不是我泼冷水 现任某大区版主和某新闻版版主在1.9快照时期就研究过这个了
作者:
chyx
时间:
2016-5-21 00:43
标题:
https://bugs.mojang.com/browse/MC-102052
本帖最后由 chyx 于 2016-5-21 04:54 编辑
当然确实改了一点 但不是很大 没达到面目全非的程度不过确实是一个不错的教程 点赞
其实我更希望他们把
https://bugs.mojang.com/browse/MC-9553
修了
作者:
840196733mw
时间:
2016-5-21 08:09
说好的死呢 为何又出来了? (手动滑稽)
http://www.mcbbs.net/thread-567250-1-1.html
此贴 一开始就表示了准备神隐
这是打算回归了?
不管是不是 反正pca还在CBL新手群出现就对了
作者:
chyx
时间:
2016-5-21 21:05
本帖最后由 chyx 于 2016-5-21 21:13 编辑
Excel2007.PNG
(24.15 KB, 下载次数: 4)
下载附件
2016-5-21 21:01 上传
这是jar中自带实体的一个例子
可以看见在nbt文件中直接就有entities的list
里面是无名字的compound
每个compound是结构中的一个实体(这幅图是村民和僵尸)
里面再有着blockPos pos 和nbt三个tag看起来blockPos 是实体所在方块的坐标 pos是精确的坐标
nbt内容跟存档格式完全一样
但很明显 至少里面的uuid和Pos是被游戏忽略的(从这里能看出seargedp是在哪里建的雪屋的例子然后用结构方块保存的)
我在1.9的时候试过 游戏里的雪屋里的僵尸和村民的uuid和这个文件里的不同
(可以看到 僵尸的z值的小数部分很长 但村民就在方块正中间 可能是seargedp在保存前僵尸想够村民或者searge不慎碰了一下僵尸)
作者:
回调然后他
时间:
2016-5-22 14:57
恩,不错,不得也不错
作者:
回调然后他
时间:
2016-5-22 15:02
回调然后他 发表于 2016-5-22 14:57
恩,不错,不得也不错
当然我是仰视你们的