本站文本內容除另有聲明外,均在知識共享 署名-非商業性使用-相同方式共享 3.0 協議下提供。(詳細信息…

区块格式

来自Minecraft Wiki
跳转至: 导航搜索
此页面的部分内容由于太久没更新而已过期。
你可以帮助我们来更新此页面
此页面的(部分)内容需要被翻译。
你可以帮助我们来翻译此页面

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

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

另见:Anvil 文件格式页面

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


  • 根标签

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

    •  Level:区块数据

      •  xPos:该区块的X坐标

      •  zPos:该区块的Z坐标

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

      •  LightPopulated:1或0(true或false)- 若为true,此服务器/客户端已经在该区块生成后为其计算亮度。

      •  TerrainPopulated:1或不存在(true或false)指出该地区是否存在特殊事物。(矿物、特殊方块、树木、地牢、花、瀑布等)如果该值为0,则Minecraft将会在已经存在的方块上重新生成这些事物。

      •  V:目前总是被存储作1,但实际上并没有被游戏加载。似乎是个区块版本标签。

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

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

      •  HeightMap:1024个字节(256个TAG_Int)的高度数据,大小为16×16。每个字节会记录对应列中最低且日光值最高的高度。为日光的计算提升效率。

      •  Sections:一组复合标签,每个标签都包含一组子区块的描述。

        • 一个独立的子区块。

          •  Y:这个子区块的Y索引(不是坐标)。范围为0到15(从低到高),没有重复,然而子区块若为空时可能会缺失。

          •  Blocks:以4096字节的方块ID存储的地形数据。每个方块占用8个字节,用来添加下列的附加标签。

          •  Add:可能不存在,2048字节的方块附加值数据。该变量是用来加入(结合)上述的方块ID来建立在[0,4095]范围之间的真实方块ID。每个方块占用四个字节。结合产生真实方块ID的方法是将该值转移到剩下的8字节空间里,然后再把他们加入到上方的方块ID中

          •  Data:2048字节的方块数据,此外还用于定义一部分地形。每个方块占4字节。

          •  BlockLight:2048字节记录了每个方块发出的亮度。使加载时间相较于重新计算变得更快。每方块占用4字节。

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

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

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

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

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

在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 Pos Motion Rotation FallDistance Fire Air OnGround Dimension Invulnerable PortalCooldown UUIDMost UUIDLeast UUID CustomName CustomNameVisible Silent Riding CommandStats SuccessCountObjective SuccessCountName AffectedBlocksObjective AffectedBlocksName AffectedEntitiesObjective AffectedEntitiesName AffectedItemsObjective AffectedItemsName QueryResultObjective QueryResultName


  • 实体数据

    •  id:实体ID。这个标签不存在于玩家实体中。

    •  Pos: 3 个 TAG_Doubles 字段表示当前实体的 X、Y、Z 位置。

    •  Motion: 3 个 TAG_Doubles 来描述该实体此时在三维方向上的速度矢量,以米/刻为单位。

    •  Rotation: 2 个 TAG_Floats 表示旋转角度。

      • 鸟瞰视角中实体围绕Y轴的旋转(称为偏航),因为正西角被定义为0度,所以这个值不会超过360度。

      • 实体与地平线的倾角(称为仰角)。水平时为0,正值表示向下,不会超过±90度。

    •  FallDistance:实体已经下降的距离。更大的值会让实体在接触地面时受到更大的伤害。

    •  Fire:直到火被扑灭时的时间刻数。负值代表实体可以站在火里燃烧多久。不在火中时默认为-1。

    •  Air:实体现有的氧气值,单位为刻。在空气中时保持为最大300,意味着实体在溺水前有15秒的(憋气)时间,在实体死亡前总计有35秒的时间(设其有20生命值)。在水下时该值减少,减为0时意味着溺水,实体会每秒损失1点生命值。

    •  OnGround:1 或者 0 (true/false)-当实体接触地面时为 true。

    •  Dimension:表示实体所在的维度;实体只是被保存在相应世界的区域文件中。-1为下界,0为主世界,1为末路之地

    •  Invulnerable:1 或者 0 (true/false) - 如果实体不能被摧毁,则为 true,对实体和非实体都适用。生物不会受到任何来源的伤害(包括药水效果),同时不能被钓鱼竿、攻击、爆炸或弹射物破坏。注意,该实体在创造模式下仍然可以被摧毁。

    •  PortalCooldown:表示实体可以再次进入任何类型的传送门的时间,单位为刻。在传送后这个值将会从 900 刻(45秒)开始倒数到0。

    •  UUIDMost: 该实体通用唯一识别码的最高有效位。与UUIDLeast形成该实体唯一ID。

    •  UUIDLeast: 该实体通用唯一识别码的最低有效位。

    •  UUID(在1.9中移除): 该实体的通用唯一识别码。这个值将会被转换为十六进制的 UUID(例如: 069a79f4-44e9-4726-a5be-fca90e38aaf5),转换后的值将会赋予给 UUIDLeast 和 UUIDMost 标签。如果这两个标签已存在,则不执行转换。在实体加载后,“UUID”标签就被移除了。

    •  CustomName:该实体的自定义名称。在玩家死亡信息中和村民交易界面中显示,同时将光标移动到该实体时也会显示。可能会不存在这个标签,或者是一个空值。

    •  CustomNameVisible: 1 或 0 (true/false) - 如果为 true,并且该实体拥有自定义名称,无论光标是否指向它,它总是显示在实体的上方。如果实体没有自定义名称,将会显示默认名称。可能不存在这个标签。

    •  Silent: 1 或 0 (true/false) - 如果为 true,,则该实体不会制造声音。可能不存在这个标签。

    •  Riding15w41a后弃用)被骑乘实体的id数据。注意:如果实体处于骑乘状态,堆叠中“最高”的实体拥有Pos标签,而该标签指定了“最低”的实体的坐标。同样注意,“最低”的实体控制这堆实体的运动;当实体堆叠由刷怪箱生成时,生成条件由最上方的实体决定。
      • 参见这个格式(递归)。

    •  Passengers:骑乘者的id数据。可以由多个实体同时骑着一个实体。当被一个生物刷怪箱生成时,其最上面的实体控制着生成条件。最上面的实体同时也控制着该实体的移动。
      • 参见这个格式(递归)。

    •  Glowing:1 或 0(true/false) - 如果实体发光则为 true。

    •  Tags: 自定义字符串数据列表。

    •  CommandStats:记分板信息识别参数,用于记录上次对该实体执行命令的结果。

      •  SuccessCountObjective:Objective 字段,表示上次执行的命令是否成功(将会是一个 boolean 值)

      •  SuccessCountName:Objective 字段,表示上次执行的命令是否成功

      •  AffectedBlocksObjective:Objective 字段,表示上次执行成功的命令修改的方块数量(将会是一个 int 值)

      •  AffectedBlocksName:表示上次执行成功的命令修改的方块数量

      •  AffectedEntitiesObjective:表示被上次执行成功命令修改的实体数量(将会是一个 int 值)

      •  AffectedEntitiesName: Fake player 字段,表示被上次执行成功命令修改的实体数量

      •  AffectedItemsObjective: Objective 字段,表示被上次执行成功命令修改的实体数量(将会是一个 int 值)

      •  AffectedItemsName: Fake player 字段,表示上次命令被修改的物品数量

      •  QueryResultObjective: Objective's 字段,表示上次命令的查询结果

      •  QueryResultName: Fake player 字段,表示上次命令的查询结果

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

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

