这到底是怎么一回事呢?
实际上还有更有趣的。
如果你在这个不断振动的钻石块的位置上放置一个钻石块。如果下面是空的,你就会发现:
本小章还未完,请点击下一页继续阅读后面精彩内容!
你放置的这个钻石块给这个在不断振动的钻石块给震掉下来了!
还可以更奇葩吗?
可以!
如果下面有方块,你还放的话,你就会发现:
你放置的这个钻石块给这个在不断振动的钻石块给感染了!成了钻石块下落,每到地面就重新下落,直到下面被打掉!(建议可以的亲自去做一下这个实验)
为什么会成这个样子呢?
因为Time没填,默认为0。
Time(Int整形):该下落的方块已存在的刻数,不设置默认为0。如为0,则:
当Time从0变为1时,如该实体的位置上的方块与其存储的方块一致,则继续下落,并删除该方块。不一致,则删除该实体。(这应该就是方块开始下落时游戏的替换原理)
如不为0,当Time值大于600(30秒)或Time值大于100(5秒)时超出建筑限制(y大于255或小于0),就变为掉落物。
所以,为了让这个钻石块能够快快乐乐地下落,我们就需要:
/summon minecraft:falling_block ~~~{BlockState:{Name:“minecraft:diamond_block“},Time:1}
然后你就会发现:
钻石块竟然不浮空了,而是成功掉了下来!
(The strange laughter in Newton's coffin frightened the tourists around him.
——British Broadcast Corporation report)
BlockState和Time这两个标签是必填项。除此之外,还有一些非必填项:
TileEntityData(复合标签):该实体存储的方块的方块实体标签
DropItem(Byte字节型:1或0[true|false]):该实体被破坏后是否掉落其方块的物品形式。为1时掉落,但如果其方块没有对应的物品则仍然不会有物品掉落。
HurtEntities(Byte字节型:1或0[true|false]):该实体掉落时碰到其他实体是否对其造成伤害。为1时造成。
FallHurtMax(Int整形):被砸中的实体所承受的伤害上限。一般的方块默认为40滴血(20?)
FallHurtAmount(Float单精度浮点型):给被砸中的实体造成的伤害=FallDistance(当前实体已经坠落的距离)×FallHurtAmount(该标签)。一般的方块默认为2。
举个例子,比如你召唤一个下落的水方块(???):
/summon minecraft:falling_block ~~~{BlockState:{Name:“minecraft:water“},Time:1,DropItem:0,HurtEntities:1,FallHurtMax:150,FallHurtAmount:1.1}
召唤后,你会发现你看不到下落的水方块。唯一能体现它存在的只有在它落地变为方块之后。
而如果你从25米高空扔下一个这样的下落水方块,假设下面有一个正在整理物品的有20滴血的玩家。几秒后,他就会原地去世,同时原地会凭空出现一摊水(忽然发现这可以做一些有趣的东西,因为这就像一个活生生的人其体内除了水其他物质都突然凭空消失的样子)。
而他受到了多少伤害呢?
根据“给被砸中的实体造成的伤害=FallDistance×FallHurtAmount”这个公式,我们可以轻易得出:
给被砸中的实体造成的伤害=25×1.1=27.5(13.25?)
怪不得这名玩家会原地去世。
(TileEntityData这个标签等我以后讲方块时候再来了解)
——第三节:下落的方块的神奇用途
下落的方块有许多有趣的用途。
在第一百一十二章到第一百一十三章,我们了解了实体的通用标签。在此之中,有这么几个标签和下落的方块配合时会表现得很好:
NoGravity(Byte字节型):控制实体是否掉落
Motion(列表):记录实体在dX、dY、dZ三个轴的速度
上面我们搞出来一个神奇的不断在空中振动的没有碰撞箱的钻石块。那我们可以弄出一个静止在空中的可以穿过去的钻石块吗?
可以!