1 物品、方块与实体
方块我们都很熟悉。它们总是和坐标格子对齐,而且永远不可能有两个方块占据同一个位置。而实体却可以具有坐标不为整数的位置,也可以重叠在一起。
实体除了生物以外,还有交通工具、掉落沙、掉落物、经验球、药水云、激活的tnt、火球、水晶等等能与别的东西互动的物件都是属于实体。然而也有不少方块以外不属于实体的: 粒子效果、栓绳(绳结与被绑住的生物之间那段)、光束等等。一般来说就是视乎该物件是否方块以及能够与别的物件互动来决定那物件是不是实体,然而这定义很模糊,我们大部分时候会直接看表来记下所有的实体。实体列表: http://minecraft.gamepedia.com/Entity#Types_of_entities 。注意: 该页面里实体的定义是不准确的,因为很多实体是可以做到不符合该标准的。
每个方块都有两个参数。它的id和它的元数据值。Mojang正在努力在代码中使用方块状态来代替元数据值,但是除了结构方块文件,在存档中仍然使用元数据值。
Mojang也正在努力使用新式的文字id来代替数字id。
实体比方块的数据复杂得多,它们可以有很多的不同用途不同种类的数据。它们的坐标也可以不为整数。虽然实体种类很多,它们的数据上会有很多差异,但是,只要它会被保存到存档里,它就具有种类,位置和唯一标识码(UUID)。所有的生物(包括玩家)都属于实体。
有些方块需要更多的数据,或者为了一些其他的用途,使用了方块实体这一概念。这些方块借用了实体的能力和保存数据的方式,仿佛在这个方块的位置有一个类似实体的东西。
游戏中还有着许多的物品。物品不能脱离实体或者方块实体存在。比如物品可以在玩家或者箱子的物品栏里。掉落物也可以看成一个只有一个物品栏的实体。物品总是有着它的id,个数,损害值和其他数据。如果这个物品所在的物品栏和许多个物品栏并列在一起,这个物品还会有它所在的格子编号。就像住在楼房里的人不只要记住自己在哪个楼,还要记住他自己的门牌号一样。
大多数方块有其对应的物品形式。部分方块缺乏与其对应的物品形式。也有些方块貌似存在着与其对应的物品,然而这物品和他的id不一致。这使得这些没有与其id一致的对应物品方块的掉落沙自动破坏时无法产生物品。
应当区分方块和物品。这在命令方块的使用中很重要。
比如末影人携带的、自定义矿车显示的、掉落沙代表的是方块,但是僵尸等生物手里拿着的、盔甲架头上顶着的、飞行的烟花火箭、掷出的药水瓶记载产生他的物品都是物品。所以无法在盔甲架模型中使用点亮的红石灯,方形的蛋糕。但却可以让末影人手持点亮的红石灯(或者方形蛋糕)。
1.1 方块更新、随机方块更新
方块自己不会自发产生什么变化。为了让方块能够对外界的影响有所回应,方块有着名为方块更新的机制。
也就是说当一个方块发生某些变化时,会提醒他周围的方块检查自己的状态,需不需要产生变化(或者做什么事)。大多数的方块变化只会更新和他有公共面的方块。红石和铁轨类的方块通常会更新更大的范围内的方块。
农作物的生长是随机的。游戏会在每个游戏刻内在每个玩家附近区段(详见区块与区段)内随机选择一个方块[游戏规则指出]次。大多数方块会无视这个更新。但是对于某些方块(比如树苗,仙人掌,作物,水流等),他们会为此作出反应。
有些方块在某些时候会建立一个计时器,提醒自己在一段时间后发生变化。比如红石中继器,会在发现自己后方是被充能的方块时建立计划刻。计划刻的延迟到了后,中继器点亮。同样使用计划刻的方块还有红石火把,火,命令方块,水流等。
1.2 生物、实体机制
1.2.1 生物的自然消失
一些生物(怪物, 蝙蝠, 乌贼, 豹, 狼)在远离玩家后可能会消失。资料如下:
- 超过30秒32格内没有玩家的话, 每游戏刻有1/800的几率消失
- 128格内没有玩家
- 多人模式的情况下, 如果服务器内没有玩家, 则不会消失
- 被命名了, 或者捡起了物品/装备, 则不会消失
- 僵尸骑士的小鸡会消失(而不是好像普通的鸡一样不会消失)
1.2.2 实体卸载
实体会随着区块卸载(选择器也不能选择到), 如果玩家距离实体过远那实体也不会活动。
然而如果把实体传送到被卸载的区域, 短时间内不会被卸载(十秒内应该是不会卸载的)。
然而需要注意的是, 虽然实体能传送到被卸载的区域, 方块是不能够放置到那些区域的。
1.3 物品损害值(damage/data value)
物品的损害值最初用于记录工具的磨损程度,但已经被用于干各种其他的事(比如羊毛颜色,铁砧耐久等)。它的理论允许范围是-32,768至32,767,和方块的元数据值(范围是0至15)并不一定是一一对应关系。应当区分这两个概念,即使有时候他们的任务一致。因为不一致的情况比比皆是。比如头颅物品(和头颅方块的id不同)的损害值代表头颅的种类。头颅方块的元数据值用于(部分)确定头颅的朝向。(头颅方块的种类由方块实体值记录)。铁砧物品(和铁砧方块的id相同)如果损害值为2说明它已被严重损坏,但铁砧方块的元数据值为2表明它仍是崭新的。火把、活塞的物品并不区分损害值,但是放到地上时的方向却让他的方块需要元数据来记录。
1.4 方块数据值data value 及 方块状态 block states
不是所有方块都有自己的id的, 比如楼梯的不同方向是没有id的, 而是通过方块数据值(之前的版本)或者是方块状态(1.11开始)储存的。
值得注意的是, 方块数据值和物品损害值未必是一样的。比如说铁砧的物品损害值和其方块数据值是不同的。
查询方块数据值: http://minecraft.gamepedia.com/Data_values
由于方块数据值有其限制(0-15), 能储存的东西有限, 因此Mojang加入了方块状态。
透过方块状态, 我们可以定义一些数据值无法定义的东西。
在命令中, 方块状态的写法如下: key1=value1,key2=value2...
, 如varient=stone,half=top
查询方块状态: http://minecraft.gamepedia.com/Block_states