生物实体
实体ID 名称
bat 蝙蝠
blaze 烈焰人
cave_spider 洞穴蜘蛛
chicken
cow
creeper 爬行者
donkey
elder_guardian 远古守卫者
ender_dragon 末影龙
enderman 末影人
endermite 末影螨
evocation_illager 唤魔者
ghast 恶魂
giant 巨人
guardian 守卫者
horse
husk 尸壳
llama 羊驼
magma_cube 岩浆怪
mooshroom 哞菇
mule
ocelot 豹猫
pig
polar_bear 北极熊
rabbit 兔子
sheep
shulker 潜影贝
silverfish 蠹虫
skeleton 骷髅
skeleton_horse 骷髅马
slime 史莱姆
snowman 雪傀儡
spider 蜘蛛
squid 鱿鱼
stray 流髑
vex 恼鬼
villager 村民
villager_golem 铁傀儡
vindication_illager 卫道士
witch 女巫
wither 凋灵
wither_skeleton 凋灵骷髅
wolf
zombie 僵尸
zombie_horse 僵尸马
zombie_pigman 僵尸猪人
zombie_villager 僵尸村民

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

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

弹射物实体
实体ID 名称
arrow 射出的箭
dragon_fireball 末影龙火球
snowball 丢出的雪球
egg 丢出的蛋
fireball 恶魂火球
small_fireball 烈焰人火球
ender_pearl 丢出的末影珍珠
xp_bottle 丢出的附魔之瓶
potion 丢出的喷溅药水
wither_skull 凋灵之首

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

