乙烯_中国
本帖最后由 乙烯_中国 于 2015-8-3 08:38 编辑

大家好,我是乙烯,这几天啊,技巧版因为1.9都high翻了天,我好兴奋啊,我简直不能呼吸了我也不甘心落后啊,于是对构造方块进行的一定的推测,事实证明还是有一部分猜到了,就是这个方块可以很容易布置建筑等结构,就是说相当于mce的粘贴,同时其源头,即原本的文件就储存在版本jar中,通过对其解压缩出的代码进行了分析,我们可以发现这很明显就是一份区域的结构图。
这里3S做了一个对其进行的修改,效果不错。[1.9快照][结构方块][3S]更改默认结构可以这样简单!
个人曾经猜测是否会加入资源包(因为其文件位置原因很容易添加),虽然目前没有定论,但是如果加入并让地图制作者利用的话的话无疑是一大好事(思考一下,以后加载资源包如果还能够修改相应地图生成的建筑,外带地图绑定资源包的特性,这就会是一种类mod的一种资源包)。那么废话不多说,开始分析。

  1. TAG_Compound: 5 entries
  2. {
  3.    TAG_String("author"): jeb_
  4.    TAG_List("blocks"): 8736 entries of type TAG_Compound
  5.    {
  6. .........

  7.    }
  8.    TAG_List("entities"): 0 entries of type TAG_End
  9.    {
  10.    }
  11.    TAG_List("size"): 3 entries of type TAG_Int
  12.    {
  13.       TAG_Int: 13
  14.       TAG_Int: 24
  15.       TAG_Int: 28
  16.    }
  17.    TAG_Int("version"): 1
  18. }
复制代码
5条:author,blocks,entities,size,version
其中我们可以看到作者是jeb_
size是其文件的大小,
重点我们要讲blocks这个方块存储的单元
这是一个方块的基本存储单元,所有的方块均以次格式存储

  1.       TAG_Compound: 2 entries
  2.       {
  3.          TAG_Int("state"): 0
  4.          TAG_List("pos"): 3 entries of type TAG_Int
  5.          {
  6.             TAG_Int: 0
  7.             TAG_Int: 0
  8.             TAG_Int: 0
  9.          }
  10.       }
复制代码

其中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,例如下面这段

  1.       TAG_Compound: 3 entries
  2.       {
  3.          TAG_Int("state"): 255
  4.          TAG_Compound("nbt"): 14 entries
  5.          {
  6.             TAG_Int("sizeZ"): 0
  7.             TAG_Int("posY"): 1
  8.             TAG_Int("posX"): 1
  9.             TAG_Int("sizeY"): 0
  10.             TAG_Int("posZ"): 1
  11.             TAG_Int("sizeX"): 0
  12.             TAG_String("mode"): DATA
  13.             TAG_String("mirror"): NONE
  14.             TAG_String("id"): Structure
  15.             TAG_String("author"): jeb_
  16.             TAG_String("rotation"): NONE
  17.             TAG_String("name"):
  18.             TAG_Byte("ignoreEntities"): 0
  19.             TAG_String("metadata"): Chest
  20.          }
复制代码

这是一段非常有趣的代码,作者依旧是jeb,但是其id是很有趣的新方块,构造方块,我们可以看出其ID为255,其他nbt的功能这几天也是研究了不少,想想大家都不陌生,但是这里有个很有趣的事,这个DATA方块元数据那里存储的数据是chest,就是箱子,那么这个是用来放置箱子的么,显然不是,因为代码里有存储箱子的方块数据
  1. TAG_Compound: 3 entries
  2.       {
  3.          TAG_Int("state"): 12342
  4.          TAG_Compound("nbt"): 3 entries
  5.          {
  6.             TAG_String("id"): Chest
  7.             TAG_List("Items"): 0 entries of type TAG_End
  8.             {
  9.             }
  10.             TAG_String("Lock"):
  11.          }
  12.          TAG_List("pos"): 3 entries of type TAG_Int
  13.          {
  14.             TAG_Int: 5
  15.             TAG_Int: 4
  16.             TAG_Int: 6
  17.          }
复制代码

但是这个箱子是一个空箱子,那么就是说,这个DATA方块的功能应该类似于blockdata,给予这个箱子一个随机的内容,而“chest”,个人认为是一个mc自带的随机池。

zhaoxingeabc
本帖最后由 zhaoxingeabc 于 2015-8-2 10:25 编辑

顺便帮LZ贴[15w31a][乙烯]有关构造方块Structure block(非彩蛋)
看完上面的链接再来看这个能轻松一点理解
理论上说两者没有太大关系……
除了是同一个作者且难以理解以外真的没什么关系了……
乙烯大大的东西依旧难懂啊

卡林
很高能的样子
反正就看得半懂不懂的

BakaSullivan
叼叼叼
虽说我正版启动器开不起来
SOXSOXSOXSOX

毒蛇
突然意识到,255的话……莫非方块ID用完了?256是物品ID……还是还有几个?

bobby825
毒蛇 发表于 2015-8-2 18:41
突然意识到,255的话……莫非方块ID用完了?256是物品ID……还是还有几个?

嘛~是我误导了乙烯=。=实际上是4096

sylqiuyifeng
毒蛇 发表于 2015-8-2 18:41
突然意识到,255的话……莫非方块ID用完了?256是物品ID……还是还有几个?

这东西用二进制看比较简单
16位数,前4位是损害值
后面12位是id

chyx
一会用电脑后用看一下

qrbqrb4728116
我是看不懂,围观围观

satgo1546
TAG_List("entities"): 0 entries of type TAG_End

一眼看出LZ的NBT结构代码不是手写的。于是无耻地来求工具……

可可可可可乐
毒蛇 发表于 2015-8-2 18:41
突然意识到,255的话……莫非方块ID用完了?256是物品ID……还是还有几个?

你可是随意声明ID=_=几千都可以【好像有限制忘了几千了】

雨霽初明
虽然说看不怎么懂,不得不承认楼主厉害!

chyx
整个人快崩溃了
找了一个晚上 找不到有意思的方块 全是空气
方块那么多
有时候有几个非空气也是紫方块

GrowlR
楼主,你说的吾完全看不懂

xixi9090
坐等1.92333333333

第一页 上一页 下一页 最后一页