<本站文本内容除另有声明外,转载时均必须注明出处。(详情…中文Minecraft Wiki是完全公开的。请勇于扩充与修正内容!Minecraft中文Wiki微博正在更新!或许有兴趣去看看想与其他用户进行编辑上的沟通?社区专页正是为此创建的。翻译或创建页面之前,不妨看看译名标准化Wiki条例页面。需要管理员的协助?在管理员告示板留言也许可以帮到您。>

区块格式

来自Minecraft Wiki
(重定向自方块实体值格式
跳转至: 导航搜索

区块(Chunks)以16*256*16立方块为单位存储地形和实体信息。区块也会同时储存预先计算好的光照、等高线数据及其他元数据信息,以加快游戏处理。

NBT结构[编辑 | 编辑源代码]

参见:Anvil 文件格式页面

区块是储存在Anvil文件中的各种标签,这些Anvil文件以r.x.z.mca的形式命名。区块使用NBT格式储存,遵循以下结构组成(详见下面方块格式了解每组阵列中的方块排序)

  • 根标签。
    •  DataVersion:该区块NBT结构的版本。
    •  Level:区块数据。
      •  xPos:该区块的X坐标。
      •  zPos:该区块的Z坐标。
      •  LastUpdate:自该区块上次保存以来经过的刻。
      •  InhabitedTime:玩家已在该区块的总刻数。注意该值在多个玩家处于同一区块时会增长得更快。用于区域难度:增加带有一些装备的生物的生成几率,生物自带的盔甲附有附魔效果的几率,生成带有药水效果蜘蛛的几率,生成拥有捡起物品能力的生物的几率以及决定僵尸被攻击时生成其他僵尸的几率。该值大于等于3600000时,区域难度会最大程度影响该区块。在0及以下时,难度等级被限制到最低(虽然该值设置为负数时会被设置为0,但是把该值回归到正数还是要花时间的)。详见区域难度获取更多信息。
      •  Biomes:可能不存在。包含了1024个元素的生物群系信息。该数组中的每一个数字表示一片4×4×4的区域的生物群系。这些数字以Z轴、X轴、Y轴的顺序排列。即,该数组中的前4×4个元素表示的是Y坐标为0-3之间的大小为16×16的区块的生物群系,接下来的4×4个元素表示的是Y坐标为4-7之间的生物群系,以此类推。生物群系ID可在Java版数据值页面查看。如果这个数组不存在,游戏在加载和保存区块时会自动根据世界的种子添加并赋值;若数组内有不对应任何生物群系的数字,游戏也会根据正确信息改正。
      •  HeightMaps:几个不同的高度图。每个高度图都储存了被储存为9位(即取值范围为[0,256])的256个数值,来表示相应的高度。
        •  MOTION_BLOCKING:最高的能阻挡移动或含有液体的方块。
        •  MOTION_BLOCKING_NO_LEAVES:最高的阻挡移动、含有液体或在minecraft:leaves标签里的方块。
        •  OCEAN_FLOOR:最高的非空气固体方块。
        •  OCEAN_FLOOR_WG:最高的既不是空气也不包含液体的方块。此值用于世界生成。
        •  WORLD_SURFACE:最高的非空气方块。
        •  WORLD_SURFACE_WG:最高的非空气方块。此值用于世界生成。
      •  CarvingMasks
        •  AIR
        •  LIQUID
      •  Sections:一组复合标签,每个标签都包含一组子区块的描述。
        • 一个独立的子区块。
          •  Y:这个子区块的Y索引(不是坐标)。范围为0到15(从低到高),不会重复,但对应子区块为空时可能会没有。
          •  Palette:几组在区块中用到的方块状态。
            • :一个方块状态。
              •  Name方块的命名空间ID
              •  Properties:方块状态属性列表,名称代表的是方块状态属性的名称。
                •  名称:方块状态的名称及其对应的值。
          •  BlockLight:2048字节记录了每个方块发出的亮度。使加载时间相较于重新计算变得更快。每方块占用4字节。
          •  BlockStates:一个64位长的变量,能够存储4096个索引的数组。索引的顺序对应Sections中Palette元素的顺序。在Section中的所有索引大小相同,其大小需要表示最大的索引(最小为4位)。若此索引不能被64整除,其位数会继续增加。
          •  SkyLight:2048字节记录了阳光和月光打在每个方块上的亮度。每方块占用4字节。
      •  Entities:该列表的每个复合标签都定义了该区块里的实体。详见下面的实体格式。如果该列表为空,则该标签则为一个字节列表标签。
      •  TileEntities:在该列表的每个复合标签都定义了该区块里的实体。详见下面的实体格式。如果该列表为空,该列表将会是个结束标签的列表(1.10版本以前为字节标签)。
      •  TileTicks:可能不存在。每个在该列表的复合标签都是该区块中的一个等待更新的“活跃”方块。它们用于保存红石机械的状态、掉落的沙子或水以及其他活动。详见下面的附加刻格式。这个标签可能不存在。
      •  LiquidTicks:每个在该列表的复合标签都是该区块中的一个等待更新的“活跃”流体。
      •  Lights:一个拥有16个列表标签的列表标签。在世界生成时以短整型格式储存了该区块中所有的光源的位置。
      •  LiquidsToBeTicked:一个拥有16个列表标签的列表标签。以短整型格式储存了该区块中所有的等待更新的“活跃”流体的位置。
      •  ToBeTicked:一个拥有16个列表标签的列表标签。以短整型格式储存了该区块中所有的等待更新的“活跃”方块的位置。
      •  PostProcessing:一个拥有16个列表标签的列表标签。以短整型格式储存了该区块中所有的需要在该区块从原型区块转换为完整区块时更新的方块的位置。
      •  Status:定义了该区块当前在世界生成中的状态。是这些值的其中之一:emptybasecarvedliquid_carveddecoratedlightedmobs_spawnedfinalizedfullchunkpostprocessed
      •  Structures:该区块中的结构数据。
        •  References:包含Starts的区块的坐标。
          •  结构名称:该数组中的每一个长整型数字代表了一个区块坐标(即方块坐标/16),其中X坐标储存在低32位,Z坐标储存在高32位。
        •  Starts:按类型储存的还没有被生成的结构。这些结构的某一部分可能已经被生成了。完全生成好的结构会被移除,即将id设置为INVALID,并移除其他所有标签。
          •  结构名称:只存储能在当前维度生成的结构,如末地城只会保存在末地区块里。
            •  ChunkX:结构的起始X坐标。如果idINVALID则无此字段。
            •  ChunkZ:结构的起始Z坐标。如果idINVALID则无此字段。
            •  id:如果在此区块里没有此类型的结构,此值为INVALID,否则为结构的名称。
            •  biome:结构所在的生物群系ID。如果idINVALID则无此字段。
            •  BB:整个结构的边界。该值有6个整数:最小X、Y、Z坐标以及最大X、Y、Z坐标。如果idINVALID则无此字段。
            •  Valid:1或0(true/false)-(仅限村庄)村庄是否至少生成了3条不是路的结构。如果idINVALID则无此字段。
            •  Processed:(仅限遗迹)已创建部分结构的区块列表。如果idINVALID则无此字段。
              • :一个区块。
                •  X:该区块的X坐标(区块坐标,不是方块坐标)。
                •  Z:该区块的Z坐标。
            •  Children:组成此结构的、还未被生成的结构片段。如果idINVALID则无此字段。
              • :结构片段数据。
                •  id:结构片段ID。通常是有大量缩写的字符串,并不易懂。
                •  Rot:海底废墟与沉船的方向。有效值为:COUNTERCLOCKWISE_90、NONE、CLOCKWISE_90和CLOCKWISE_180。
                •  BiomeType:此遗迹所处的海洋的温度。有效值是WARM和COLD。
                •  Template:海底废墟或沉船用到的模板。
                •  integrity:该结构的完整度(仅用于海底废墟)。
                •  TPX:该海底废墟或沉船的X坐标起始点。
                •  TPY:该海底废墟或沉船的Y坐标起始点。
                •  TPZ:该海底废墟或沉船的Z坐标起始点。
                •  PosX:该村庄片段的X坐标起始点。
                •  PosY:该村庄片段的Y坐标起始点。
                •  PosZ:该村庄片段的Z坐标起始点。
                •  isLarge:1或0(true/false)—— 此海底废墟是否是大型。
                •  GD:似乎是一种测量该结构片段与起始点距离的方式。
                •  O:可能是该结构片段的朝向。
                •  BB:结构片段的边界。(不包括悬在道路上方的村庄屋顶)值为6个整数:最小X、Y、Z坐标以及最大X、Y、Z坐标。
                •  Width:(神殿和小屋)结构的宽度(X/Z)。
                •  Height:(神殿和小屋)结构的高度(Y)。
                •  Depth:(神殿和小屋)结构的深度(X/Z)。
                •  HPos:(神殿和小屋)为将结构放置在地面上而移动到的Y高度。若该结构未被移动则为-1。
                •  placedTrap1:1或0(true/false)-(丛林神庙)是否放置了走廊发射器发射箭的陷阱。
                •  placedTrap2:1或0(true/false)-(丛林神庙)是否放置了箱子发射器发射箭的陷阱。
                •  placedMainChest:1或0(true/false)-(丛林神庙)是否放置了主箱子。
                •  placedHiddenChest:1或0(true/false)-(丛林神庙)是否放置了隐藏箱子。
                •  hasPlacedChest0:1或0(true/false)-(沙漠神殿)是否放置了箱子。
                •  hasPlacedChest1:1或0(true/false)-(沙漠神殿)是否放置了箱子。
                •  hasPlacedChest2:1或0(true/false)-(沙漠神殿)是否放置了箱子。
                •  hasPlacedChest3:1或0(true/false)-(沙漠神殿)是否放置了箱子。
                •  Witch:1或0(true/false)-(沼泽小屋)是否已经在这小屋里生成女巫。
                •  sc:1或0(true/false)-(废弃矿井“MSCorridor”)走廊是否有蜘蛛网。
                •  hr:1或0(true/false)-(废弃矿井“MSCorridor”)走廊是否有铁轨。
                •  hps:1或0(true/false)-(废弃矿井“MSCorridor”)走廊是否有一个洞穴蜘蛛刷怪笼。
                •  Num:(废弃矿井“MSCorridor”)走廊长度。
                •  tf:1或0(true/false)-(“MSCrossing”)路口是否为两层高。
                •  D: (废弃矿井“MSCrossing”)指示路口“即将到来”的方向。
                •  Entrances:(废弃矿井“MSRoom”)房间出口列表。
                  • :出口的边界。
                •  Chest:1或0(true/false)-(下界要塞“NeSCLT”和“NeSCRT”)该要塞子结构是否应该有一个箱子但其尚未生成。(要塞“SHCC”)该要塞子结构是否放置了箱子。(村庄“ViS”)在铁匠铺里是否已经生成了箱子。
                •  Mob:1或0(true/false)-(下界要塞"NeMT")该要塞子结构是否应该有一个烈焰人刷怪笼但其尚未生成。(要塞“SHPR”)蠹虫刷怪笼是否生成在该子结构里。
                •  Seed:(下界要塞“NeBEF”)断桥结构的随机数种子。
                •  EntryDoor:(要塞)进入该子结构的门的类型。
                •  Steps:(要塞“SHFC”)走廊长度。
                •  leftLow:1或0(true/false)-(要塞“SH5C”)在五通道路口中是否在下面向上的楼梯中有一个出口。
                •  rightLow:1或0(true/false)-(要塞“SH5C”)在五通道路口中是否在上面向上的楼梯中有一个出口。
                •  leftHigh:1或0(true/false)-(要塞“SH5C”)在五通道路口中是否在下面向下的楼梯中有一个出口。
                •  rightHigh:1或0(true/false)-(要塞“SH5C”)在五通道路口中是否在上面向下的楼梯中有一个出口。
                •  Tall:1或0(true/false)-(要塞“SHLi”)图书馆是否有通往上方的楼梯。
                •  Type:(要塞“SHRC”)指示房间里是否有一根插上了火把的柱子、一个喷泉、有一个箱子的向上的楼梯或只是一个空房间。
                •  Source:1或0(true/false)-(要塞“SHSD”) 螺旋楼梯是否是要塞原本的或是随机生成的。
                •  Left:1或0(true/false)-(要塞“SHS”)是否在走廊左侧有一个开口。
                •  Right:1或0(true/false)-(要塞“SHS”)是否在走廊右侧有一个开口。
                •  Type:(村庄)村庄类型:0=平原、1=沙漠、2=热带草原、3=针叶林。
                •  Zombie:1或0(true/false)-(村庄)是否把该村庄生成为僵尸村庄。
                •  VCount:(村庄)在这个村庄生成的村民数量。
                •  HPos:(村庄)为把村庄放在地面上而移动至的Y坐标。若其未被移动则此值为-1。
                •  CA:(村庄“ViF”和“ViDF”)在耕地格子里的作物。
                  •  Name命名空间方块ID
                  •  Properties:方块状态属性列表,名称是方块状态属性的名称。
                    •  名称:方块状态名称对应的值。
                •  CB:(村庄“ViF”和“ViDF”)在耕地格子里的作物。
                  •  Name方块的命名空间ID
                  •  Properties:方块状态属性列表,名称是方块状态属性的名称。
                    •  名称:方块状态名称对应的值。
                •  CC:(村庄“ViDF”)在耕地格子里的作物。
                  •  Name方块的命名空间ID
                  •  Properties:方块状态属性列表,名称是方块状态属性的名称。
                    •  名称:方块状态名称对应的值。
                •  CD:(村庄“ViDF”)在耕地格子里的作物。
                  •  Name方块的命名空间ID
                  •  Properties:方块状态属性列表,名称是方块状态属性的名称。
                    •  名称:方块状态名称对应的值。
                •  Terrace:1或0(true/false)-(村庄“ViSH”)屋子是否有通向屋顶和栅栏的梯子。
                •  T:(村庄“ViSmH”)桌子:0为无桌子,1和2会把桌子放在屋子的两边。
                •  C:(村庄“ViSmH”)屋顶类型。
                •  Length:(村庄“ViSR”)道路长度。
                •  junctions:(村庄) 连接点列表。‌[需要更多信息]
                    •  source_x:方块坐标。
                    •  source_ground_y:方块坐标。
                    •  source_z:方块坐标。
                    •  delta_y
                    •  dest_proj:值为terrain_matchingrigid

方块格式[编辑 | 编辑源代码]

在Anvil文件格式中, 方块的位置被按照YZX来排序以此达到压缩的目的。

坐标系如下:

  • X 向东增加,向西减少;
  • Y 向上增加,向下减少;
  • Z 向南增加,向北减少。

这也发生在产生最自然的扫描方向上,因为所有在最少有效维度里(例如在这种情况下是X轴)的索引都出现为每个在下一个最有效维度里的索引。因此读取一个排序为YZX的数组像读一本头朝北放置的书,所有的字母(或X索引)同一时间都在一条线上(或Z索引),并且所有的线同一时间都在一页纸(或Y索引)上。对于二维数组(如“HeightMap”),不适用的Y维度被简单地忽略了,好像书本只有一页厚那样。

在区块里的每个子区块是一个16x16x16格的区域,一个区块至多有16个子区块。子区块0是区块最底下的子区块,子区块15是区块最高的子区块。为了节省空间,完全为空的子区块不会被保存。在每个子区块里由一个“Y”字节标签用于索引子区块,0到15和用于方块的字节数组组成。“Blocks”字节数组拥有4096个局部方块ID,每个方块占用8个字节。另一个字节数组“Add”是用来存储方块ID高于255的方块,长度为2048字节,用来储存4096个方块ID的其他部分,每个方块占用4个字节。当“Blocks”和“Add”字节数组同时存在时,在“Add”数组的局部ID被左移位8个字节并添加到“Blocks”数组的局部ID中以组成真实的方块ID。“Data”字节数组长度也是2048字节,但可储存4096个方块数据值,每个方块占用4个字节。“BlockLight”和“SkyLight”字节数组与“Data”字节数组相同,但这两个字节数组是用来分别储存方块亮度等级和天空亮度等级的。“SkyLight”的值代表了日光或月光有多少能到达方块,这取决于当前天空的亮度等级。

长度为2048字节数组的字节顺序(如“Add”、“Data”、“BlockLight”和“SkyLight”)为每个方块仅给予4个字节,它似乎是一个异常的例外,否则它们一致为大数据存储格式的标准格式。它也运行计数器以转化为大概自然的可读印刷方向。如果方块在0开始,它们在奇数之前被偶数分组(如0和1共享一个字节、2和3共享下一个字节如此类推)。根据这些指示,Minecraft在至少有效的半字节里储存偶数方块,在最高有效字节里储存奇数方块。因此,block[0]是在0x0F的byte[0],block[1]是在0xF0的byte[0],block[2]是在0x0F的byte[1],block[3]是在0xF0的byte[1],如此类推。

下面的伪代码显示了如何从一个子区块中获取单个方块的信息。鼠标移到文本上面以查看附加信息或注释。

byte Nibble4(byte[] arr, int index){ return index%2 == 0 ? arr[index/2]&0x0F : (arr[index/2]>>4)&0x0F; }
int BlockPos = y*16*16 + z*16 + x;
byte BlockID_a = Blocks[BlockPos];
byte BlockID_b = Nibble4(Add, BlockPos);
short BlockID = BlockID_a + (BlockID_b << 8);
byte BlockData = Nibble4(Data, BlockPos);
byte Blocklight = Nibble4(BlockLight, BlockPos);
byte Skylight = Nibble4(SkyLight, BlockPos);

实体格式[编辑 | 编辑源代码]

每个实体是一个包含在区块文件实体列表中的一个没有键名的 TAG_Compound复合标签。唯一例外的是玩家实体,它的数据储存在level.dat,或者在服务器文件的<player>.dat当中。

  • 实体数据
    •  id:实体ID。玩家虽然也是实体,但其没有此标签。
    •  Pos:记录当前实体X、Y、Z坐标的3个TAG_Doubles
    •  Motion:记录当前实体dX、dY、dZ速度向量的3个TAG_Doubles,单位是米/每
    •  Rotation:记录旋转角度的两个TAG_Floats
      • :当前实体以Y轴为中心顺时针的角度(即偏转角)。正南方为0。不会超过360度。
      • :当前实体与水平面之间的倾斜角(即俯仰角)。水平面为0。正值表示面朝下方。不超过正负90度。
    •  FallDistance:当前实体已经坠落的距离。值越大,实体落地时对其造成伤害更多。
    •  Fire:距离火熄灭剩余的时间刻数。负值表示当前实体能够在火中站立而不着火的时间。未着火时默认为-20。
    •  Air:当前实体所剩的空气值。在空气中充满至300,折算为生物淹没在水中15秒后生物才开始窒息,如该实体生命值为20点,那么实体在35秒后才会死亡。如果此项为0时实体在水中,那么其每秒会受到1点伤害。
    •  OnGround:1或0(true/false),实体接触地面时为true
    •  NoGravity:1或0(true/false),如果为true,实体在空中不会坠落,在盔甲架上的效果却是使 Motion标签将失去效果(标签数据依旧存在,且持续被系统运算)。
    •  Invulnerable:1或0(true/false),如果为true,那么当前实体不会受到任何伤害。此项对于生物与非生物实体的作用是类似的:生物不会受到任何来源(包括药水)的伤害,无法被钓鱼竿、攻击、爆炸或者抛射物推动;除支持物被移除外,诸如载具的物件都不会被摧毁。注意,这些实体仍然会被处于创造模式的玩家伤害到。
    •  PortalCooldown:距离当前实体可以再次穿过下界传送门向回传送的时间刻数。在初次传送后,起始值为300刻(15秒)并逐渐倒计时至0。
    •  UUID:实体的UUID,用4个32位整数表示,按从高位到低位的顺序存储。
    •  CustomName:当前实体的自定义名称JSON文本组件。会出现在玩家的死亡信息与村民的交易界面,以及玩家的光标指向的实体的上方。可能不存在,或者存在但为空值。
    •  CustomNameVisible:1或0(true/false),如果为true,而且实体拥有自定义名称,那么名称会总是显示在它们上方,而不受光标指向的影响。若实体并没有自定义名称,显示的则是默认的名称。可能不存在。
    •  Silent:1或0(true/false),如果为true,那么当前实体不会发出任何声音。可能不存在。
    •  Passengers:正在骑乘当前实体的实体的数据。注意,两个实体都能控制移动,被刷怪笼召唤时生成条件由最上方的实体决定。
      • 子项,请见本格式(递归)。
    •  Glowing:1或0(true/false),如果为true,那么实体会有发光的轮廓线。
    •  Tags:自定义的记分板标签数据。

生物[编辑 | 编辑源代码]

生物实体
实体ID 名称
bat 蝙蝠
blaze 烈焰人
cat
cave_spider 洞穴蜘蛛
chicken
cod 鳕鱼
cow
creeper 苦力怕
dolphin 海豚
donkey
drowned 溺尸
elder_guardian 远古守卫者
ender_dragon 末影龙
enderman 末影人
endermite 末影螨
evoker 唤魔者
fox 狐狸
ghast 恶魂
giant 巨人
guardian 守卫者
horse
husk 尸壳
illusioner 幻术师
iron_golem 铁傀儡
llama 羊驼
magma_cube 岩浆怪
mooshroom 哞菇
mule
ocelot 豹猫
panda 熊猫
parrot 鹦鹉
phantom 幻翼
pig
pillager 掠夺者
polar_bear 北极熊
pufferfish 河豚
rabbit 兔子
ravager 劫掠兽
salmon 鲑鱼
sheep
shulker 潜影贝
silverfish 蠹虫
skeleton 骷髅
skeleton_horse 骷髅马
slime 史莱姆
snow_golem 雪傀儡
spider 蜘蛛
squid 鱿鱼
stray 流浪者
trader_llama 行商羊驼
tropical_fish 热带鱼
turtle 海龟
vex 恼鬼
villager 村民
villager_v2 村民‌‌[仅基岩版]
vindicator 卫道士
wandering_trader 流浪商人
witch 女巫
wither 凋灵
wither_skeleton 凋灵骷髅
wolf
zombie 僵尸
zombie_horse 僵尸马
zombie_pigman 僵尸猪人
zombie_villager 僵尸村民
zombie_villager_v2 僵尸村民‌‌[仅基岩版]

每个生物都有额外的标签来储存它们的血量、状态、效果。玩家是生物的一个子类。

弹射物[编辑 | 编辑源代码]

弹射物实体
实体ID 名称
arrow 射出的箭
dragon_fireball 末影龙火球
ender_pearl 丢出的末影珍珠
egg 丢出的蛋
fireball 恶魂火球
llama_spit 羊驼的口水
potion 丢出的喷溅药水
small_fireball 烈焰人火球/火焰弹
shulker_bullet 潜影贝导弹
snowball 丢出的雪球
spectral_arrow 光灵箭
trident 三叉戟
wither_skull 凋灵之首
xp_bottle 丢出的附魔之瓶

弹射物是实体的一个子类,并有很不清楚的数据标签,例如尽管存在Pos标签但仍加入X、Y、Z方位标签,尽管存在inGround但仍加入inTile,以及尽管多数弹射物不是箭但仍加入shake标签。尽管所有的弹射物都共有着一部分标签,这些标签仍然是由ThrowableArrowBase这两个类独立实现的。

物品和经验球[编辑 | 编辑源代码]

物品实体
实体名 名称
item 掉落的物品
xp_orb 经验球

物品和经验球是实体的子类。

交通工具[编辑 | 编辑源代码]

交通工具实体
实体 ID 实体名称
Boat
minecart 矿车
chest_minecart 运输矿车
command_block_minecart 命令方块矿车
furnace_minecart 动力矿车
hopper_minecart 漏斗矿车
spawner_minecart 刷怪笼矿车
tnt_minecart TNT矿车

交通工具是实体的一个子类。

动态方块[编辑 | 编辑源代码]

Dynamic Tile Entities
实体ID 实体名称
tnt 点燃的TNT
falling_block 掉落中的方块

动态方块是实体的一个子类,用来表示原本为方块,但因其他原因而成为实体的实体。在本质上,其为一个实体。

其他[编辑 | 编辑源代码]

其他实体
实体ID 名称
area_effect_cloud 区域效果云
armor_stand 盔甲架
end_crystal 末影水晶
evocation_fangs 尖牙
eye_of_ender 末影之眼
firework_rocket 烟花火箭
fishing_bobber 钓鱼竿浮标
item_frame 物品展示框
leash_knot 拴绳
painting
shulker_bullet 潜影贝导弹

其他实体类型是实体的一个子类,无法分入任何上述分类。

方块实体格式[编辑 | 编辑源代码]

方块实体
方块实体ID 对应方块
banner 旗帜
barrel 木桶
beacon 信标
bed
beehive 蜂巢/蜂箱
bell
blast_furnace 高炉
brewing_stand 酿造台
campfire 营火
cauldron 炼药锅‌‌[仅BE]
chest 箱子
陷阱箱
comparator 红石比较器
command_block 命令方块
conduit 潮涌核心
daylight_detector 阳光探测器
dispenser 发射器
dropper 投掷器
enchanting_table 附魔台
ender_chest 末影箱
end_gateway 末地折跃门方块
end_portal 末地传送门方块
furnace 熔炉
hopper 漏斗
jigsaw 拼图方块
jukebox 唱片机
lectern 讲台
mob_spawner 刷怪笼
piston 移动中的活塞
shulker_box 潜影盒
sign 告示牌
skull 头颅
smoker 烟熏炉
structure_block 结构方块

方块实体(与实体无关),被游戏用来存储不能储存在方块状态中的信息。1.8之前的版本称为tile entity,如今游戏中的部分命令还存在这种叫法。

附加刻格式[编辑 | 编辑源代码]

附加刻代表方块更新,它的作用是用于解释在区块保存前的事情。事实上它是用于在重新加载世界时再次更新它们(包括红石机械的更新,水、熔岩的流动,沙砾检查坠落等等)。但是附加刻不会用于像检查树叶腐烂,农作物生长等需要随机刻来更新的方块,因为它们的更新不需要随着区块的载入而更新。对于地图制作者来说,附加刻可以用于在加载区块的同时更新方块。

  • 一个附加刻
    •  i:方块的ID;用于激活正确的方块更新步骤。
    •  t:距离处理过程将要发生的刻数。处理过程已经发生后可能是负值。
    •  p:如果多个方块刻被安排入同一刻中,那么p值较小的方块刻会被优先处理。若还有p值相同的方块刻,处理顺序未知。
    •  x:X坐标。
    •  y:Y坐标。
    •  z:Z坐标。

历史[编辑 | 编辑源代码]

区块在Infdev中首次引入。在Beta 1.3中加入区域文件格式之前,区块都是独立存储在以Base36编码的区块位置为文件名的.dat文件里,这种格式是Alpha文件格式。区域文件格式更改了这种储存方式,它把一组32×32区块存储在以Base10编码的坐标命名的.mcr文件里,以减少Minecraft一次处理文件的数量的方式来减少硬盘占用。区域文件格式的继承者便是现在的格式——Anvil文件格式,它只修改区块格式。区域文件技术仍然在使用,但其文件扩展名被改成了.mca。

区域文件格式到Anvil格式的主要修改是把区块拆成区域。每个区块至多有16个16×16×16方块组成的区域以便使完全空的区域不会被保存。后者也已做好了支持0-4095的方块ID的准备,而前者支持的ID为0-255。然而,Minecraft没有为以物品形式存在的方块做好完全的准备,在256-4095中的许多ID都已被物品占用。

Block、Data、BlockLight和Skylight数组现在存储在每个区块区域里。Data、BlockLight和Skylight是4字节的数组,方块亮度和天空亮度不再存储部分方块ID。Block数组每个方块8字节,4096格的支持以存储附加方块ID信息的每方块4字节的附加字节数组的形式存在。在Anvil格式中,NBT格式从Notch原本的设计变成了类似于包含字节数组标签那样包含一个整数数组标签。其目前只在区块的HeightMap中使用。

Java版
?MobSpawner中移除了MaxExperienceRemainingExperienceExperienceRegenTickExperienceRegenRateExperienceRegenAmount
1.4.212w34a加入实体WitherBoss
1.513w02a加入实体MinecartTNT
Minecart被弃用。
13w03a加入实体MinecartHopper
13w06a加入实体MinecartSpawner
1.6.113w16a加入实体EntityHorse
13w21aEntityHorse中移除了ArmorType
EntityHorse中移除了Saddle
1.6.1-preEntityHorse重新加入了Saddle
1.7.213w39a加入实体MinecartCommandBlock
1.814w02a为箱子加入了Lock
现在指定了NBT数据时不再使用物品ID。
FallingSand加入了Block,其使用了字母ID格式。
14w06a为所有实体加入了ShowParticles
为所有物品实体加入了PickupDelay
Age设置为-32768会使物品永不过期。
为所有生物移除了AttackTime
14w10aVillager加入了rewardExp
为所有可以饲养的生物加入了OwnerUUID
Skull加入了Owner
对物品展示框和画进行了更改:加入了FacingTileXTileYTileZ现在表示物品里面的方块的坐标而不是其放置的物品,同时弃用了DirectionDir
14w11a加入实体Endermite
Enderman加入了EndermiteCount
14w21a现在所有实体都有了CustomNameCustomNameVisible
14w25a加入实体Guardian
为告示牌加入了Text1Text2Text3Text4。告示牌现在不再有字符数量限制(16个),现在其限制取决于字符的宽度。
14w27a加入实体Rabbit。 为命令方块告示牌加入了CommandStats
14w28aEnderman移除了EndermiteCount
14w30a为所有实体加入了Silent
14w32a为所有生物加入了NoAI
加入实体ArmorStand
14w32cArmorStand加入了NoBasePlate
1.915w31aLiving加入了标签HandItemsArmorItemsHandDropChancesArmorDropChances。它们取代了DropChancesEquipment标签。
ArmorStand加入了HandItemsArmorItems
Entity加入了Glowing
LivingBase加入了Team
EnderDragon加入了DragonPhase
加入实体Shulker,是SnowMan的子标签。
加入实体ShulkerBullet,是Entity的子标签。
加入实体DragonFireball,其扩展了FireballBase,但没有独有标签。
加入实体TippedArrowSpectralArrow,是Arrow的子标签。
加入方块EndGatewayTileEntity
加入方块Structure,是TileEntity的子标签。
加入物品标签Potion,是tag的子标签。
15w32aTagsDataVersion标签现在可应用于实体上。
Fuse中PrimedTnt实体的标签类型从“Byte”改为“Short”。
15w32c引入了实体拥有标签的数量限制(1024个标签)。在试图超越此限制时会显示错误:“不能向实体加入超过1024个标签”。
15w33a加入实体AreaEffectCloud,其是Entity的子标签。
EndGateway加入ExactTeleport并且重命名LifeAge
ThrownPotion加入了Linger
Entity移除了DataVersion。该标签现在只适用于Player以及LivingBase的子标签。
Entity移除了UUID
LivingBase中的HealF现已弃用。
LivingBase中的LivingBase类型从“Short”变为“Float”。
ArmorStandLiving实体中移除了,该标签的功能被早些时候加入的HandItemsArmorItems替代。
15w33cEnderCrystal加入了BeamTarget
15w34a命令方块Control方块实体加入了poweredconditional字节标签。
FireballBase加入了lifepower
MobSpawner中的SpawnData加入了id
音符盒加入poweredMusic方块实体。
15w35aZombie加入了VillagerProfession
15w37aMinecartHopper加入了Enabled
15w38aEntityHorse加入了SkeletonTrapSkeletonTrapTime
15w41a所有实体中的RidingPassengers替代。
向所有骑乘者加入了RootVehicle
Boat加入了Type
15w42aCauldron(酿造台)加入了Fuel
15w43aChestMinecartMinecartHopper加入了LootTableLootTableSeed
向所有生物加入了DeathLootTableDeathLootTableSeed
向所有火球(FireballBase)加入了lifepower
15w44aEnderCrystal加入了ShowBottom
15w44bArrow加入了PotionCustomPotionEffects
AreaEffectCloud加入了Potion
15w45aThrownPotion处移除了Linger。现在储存的物品的ID包含minecraft:lingering_potion,药水会滞留。
ThrownPotion现在会渲染其物品形式,即使那个物品不是药水。
15w46aRabbitMoreCarrotTicks现在会在兔子吃一个胡萝卜时设置为40,但该标签目前未被使用。
15w47aBeacon加入了PaymentItem
15w49aBeacon中移除了PaymentItem
为了使告示牌接受文字,所有4个标签(“Text 1”、“Text 2”、“Text 3”和“Text 4”)都必须存在。
15w51bArmorStandDisabledSlots的原始值会自然更改。
1.1016w20a加入实体 PolarBear
Zombie加入了ZombieType,并且重命名VillagerProfessionIsVillager。值若为6则表示其是尸壳僵尸。
一个值为2的SkeletonType 指向单独的骷髅。
NoGravity扩展到所有的实体。
Structure加入poweredshowboundingboxshowair
16w21a加入FallFlying到怪物和武器选项
Structure加入integrityseed
1.10-pre1AreaEffectCloud加入ParticleParam1ParticleParam2
1.1116w32a马按它们各自的类型被分成如下实体ID:horsedonkeymuleskeleton_horse以及zombie_horse 。从horse中移除了TypeHasReproducedChestedHorseItems 标签已经仅仅适用于muledonkey、并且SkeletonTrapSkeletonTrapTime 也只适用于skeleton_horse
骷髅被分成了如下实体ID: skeletonstray以及wither_skeleton。从骷髅中删除了所有的SkeletonType标签。
僵尸被分成了如下实体IDzombiezombie_villager以及husk。从僵尸类型中移除了所有的ZombieType标签、ConversionTime标签和Profession标签现只适用于zombie_villager
保卫者被分为了如下的实体IDguardianelder_guardian。从guardian中移除了Elder
没有被使用的游戏保存IDMobMonster被移除。
Pumpkin字节标签被加入到snowman
16w35abanner加入了CustomName
16w39a加入例如llamallama_spitvindication_illagervexevocation_fangsevocation_illager
shulker加入了Color
为物品加入了LocNameCustomPotionColor以及ColorMap
16w40avindication_illager加入了Johnny
从火球基类(恶魂火球、烈焰人火球(火焰弹)、末影龙火球和凋灵之首)中删除了xTileyTilezTileinTileinGround
16w41a标签llama_spit已经在游戏保存实体中可用,
16w42a加入 critarrow
16w43a加入 OwnerUUIDLeastOwnerUUIDMostevocation_fangs
16w44a从鱼钩实体中删除了标签:xTileyTilezTileinTileinGround
1.11-pre1改变ench标签使它至少具有一个TAG_compound 。
1.1217w13a加入了实体ParrotShoulderEntityLeft/ShoulderEntityRightseenCreditsrecipeBookRecipes
17w14a为成为了复合标签的recipeBook加入了isFilteringCraftableisGuiOpenrecipes
为实体Zombie加入了ConversionPlayerLeastConversionPlayerMost
17w16a改进了命令中的NBT解析。
17w17arecipeBookUpdateLastExecutionLastExecution加入了toBeDisplayed
17w17b为可繁殖的实体加入了LoveCauseLeastLoveCauseMost
1.1317w47a物品中的damage标签被移除,工具和盔甲现在使用Damage标签,地图使用map标签,二者类型都是tag
末影人的carriedcarriedData标签被并入到carriedBlockState标签中。
箭的inTileinData标签被并入到inBlockState标签中。
矿车的DisplayTileDisplayData标签被并入到DisplayState标签中。
掉落的方块的BlockData标签被并入到BlockState标签中。
移动的活塞的BlockIdBlockData标签被并入到blockState标签中。
移除了音符盒和花盆方块实体。
陷阱箱现在有了它们自己的方块实体trapped_chest
从旗帜中移除了Base
从生物头颅中移除了Rot
17w47a从唱片机中移除了Record
17w47b陷阱箱不再拥有它们自己的方块实体,转而再次使用chest
18w01aThrowerOwner的类型从strings已被修改为有2个long类型的LM标签的复合标签。
18w02a由钓鱼竿创建的浮标现在有了其实体IDfishing_bobber
画的ID已被小写化、命名空间化。
18w07a加入了turtletridentphantom实体。
turtle加入了HomePosXHomePosYHomePosZTravelPosXTravelPosYTravelPosZHasEgg
phantom加入了AXAYAZSize
18w15a加入了dolphin实体。
18w19apuffer_fish重命名为pufferfish
18w20acod_mob重命名为cod
salmon_mob重命名为salmon
18w21adolphin加入了TreasurePosXTreasurePosYTreasurePosZGotFishCanFindTreasure
ench现已被重命名为Enchantments
Enchantments不再接受数字ID,它现在接受字母ID。
pre5xp_orb重命名为experience_orb
xp_bottle重命名为experience_bottle
eye_of_ender_signal重命名为eye_of_ender
ender_crystal重命名为end_crystal
fireworks_rocket重命名为firework_rocket
commandblock_minecart重命名为command_block_minecart
villager_golem重命名为iron_golem
evocation_fangs重命名为evoker_fangs
evocation_illager重命名为evoker
vindication_illager重命名为vindicator
pre5illusion_illager重命名为illusioner
1.1418w43a加入了illager_beastpandapillager实体。
18w45aLIGHT_BLOCKING高度图现已被移除。
1.1519w36a每个区块中 Level标签中的 Biomes数组现在包含1024个整数而不是256个,允许不同高度上的生物群系有不同的值。

参考[编辑 | 编辑源代码]

  1. FVbico和Steven W.d.V.在MC-51003上的评论。