物品实体
实体名 名称
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 名称
ender_crystal 末影水晶
evocation_fangs 尖牙
eye_of_ender_signal 末影之眼
fireworks_rocket 烟花火箭
item_frame 物品展示框
leash_knot 拴绳
painting
shulker_bullet 潜影贝导弹
钓鱼竿浮标

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

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

方块实体值在Minecraft中被用来储存不能存放在4-bit内的方块信息

方块实体
方块实体ID 对应方块
banner 旗帜
beacon 信标
bed
brewing_stand 酿造台
cauldron (携带版) 炼药锅
chest 箱子
陷阱箱
comparator 红石比较器
command_block 命令方块
daylight_detector 阳光传感器
dispenser 发射器
dropper 投掷器
enchanting_table 附魔台
ender_chest 末影箱
end_gateway 末地折跃门方块
end_portal 末地传送门方块
flower_pot 花盆
furnace 熔炉
hopper 漏斗
jukebox 唱片机
mob_spawner 刷怪箱
noteblock 音符盒
piston 活塞臂
sign 告示牌
skull 头颅
structure_block 结构方块

所有的方块实体值都共享这些基础值:


  • 方块实体值

    •  id: 实体ID

    •  x: 方块的X坐标。

    •  y: 方块的Y坐标。

    •  z: 方块的Z坐标。










  •  这些容器可能会有以下额外的标签:

    •  CustomName:非必要。用于自定义容器的显示名称。若对命令方块使用,将会修改默认自带的“@”;例如将命令方块命令设置为/say <内容>,带上CustomName,输出的“@”将会替换成设定的名称。

  • 信标 有这些额外的字段:

    •  Levels: 信标的等级

    •  Primary: 被选择的主要效果,ID详见状态效果。0代表无效果。

    •  Secondary: 被选择的次要效果,ID详见状态效果。0代表无效果。

  • 酿造台 有以下额外字段:

    •  Items: 正在酿造的物品列表,这将会影响酿造台的外观。

    •  BrewTime: 药水已经酿造的红石.

    •  Fuel:酿造台的剩余燃料。

  • 箱子 有以下额外字段:

    •  Items:在箱子里的物品.[note 1]

      • : 其中的一格物品,包含一个值为0到26的整数的位置标签(其中值为0为左上角的格子,1为0所在右侧的格子,以此类推)
  1. 大箱子其实只是就是两个独立的小箱子,将他们劈开即可。

  • 红石比较器 有以下额外字段:

    •  OutputSignal:当前红石比较器输出的信号强度。因为这个方块本身就将不同方向、充能情况和比较模式存入4-bit而有可能被使用,且红石比较器在电路中可以不用红石线就可以存储具体的红石能量。

  • 命令方块 有以下额外字段:

    •  Command命令方块当前所有的命令。

    •  SuccessCount:当前命令方块可以用红石比较器输出的信号强度(命令方块是否输出),每当命令方块被红石信号激活一次后才更新一次。

  • 熔炉 有以下额外字段:

    •  BurnTime: 距离当前燃料燃毕所剩的红石刻。[note 1]

    •  CookTime: 矿物已经被熔炼的红石刻或者食物已经被烧制的红石。当此值为200时(约10秒),该物品熔炼或烧制完成;当BurnTime的值为0时将会重置CookTime的值,即半途而废。

    •  Items: 熔炉内的物品列表。

      • : 其中一格物品,包括一个位置标签:
        Slot 0: 被熔炼物
        Slot 1: 下一个被使用的燃料
        Slot 2: 成品栏.
  1. 当燃料被放置于熔炉中且开始燃烧的一瞬间,燃料的可燃性就被记录在此.

  • 漏斗 有以下额外字段:

    •  Items: 漏斗内的物品列表

      • : 其中的一格物品,包含一个位置标签。

    •  TransferCooldown: 距离下一次输送物品的时间,为1~8之间;如果用红石信号持续激活,则此值为0,即不传递物品。


  • 刷怪箱 有以下额外字段:

    •  SpawnPotentials: 可选是否添加的。是一个包含所有可能生成的实体的列表。[1][2]如果这个标签不存在,但是 SpawnData标签 存在, Minecraft将会使其生成并指定再次将会生成的实体。如果不存在SpawnData标签,则会尝试从本列表随机找出一个实体生成,如果本列表也不存在,则会生成猪。

      • : 随后将会生成的实体之一. 在刷怪箱尝试生成之后,将会随机从中选择一个条目并且用于下一次生成。

        •  Entity: 实体的Compound(包括id)。将会在准备下一次生成时覆盖SpawnData。

        •  Weight: 生成这个实体的权重(可能性)。必须为至少为1的正数。

    •  EntityId1.9后失效: 下一组将要生成的实体的ID. 所有的生物实体ID或其他实体ID都可以生效。 警告: 如果SpawnPotentials标签已经存在了,那么这个标签将会在下一次尝试生成时被覆盖!

    •  SpawnData: 包含了与下一组即将生成的实体的标签, 任何实体生物标签都可能被使用。需要注意的是若刷怪箱指定了其中任意一个标签,所有的可变的数据,例如一个生物的装备、村民的职业或者羊毛的颜色等等,都将不再自动生成,也就是必须有手动指定才可。(这并不说明他不再提供朝向信息,这些将会像往常一样随机生成除非他们被人工指定过。同样的,除非史莱姆岩浆怪的大小和生命被设定,这些也同样会被随机生成。)这个和实体ID一起影响着在刷怪箱中被火焰缠绕的缩略模型的外观。 注意: 这个标签是可选是否添加的:如果他并没有给出,那么下一组即将生成的实体将会随机使用可用于该生物的一些内容,包括潜在的随机装备等(此标签优先级大于SpawnPotentials)。警告: 如果SpawnPotentials标签已经存在,那么这个标签会在下一次尝试生成之后被覆盖。

    •  SpawnCount: 它决定了每次生成多少个生物

    •  SpawnRange: 刷怪箱可以随机生成实体的范围。这片区域将是方形的,包含刷怪箱自身在内的这个方块的以刷怪箱自身的x,z坐标为中心的周遭区域—不是以刷怪箱本身为中心,和以刷怪箱底部的y坐标为中心的两格高的区域,这允许实体可以有足够的空间在这块区域的顶部和底部再向下一格的区域内生成。这块区域中生成实体的顶点的y坐标均为整数,同时水平的x、z坐标是与刷怪箱自身相似的浮点值。

    •  Delay: 距离下次生成还隔有的红石。若该值为0且玩家进入了它的响应范围,它将会立即生成实体。如果该值被设定为-1(这不会出现于一般的刷怪箱中,现在看来这只能通过NBT标签编辑来达成),刷怪箱会重置Delay的值,且EntityID,SpawnData和SpawnPotentials(如果有)仿佛完成了一套成功的运作。值得注意的是将Delay标签设置为-1将对将游戏中某个刷怪箱的Delay、EntityID和SpawnData设置的更加自然有帮助,与预设这些值来比更好。

    •  MinSpawnDelay: 生成延迟的随机范围的下限,有可能上下限为一。

    •  MaxSpawnDelay: 生成延迟的随机范围的上限。 警告: Minecraft将会因为此值为0而崩溃,因此请至少设置为1。

    •  MaxNearbyEntities: 实体ID与刷怪箱EntityID相同的实体在刷怪箱周遭(一个以刷怪箱自身为中心的棱长一般为2×x、8、2×x为棱长的柱体区域)最大存在数量。需要注意的是这与一个生物的碰撞箱有关而不是他的实际位置。也就是任何符合的在一个区块中任何区域中的实体但凡处于这个检查区域中,检查的是他们的ID和碰撞箱;对立的,如果只检查他们是否在这个区域里,将会有很多实体没有被判断进去而导致继续生成,这将会造成不小的卡顿!

    •  RequiredPlayerRange: 刷怪箱起效所需玩家与刷怪箱之间的最近距离(或最小球体区域),需要注意的是刷怪箱将会在每一个红石检查当前世界(意味着地狱末地主世界是分开的)是否有玩家进入该范围。

    •  MaxExperience (已移除): 未知作用。

    •  RemainingExperience (已移除): 未知作用。

    •  ExperienceRegenTick (已移除): 未知作用。

    •  ExperienceRegenRate (已移除): 未知作用。

    •  ExperienceRegenAmount (已移除): 未知作用。



  • 音乐盒 有这些额外的字段:

    •  note: 音高 (右键音乐盒时的数字)。

  • 活塞 有这些额外的字段:

    •  blockId: 被移动的方块的ID。

    •  blockData: 被移动的方块的数据值

    •  facing: 推动方块那一面面向的方向。

    •  progress: 方块被移动的距离。

    •  extending: 1 或者 0 (true/false) - 如果方块正在被推则填true.

  • 唱片机 有这些额外的字段:

    •  Record: 正在播放的唱片。0代表唱片机中没有唱片。否则,它就是唱片的物品ID(比如2261代表唱片“mall”)。使用其他的ID可以让其他的物品或方块以数据值为0的形式弹出。这个值总是被RecordItem中的ID覆盖。

    •  RecordItem: 物品,没有Slot标签。

  • 告示牌 有这些额外的字段:

    •  Text1: 第一行文字。这里必须是将JSON代码转化为字符串,而不是直接的JSON文本。例如:Text1:"{color:red,text:\"hello\"}"而不是Text1:{color:red,text:"hello"}。复杂一点,Text1:"[{color:red,text:\"hello, \"},{color:blue,bold:true,selector:\"@a\"}]"

    •  Text2: 第二行文字。

    •  Text3: 第三行文字。

    •  Text4: 第四行文字。

