本帖最后由 乙烯_中国 于 2015-8-3 08:38 编辑
大家好,我是乙烯,这几天啊,技巧版因为1.9都high翻了天,我好兴奋啊,我简直不能呼吸了我也不甘心落后啊,于是对构造方块进行的一定的推测,事实证明还是有一部分猜到了,就是这个方块可以很容易布置建筑等结构,就是说相当于mce的粘贴,同时其源头,即原本的文件就储存在版本jar中,通过对其解压缩出的代码进行了分析,我们可以发现这很明显就是一份区域的结构图。
这里3S做了一个对其进行的修改,效果不错。[1.9快照][结构方块][3S]更改默认结构可以这样简单!
个人曾经猜测是否会加入资源包(因为其文件位置原因很容易添加),虽然目前没有定论,但是如果加入并让地图制作者利用的话的话无疑是一大好事(思考一下,以后加载资源包如果还能够修改相应地图生成的建筑,外带地图绑定资源包的特性,这就会是一种类mod的一种资源包)。那么废话不多说,开始分析。
- TAG_Compound: 5 entries
- {
- TAG_String("author"): jeb_
- TAG_List("blocks"): 8736 entries of type TAG_Compound
- {
- .........
- }
- TAG_List("entities"): 0 entries of type TAG_End
- {
- }
- TAG_List("size"): 3 entries of type TAG_Int
- {
- TAG_Int: 13
- TAG_Int: 24
- TAG_Int: 28
- }
- TAG_Int("version"): 1
- }
复制代码
5条:author,blocks,entities,size,version
其中我们可以看到作者是jeb_
size是其文件的大小,
重点我们要讲blocks这个方块存储的单元
这是一个方块的基本存储单元,所有的方块均以次格式存储
- TAG_Compound: 2 entries
- {
- TAG_Int("state"): 0
- TAG_List("pos"): 3 entries of type TAG_Int
- {
- TAG_Int: 0
- TAG_Int: 0
- TAG_Int: 0
- }
- }
复制代码
其中TAG_Int("state"): 0代表了方块ID,这是一个空气方块,当然,其中也有一堆五位数的ID,那么这是怎么回事呢?
例如下文出现的这个ID:“12342”
这个数除以4096之后,得3余54,54,即余数为方块ID即为3,为损害值
TAG_List("pos"): 3 entries of type TAG_Int说明这个有三条nbt
三个TAG_Int: 0说明这个的相对坐标
当然,既然存储了nbt自然也有对应方块其他的nbt,例如下面这段
- TAG_Compound: 3 entries
- {
- TAG_Int("state"): 255
- TAG_Compound("nbt"): 14 entries
- {
- TAG_Int("sizeZ"): 0
- TAG_Int("posY"): 1
- TAG_Int("posX"): 1
- TAG_Int("sizeY"): 0
- TAG_Int("posZ"): 1
- TAG_Int("sizeX"): 0
- TAG_String("mode"): DATA
- TAG_String("mirror"): NONE
- TAG_String("id"): Structure
- TAG_String("author"): jeb_
- TAG_String("rotation"): NONE
- TAG_String("name"):
- TAG_Byte("ignoreEntities"): 0
- TAG_String("metadata"): Chest
- }
复制代码
这是一段非常有趣的代码,作者依旧是jeb,但是其id是很有趣的新方块,构造方块,我们可以看出其ID为255,其他nbt的功能这几天也是研究了不少,想想大家都不陌生,但是这里有个很有趣的事,这个DATA方块元数据那里存储的数据是chest,就是箱子,那么这个是用来放置箱子的么,显然不是,因为代码里有存储箱子的方块数据- TAG_Compound: 3 entries
- {
- TAG_Int("state"): 12342
- TAG_Compound("nbt"): 3 entries
- {
- TAG_String("id"): Chest
- TAG_List("Items"): 0 entries of type TAG_End
- {
- }
- TAG_String("Lock"):
- }
- TAG_List("pos"): 3 entries of type TAG_Int
- {
- TAG_Int: 5
- TAG_Int: 4
- TAG_Int: 6
- }
复制代码
但是这个箱子是一个空箱子,那么就是说,这个DATA方块的功能应该类似于blockdata,给予这个箱子一个随机的内容,而“chest”,个人认为是一个mc自带的随机池。 |