本站文本内容除另有声明外,转载时均必须注明出处。(详情…本站文本内容除另有声明外,转载时均必须注明出处。(详情…中文Minecraft Wiki是完全公开的。请勇于扩充与修正内容!中文Minecraft Wiki是完全公开的。请勇于扩充与修正内容!Minecraft中文Wiki微博正在更新!或许有兴趣去看看Minecraft中文Wiki微博正在更新!或许有兴趣去看看想与其他用户进行编辑上的沟通?社区专页正是为此创建的。想与其他用户进行编辑上的沟通?社区专页正是为此创建的。翻译或创建页面之前,不妨看看译名标准化Wiki条例页面。翻译或创建页面之前,不妨看看译名标准化Wiki条例页面。需要管理员的协助?在管理员告示板留言也许可以帮到您。需要管理员的协助?在管理员告示板留言也许可以帮到您。
各位用户:为了让我们能更好了解您的需求,提供更优良的服务,请帮助我们填写一份问卷。编者问卷读者问卷(需要花费7分钟左右)

Hi Gamepedia users and contributors! Please complete this survey to help us learn how to better meet your needs in the future. We have one for editors and readers. This should only take about 7 minutes!

区块格式

来自Minecraft Wiki
(重定向自方块实体格式
跳转至: 导航搜索
此条目的部分内容由于太久没更新而已过期。
你可以帮助我们来更新此条目。

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

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

参见:Anvil 文件格式页面

区块使用NBT格式储存,遵循以下结构组成(详见下面方块格式了解每组阵列中的方块排序)


  • 根标签

    •  DataVersion:该区块NBT结构的版本

    •  Level:区块数据

      •  xPos:该区块的X坐标

      •  zPos:该区块的Z坐标

      •  LastUpdate:自该区块上次更新以来经过的刻。

      •  InhabitedTime:玩家已在该区块的总刻数。注意该值在多个玩家处于同一区块时会增长得更快。用于区域难度:增加带有一些装备的生物的生成几率,生物自带的盔甲附有附魔效果的机率,生成带有药水效果蜘蛛的几率,生成拥有捡起物品能力的生物的几率以及决定僵尸被攻击时生成其他僵尸的几率。该值大于等于3600000时,区域难度会最大程度影响该区块。在0及以下时,难度等级被限制到最低(虽然该值设置为负数时会被设置为0,但是把该值回归到正数还是要花时间的)。详见区域难度获取更多信息。

      •  Biomes:256字节的生物群系信息,有些区块可能不具备该信息。区块内垂直的一列占用一字节空间,生物群系ID可在数据值页面查看。如果这个数组不存在,游戏在加载和保存区块时会自动根据世界的种子添加并赋值;若数组内任何数值为“-1”,游戏也会根据正确信息改正。

      •  HeightMaps:对应256个值均被压缩为9位(0-256)的几个不同的高度数据。
        •  LIGHT_BLOCKING:最高的透明度不为0的方块‌[失效:JE 1.14](在18w45a中被移除)。
        •  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:方块状态属性列表,name字段是方块状态属性的名称。

                •  Name:方块属性的名称以及它的值。

          •  BlockLight:2048字节记录了每个方块发出的亮度。使加载时间相较于重新计算变得更快。每方块占用4字节。
          •  BlockStates:一个64位长的变量,能够存储4096个索引的数组。索引的顺序对应Sections中Palette元素的顺序。在Section中的所有索引大小相同,其大小需要表示最大的索引(最小为4位)。若此索引不能被64整除,其位数会继续增加。

          •  SkyLight:2048字节记录了阳光和月光打在每个方块上的亮度。每方块占用4字节。

      •  Entities:该列表的每个TAG_Compound 都定义了该区块里的实体。详见下面的实体格式。如果该列表为空,则该标签则为一个字节列表标签。

      •  TileEntities:在该列表的每个TAG_Compound 都定义了该区块里的实体。详见下面的实体格式。如果该列表为空,该列表将会是个结束标签的列表(1.10版本以前为字节标签)。

      •  TileTicks:可能不存在。每个在该列表的 TAG_Compound 标签都是该区块中的一个等待更新的“活跃”方块。它们用于保存红石机械的状态、掉落的沙子或水以及其他活动。详见下面的附加刻格式。这个标签可能不存在。

      •  LiquidTicks:

      •  Lights:一个拥有16个列表的列表。

      •  LiquidsToBeTicked:一个拥有16个列表的列表。

      •  ToBeTicked:一个拥有16个列表的列表。

      •  PostProcessing:一个拥有16个列表的列表。

      •  Status:是这些值的其中之一:empty、base、carved、liquid_carved、decorated、lighted、mobs_spawned、finalized、fullchunk、或postprocessed。

      •  Structures

        •  References
          •  结构名称

        •  Starts

          •  结构名称:只存储能在当前维度生成的结构,如末地城只会保存在末地区块里。

            •  ChunkX:结构的起始X坐标。如果ID为INVALID则无此字段。

            •  ChunkZ:结构的起始Z坐标。如果ID为INVALID则无此字段。

            •  id:如果在此区块里没有此类型的结构,此值为“INVALID”,否则为结构的名称。

            •  biome:结构所在的生物群系的ID。如果ID为INVALID则无此字段。

            •  BB:整个结构的边界。该值有6个整数:最小X、Y和Z坐标以及最大X、Y和Z坐标。如果ID为INVALID则无此字段。

            •  Valid:1或0(true/false)-(仅限村庄)村庄是否至少生成了3条不是路的结构。如果ID为INVALID则无此字段。

            •  Processed:(仅限遗迹)已创建部分结构的区块列表。如果ID为INVALID则无此字段。


                •  X:该区块的X坐标。

                •  Z:该区块的Z坐标。

            •  Children:组成此结构的子结构。如果ID为INVALID则无此字段。

              • :子结构数据。

                •  id:子结构ID。一般是大量缩写代码而不是易懂的代码。

                •  Rot:海底遗迹与沉船的方向。有效值为:COUNTERCLOCKWISE_90、NONE、CLOCKWISE_90和CLOCKWISE_180。

                •  BiomeType:此遗迹所处的海洋的温度。有效值是WARM和COLD。

                •  Template:海底遗迹或沉船用到的模板。

                •  integrity:该结构的完整度(仅用于海底遗迹)。

                •  TPX:该海底遗迹或沉船的X坐标起始点。

                •  TPY:该海底遗迹或沉船的Y坐标起始点。

                •  TPZ:该海底遗迹或沉船的Z坐标起始点。

                •  isLarge:1或0(true/false) - 若此海底遗迹是大型遗迹则为true。

                •  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)-(Stronghold "SHS")是否在走廊左侧有一个开口。

                •  Right:1或0(true/false)-(Stronghold "SHS")是否在走廊右侧有一个开口。

                •  Type:(村庄)村庄类型:0=平原、1=沙漠、2=热带草原、3=针叶林。

                •  Zombie:1或0(true/false)-(村庄)是否把该村庄生成为僵尸村庄。

                •  VCount:(村庄)在这个村庄生成的村民数量。

                •  HPos:(村庄)为把村庄放在地面上而移动至的Y坐标。若其未被移动则此值为-1。

                •  CA:(村庄“ViF”和“ViDF”)在耕地格子里的作物。

                  •  Name:方块ID

                  •  Properties:方块状态属性列表,[name]是方块状态属性的名称。

                    •  Name:方块状态名称以及它的值。

                •  CB:(村庄“ViF”和“ViDF”)在耕地格子里的作物。

                  •  Name:方块ID

                  •  Properties:方块状态属性列表,[name]是方块状态属性的名称。

                    •  Name:方块状态名称以及它的值。

                •  CC:(村庄“ViDF”)在耕地格子里的作物。

                  •  Name:方块ID

                  •  Properties:方块状态属性列表,[name]是方块状态属性的名称。

                    •  Name:方块状态名称以及它的值。

                •  CD:(村庄“ViDF”)在耕地格子里的作物。

                  •  Name:方块ID

                  •  Properties:方块状态属性列表,[name]是方块状态属性的名称。

                    •  Name:方块状态名称以及它的值。

                •  Terrace:1或0(true/false)-(村庄“ViSH”)屋子是否有通向屋顶和栅栏的梯子。

                •  T:(村庄“ViSmH”)桌子:0为无桌子,1和2会把桌子放在屋子的两边。

                •  C:(村庄“ViSmH”)屋顶类型。

                •  Length:(村庄“ViSR”)道路长度。

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


此段落需要更新。这个段落中的一些信息已经不符合当前版本的情况。

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

坐标系如下:

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

这也发生在产生最自然的扫描方向上,因为所有在最少有效维度里(例如在这种情况下是X轴)的索引都出现为每个在下一个最有效维度里的索引。因此读取一个排序为YZX的数组像读一本头朝北放置的书,所有的字母(或X索引)同一时间都在一条线上(或Z索引),并且所有的线同一时间都在一页纸(或Y索引)上。对于二维数组(如“Biomes”和“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(协议标签)。唯一例外的是玩家(Player)实体,它储存在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,那么当前实体在空中不会坠落。

    •  Dimension:已知的使用场景是在<player>.dat中,用于保存玩家上次的在案方位及其坐标。其他的实体只会被保存在它们所存在的维度的区域文件。-1表示下界,0表示主世界,1表示末地

    •  Invulnerable:1或0(true/false),如果为true,那么当前实体不会受到任何伤害。此项对于生物与非生物实体的作用是类似的:生物不会受到任何来源(包括药水)的伤害,无法被钓鱼竿、攻击、爆炸或者抛射物推动;除支持物被移除外,诸如载具的物件都不会被摧毁。注意,这些实体仍然会被处于创造模式的玩家伤害到。

    •  PortalCooldown:距离当前实体可以再次穿过下界传送门向回传送的时间刻数。在初次传送后,起始值为300刻(15秒)并逐渐倒计时至0。

    •  UUIDMost:当前实体的通用唯一识别码最高比特位。此项与UUIDLeast共同组成当前实体的唯一识别码。

    •  UUIDLeast:当前实体的通用唯一识别码最低比特位。

    •  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 村民
vindicator 卫道士
wandering_trader 流浪商人
witch 女巫
wither 凋灵
wither_skeleton 凋灵骷髅
wolf
zombie 僵尸
zombie_horse 僵尸马
zombie_pigman 僵尸猪人
zombie_villager 僵尸村民

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

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

弹射物是实体的一个分支并有很不清楚的标签,如尽管存在Entity Pos标签但仍加入X、Y、Z方位标签,尽管存在inGround但仍加入inTile,以及尽管多数弹射物不是箭但仍加入shake标签。

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

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

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

物品是实体的一个分支。

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

交通工具实体
实体 ID 实体名称
Boat
Minecart (已弃用) 矿车
运输矿车
动力矿车
chest_minecart 运输矿车
furnace_minecart 动力矿车
spawner_minecart 刷怪箱矿车
tnt_minecart TNT矿车
hopper_minecart 漏斗矿车
commandblock_minecart 命令方块矿车

交通工具是实体的一个分支。

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

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

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

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

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

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

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

方块实体
方块实体ID 对应方块
banner 旗帜
barrel 木桶
beacon 信标
bed
bell
blast_furnace 高炉
brewing_stand 酿造台
campfire 营火
cauldron 炼药锅‌‌[仅BELCE]
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 结构方块

方块实体值block entity实体无关)是游戏用来存储不能储存在方块状态中的信息。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.2 12w34a 加入实体WitherBoss
1.5 13w02a 加入实体MinecartTNT
Minecart被弃用。
13w03a 加入实体MinecartHopper
13w06a 加入实体MinecartSpawner
1.6.1 13w16a 加入实体EntityHorse
13w21a EntityHorse中移除了ArmorType
EntityHorse中移除了Saddle
1.6.1-pre EntityHorse重新加入了Saddle
1.7.2 13w39a 加入实体MinecartCommandBlock
1.8 14w02a 为箱子加入了Lock
现在指定了NBT数据时不再使用物品ID。
FallingSand加入了Block,其使用了字母ID格式。
14w06a 为所有实体加入了ShowParticles
为所有物品实体加入了PickupDelay
Age设置为-32768会使物品永不过期。
为所有生物移除了AttackTime
14w10a Villager加入了rewardExp
为所有可以饲养的生物加入了OwnerUUID
Skull加入了Owner
对物品展示框和画进行了更改:加入了FacingTileXTileYTileZ现在表示物品里面的方块的坐标而不是其放置的物品,同时弃用了DirectionDir
14w11a 加入实体Endermite
Enderman加入了EndermiteCount
14w21a 现在所有实体都有了CustomNameCustomNameVisible
14w25a 加入实体Guardian
为告示牌加入了Text1Text2Text3Text4。告示牌现在不再有字符数量限制(16个),现在其限制取决于字符的宽度。
14w27a 加入实体Rabbit。 为命令方块告示牌加入了CommandStats
14w28a Enderman移除了EndermiteCount
14w30a 为所有实体加入了Silent
14w32a 为所有生物加入了NoAI
加入实体ArmorStand
14w32c ArmorStand加入了NoBasePlate
1.9 15w31a Living加入了标签HandItemsArmorItemsHandDropChancesArmorDropChances。它们取代了DropChancesEquipment标签。
ArmorStand加入了HandItemsArmorItems
Entity加入了Glowing
LivingBase加入了Team
EnderDragon加入了DragonPhase
加入实体Shulker,是SnowMan的子标签。
加入实体ShulkerBullet,是Entity的子标签。
加入实体DragonFireball,其扩展了FireballBase,但没有独有标签。
加入实体TippedArrowSpectralArrow,是Arrow的子标签。
加入方块EndGatewayTileEntity
15w32a TagsDataVersion标签现在可应用于实体上。
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替代。
15w33c EnderCrystal加入了BeamTarget
15w34a 命令方块Control方块实体值加入了poweredconditional字节标签。
FireballBase加入了lifepower
MobSpawner中的SpawnData加入了id
音符盒加入poweredMusic方块实体值。
15w35a Zombie加入了VillagerProfession
15w37a MinecartHopper加入了Enabled
15w38a EntityHorse加入了SkeletonTrapSkeletonTrapTime
15w41a 所有实体中的RidingPassengers替代。
向所有骑乘者加入了RootVehicle
Boat加入了Type
15w42a Cauldron(酿造台)加入了Fuel
15w43a ChestMinecartMinecartHopper加入了LootTableLootTableSeed
向所有生物加入了DeathLootTableDeathLootTableSeed
向所有火球(FireballBase)加入了lifepower
15w44a EnderCrystal加入了ShowBottom
15w44b Arrow加入了PotionCustomPotionEffects
AreaEffectCloud加入了Potion
15w45a ThrownPotion处移除了Linger。现在储存的物品的ID包含minecraft:lingering_potion,药水会滞留。
ThrownPotion现在会渲染其物品形式,即使那个物品不是药水。
15w46a RabbitMoreCarrotTicks现在会在兔子吃一个胡萝卜时设置为40,但该标签目前未被使用。
15w47a Beacon加入了PaymentItem
15w49a Beacon中移除了PaymentItem
为了使告示牌接受文字,所有4个标签(“Text 1”、“Text 2”、“Text 3”和“Text 4”)都必须存在。
15w51b ArmorStandDisabledSlots的原始值会自然更改。
1.10 16w20a 加入实体 PolarBear
Zombie加入了ZombieType,并且重命名VillagerProfessionIsVillager。值若为6则表示其是尸壳僵尸。
一个值为2的SkeletonType 指向单独的骷髅。
NoGravity扩展到所有的实体。
Structure加入poweredshowboundingboxshowair
16w21a 加入FallFlying到怪物和武器选项
Structure加入integrityseed
1.10-pre1 AreaEffectCloud加入ParticleParam1ParticleParam2
1.11 16w32a 马按它们各自的类型被分成如下实体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
16w35a banner加入了CustomName
16w39a 加入例如llamallama_spitvindication_illagervexevocation_fangsevocation_illager
shulker加入了Color
为物品加入了LocNameCustomPotionColor以及ColorMap
16w40a vindication_illager加入了Johnny
从火球基类(恶魂火球、烈焰人火球(火焰弹)、末影龙火球和凋灵之首)中删除了xTileyTilezTileinTileinGround
16w41a 标签llama_spit已经在游戏保存实体中可用,
16w42a 加入 critarrow
16w43a 加入 OwnerUUIDLeastOwnerUUIDMostevocation_fangs
16w44a 从鱼钩实体中删除了标签:xTileyTilezTileinTileinGround
1.11-pre1 改变ench标签使它至少具有一个TAG_compound 。
1.12 17w13a 加入了实体ParrotShoulderEntityLeft/ShoulderEntityRightseenCreditsrecipeBookRecipes
17w14a 为成为了复合标签的recipeBook加入了isFilteringCraftableisGuiOpenrecipes
为实体Zombie加入了ConversionPlayerLeastConversionPlayerMost
17w16a 改进了命令中的NBT解析。
17w17a recipeBookUpdateLastExecutionLastExecution加入了toBeDisplayed
17w17b 为可繁殖的实体加入了LoveCauseLeastLoveCauseMost
1.13 17w47a 物品中的damage标签被移除,工具和盔甲现在使用Damage标签,地图使用map标签,二者类型都是tag
末影人的carriedcarriedData标签被并入到carriedBlockState标签中。
箭的inTileinData标签被并入到inBlockState标签中。
矿车的DisplayTileDisplayData标签被并入到DisplayState标签中。
掉落的方块的BlockData标签被并入到BlockState标签中。
移动的活塞的BlockIdBlockData标签被并入到blockState标签中。
移除了音符盒和花盆方块实体。
陷阱箱现在有了它们自己的方块实体trapped_chest
从旗帜中移除了Base
从生物头颅中移除了Rot
17w47a 从唱片机中移除了Record
17w47b 陷阱箱不再拥有它们自己的方块实体,转而再次使用chest
18w01a ThrowerOwner的类型从strings已被修改为有2个long类型的LM标签的复合标签。
18w02a 由钓鱼竿创建的浮标现在有了其实体IDfishing_bobber
画的ID已被小写化、命名空间化。
18w07a 加入了turtletridentphantom实体。
turtle加入了HomePosXHomePosYHomePosZTravelPosXTravelPosYTravelPosZHasEgg
phantom加入了AXAYAZSize
18w15a 加入了dolphin实体。
18w19a puffer_fish重命名为pufferfish
18w20a cod_mob重命名为cod
salmon_mob重命名为salmon
18w21a dolphin加入了TreasurePosXTreasurePosYTreasurePosZGotFishCanFindTreasure
ench现已被重命名为Enchantments
Enchantments不再接受数字ID,它现在接受字母ID。
pre5 xp_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
pre5 illusion_illager重命名为illusioner
1.14 18w43a 加入了illager_beastpandapillager实体。
18w45a LIGHT_BLOCKING高度图现已被移除。

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

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