每一行只有前十六个字符可以被读取,其他则会被忽略。


  • 头颅 有这些额外的字段:


  • 发射器投掷器 有这些额外的字段:

  • 结构方块有这些额外的字段:

    •  name: 该结构的名称。

    •  author: 该结构的作者,正常的结构会用"?"来标记。

    •  metadata: 该结构的自定义数据;似乎没有使用。

    •  posX: 结构起始X坐标 (?)

    •  posY: 结构起始Y坐标 (?)

    •  posZ: 结构起始Z坐标 (?)

    •  sizeX: 该结构在X方向上的大小,即结构的长度

    •  sizeY: 该结构在Y方向上的大小,即结构的高度

    •  sizeZ: 该结构在Z方向上的大小,即结构的宽度

    •  rotation: 结构的旋转角度。只会是“NONE(无)”,“CLOCKWISE_90(顺时针旋转90°)”,“CLOCKWISE_180(顺时针旋转180°)”或“COUNTERCLOCKWISE_90(逆时针旋转90°)”中的一个。

    •  mirror: 结构产生镜像的方法。只会是"NONE(无)", "LEFT_RIGHT(左/右)", 或 "FRONT_BACK(前/后)"中的一个。

    •  mode: 该结构方块当前的模式。只会是"SAVE(保存)", "LOAD(加载)", "CORNER(角落)", 或 "DATA(数据)"中的一个。

    •  ignoreEntities: 1 或 0 (是/否): 用于确定在该结构中的实体是否会被忽略。

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

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


  • 一个附加刻

    •  i: 方块的ID;确保在更新时不会有问题。

    •  t: 用于处理多少刻后发生的事情,负数或许会使它过期。

    •  p: 用于说明在区块加载时的加载顺序,p越小越先加载(默认为0)

    •  x: X 坐标

    •  y: Y 坐标

    •  z: Z 坐标

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

Chunks were first introduced in Minecraft Infdev. Before the addition of the MCRegion format in Beta 1.3, chunks were stored as individual chunk files ".dat" where the file names contained the chunk's position encoded in Base36 - this is known as the Alpha level format. MCRegion changed this by storing groups of 32×32 chunks in individual ".mcr" files with the coordinates in Base10, with the goal being to reduce disk usage by cutting down on the number of file handles Minecraft had open at once. MCRegion's successor is the current format, Anvil, which only made changes to the chunk format. The region file technique is still used, but the region file extensions are ".mca" instead.

The major change from MCRegion to Anvil was the division of Chunks into Sections; each chunk has up to 16 individual 16×16×16 block Sections so that completely empty sections will not be saved at all. Preparation has also been made to support blocks with IDs in the range 0 to 4095, as compared to the previous 0 to 255 limitation. However, Minecraft is not fully prepared for such blocks to exist as items; many item IDs are already taken in the range 256 to 4095.

The Blocks, Data, BlockLight, and SkyLight arrays are now housed in individual chunk Sections. The Data, SkyLight, and BlockLight are arrays of 4-bit values, and the BlockLight and SkyLight arrays no longer house part of the block ID. The Blocks array is 8 bits per block, and the 4096-blocks support exists in the form of an optional Add byte array of 4-bits per block for additional block ID information. With the Anvil format, the NBT Format was changed from Notch's original specification to include an integer array tag similar to the existing byte array tag. It is currently only used for HeightMap information in chunks.

正式版本
? MobSpawner中移除了MaxExperience, RemainingExperience, ExperienceRegenTick, ExperienceRegenRateExperienceRegenAmount
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
Item IDs are no longer used when specifying NBT data.
FallingSand加入Block, using the alphabetical ID format.
14w06a 为所有实体加入了ShowParticles
为所有物品实体加入了PickupDelay
Setting Age to -32768 makes items which never expire.
为所有生物移除了AttackTime
14w10a Villager加入了rewardExp
为所有可以饲养的生物加入了OwnerUUID
Skull加入了Owner
Changes to item frames and paintings: 加入了Facing, TileX, TileYTileZ now represent the co-ordinates of the block the item is in rather than what it is placed on, deprecated Direction and Dir.
14w11a 加入实体Endermite.
Enderman加入了EndermiteCount
14w21a 现在所有实体都有了CustomNameCustomNameVisible
14w25a 加入实体Guardian.
为告示牌加入了Text1, Text2, Text3Text4。 The limit no longer depends on the amount of characters (16), it now depends on the width of the characters.
14w27a 加入实体Rabbit. 为命令方块告示牌加入了CommandStats
14w28a Enderman移除了EndermiteCount
14w30a 为所有实体加入了Silent
14w32a 为所有生物加入了NoAI
加入实体ArmorStand.
14w32c ArmorStand加入了NoBasePlate
1.9 15w31a Living加入了标签HandItems, ArmorItems, HandDropChancesArmorDropChances, 它们取代了DropChancesEquipment标签。
ArmorStand加入了HandItemsArmorItems
Entity加入了Glowing
LivingBase加入了Team
EnderDragon加入了DragonPhase
加入实体Shulker, child of SnowMan.
加入实体ShulkerBullet, child of Entity.
加入实体DragonFireball, which extends FireballBase and has no unique tags.
加入实体TippedArrowSpectralArrow, children of Arrow.
加入方块EndGateway, child of TileEntity.
15w32a Tags and DataVersion tag can now be applied on entities.
Changed the Fuse tag's type for the PrimedTnt entity from "Byte" to "Short".
15w32c Introduced a limit on the amount of tags an entity can have (1024 tags). When surpassed it displays an error saying: "Cannot add more than 1024 tags to an entity."
15w33a 加入实体AreaEffectCloud, child of Entity.
EndGateway加入ExactTeleport并且重命名LifeAge
ThrownPotion加入了Linger
Removed DataVersion from Entity. It is now only applied to Player only, child of LivingBase.
Removed UUID from Entity.
HealF under LivingBase has become deprecated.
Health under LivingBase has changed from type "Short" to "Float".
Equipment removed from ArmorStand and Living entity, its usage replaced by HandItems and ArmorItems which were added earlier.
15w33c 加入 BeamTarget to EnderCrystal.
15w34a 加入 powered and conditional byte tags to Control tile entity for command blocks.
加入 life and power to FireballBase.
加入 id inside SpawnData to MobSpawner.
加入 powered to the Music tile entity for note blocks.
15w35a 加入 VillagerProfession to Zombie.
15w37a 加入 Enabled to MinecartHopper.
15w38a 加入 SkeletonTrap and SkeletonTrapTime to EntityHorse.
15w41a Replaced Riding with Passengers for all entities.
加入 RootVehicle for all passengers.
加入 Type to Boat.
15w42a 加入 Fuel to Cauldron (brewing stands).
15w43a 加入 LootTable and LootTableSeed to Chest, Minecart and MinecartHopper.
加入 DeathLootTable and DeathLootTableSeed to all mobs.
加入 life and power to all fireballs (FireballBase).
15w44a 加入 ShowBottom to EnderCrystal.
15w44b 加入 Potion and CustomPotionEffects to Arrow.
加入 Potion to AreaEffectCloud.
15w45a Removed Linger from ThrownPotion. Instead, the potion will linger if the stored item has an ID of minecraft:lingering_potion.
ThrownPotion will now render as its stored item even if the item is not a potion.
15w46a MoreCarrotTicks from Rabbit is now set to 40 when rabbits eat a carrot crop, but is not used anyway.
15w47a 加入 PaymentItem to Beacon.
15w49a Removed PaymentItem from Beacon.
In order for a sign to accept text, all 4 tags ("Text1", "Text2", "Text3", and "Text4") must exist.
15w51b The original values of DisabledSlots in ArmorStand have changed in nature.
1.10 16w20a 加入实体 PolarBear.
加入 ZombieTypeZombie,并且重命名 VillagerProfessionIsVillager. Value of 6 indicates the "husk" zombie.
一个值为2的SkeletonType 指向单独的骷髅。
NoGravity 扩展到所有的实体。
加入 powered, showboundingbox and showair to Structure.
16w21a 加入 FallFlying 到怪物和武器选项
加入 integrityseedStructure.
1.10-pre1 加入 ParticleParam1ParticleParam2AreaEffectCloud.
1.11 16w32a 马按它们各自的类型被分成如下实体ID:horse, donkey, mule, skeleton_horse以及zombie_horse 。从horse中移除了TypeHasReproduced, ChestedHorseItems 标签 已经仅仅适用于muledonkey, 并且 SkeletonTrapSkeletonTrapTime 也只适用于skeleton_horse.
骷髅被分成了如下实体ID: skeleton, stray 以及 wither_skeleton。从骷髅中删除了所有的SkeletonType 标签.
僵尸被分成了如下实体IDzombiezombie_villager以及 husk。从僵尸类型中移除了所有的ZombieType标签, ConversionTime 标签和Profession tags now apply only to zombie_villager.
保卫者被分为了如下的实体IDguardianelder_guardian。从 guardian中移除了Elder .
没有被使用的游戏保存ID MobMonster被移除.
Pumpkin 字节标签被加入到snowman.
16w35a CustomName to banner.
16w39a 加入 llamallama_spit, vindication_illagervexevocation_fangsevocation_illager.
加入 Colorshulker
加入 LocNameCustomPotionColor 以及 ColorMap 到 items.
16w40a 加入 Johnnyvindication_illager.
从火焰弹基础类(Java)(恶魂的火焰弹、烈焰人的火焰弹、末影龙的魔法弹和凋灵的弹射物)中删除了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

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