Minecraft中,已经被加载的Chunks有两种状态:Entities-processing Chunks 与 Lazy Chunks。本文将讲解受重力影响的方块在Lazy Chunks中的表现,从而用它做一些诸如修复铁砧,破坏基岩的小把戏。

Entities-processing Chunks是大家最为熟悉的Chunks类型,就是我们在Minecraft中经常看见的Chunks,这些Chunks里面实体与方块遵循它正常应该遵循的形式运动;Lazy Chunks则处于Entities-processing Chunks的边缘,其中的实体表现与前者有些不同:在Lazy Chunks里,实体活动会停止——这意味着生物会停止活动,落沙不会形成。

需要说明的是,“落沙”一词不仅仅指“掉落的沙子”,它可以指“掉落的任何方块”,用“沙”来代指全体是因为在Minecraft中有一种实体类型叫FallingSand,这种实体的nbt可以设置为任何方块来使本来不受重力影响的方块变得受重力影响(即和沙子的表现相同)。尽管FallingSand在1.11被移除并使用Falling_Blocks代替,但约定俗成的东西也不是那么容易就改的。

百度Minecraft吧的defanive在他的末地里做了一个“手动防止末地主岛刷末影人”的装置,使用一条超级长的红石线路去激活16Chunks以外的有着79只末影人的刷怪塔,使整个世界刷怪数量达到上限,使主岛不再生成末影人。这个装置是对Lazy Chunks的一次有效运用,不过本文讨论的重点不在这里,举这个例子的作用是帮助看官们记起对Lazy Chunks的了解。

Lazy Chunks对待落沙的方式与Entities-processing Chunks不同,接下来博主会讲解不同在何处。

在Entities-processing Chunks中,沙子落到地上的过程分为三个阶段:

  1. 沙子删除自身
  2. 创造一个FallingSand类型,包含原方块nbt的实体,并按照实体应该遵守和的物理规律掉落,直到碰到固体方块
  3. 碰到固体方块后,删除自身,使用自身nbt在原地创造和原来一样的方块

在Lazy Chunks中,这个过程只有两个阶段:

  1. 沙子向下探测固体方块
  2. 探测到固体方块后,删除自身,在所探测到的固体方块上创造和原来几乎一样的方块。因为没有掉落阶段,所以没有掉落动画

注意这里加粗的字,之所以说“几乎一样”,是因为后者与前者相比,少了掉落阶段,从而少了“存储nbt”这一关键因素,导致创造新方块后nbt丢失,所以游戏使用了默认的nbt代替。利用这个特性,我们可以玩这些把戏:红沙褪色、铁砧修复

Entities-processing Chunks的大小取决于游戏的可视距离(Render Distance),在Entities-processing Chunks周围两个Chunks宽的环形区域则为Lazy Chunks。

红沙的方块数据值为1,在Lazy Chunks里掉落后,数据值恢复为默认的0,变成了常见的黄沙子;

铁砧的方块数据值如表: > > * * > > 0 > > 铁砧(北/南) > > 1 > > 铁砧(东/西) > > 2 > > 铁砧(西/东) > > 3 > > 铁砧(南/北) > > 4 > > 轻微受损的铁砧 (北/南) > > 5 > > 轻微受损的铁砧 (东/西) > > 6 > > 轻微受损的铁砧 (西/东) > > 7 > > 轻微受损的铁砧 (南/北) > > 8 > > 严重受损的铁砧(北/南) > > 9 > > 严重受损的铁砧(东/西) > > 10 > > 严重受损的铁砧(西/东) > > 11 > > 严重受损的铁砧(南/北) > > * * > > 铁砧在Lazy Chunks里掉落后,数据值恢复默认的0,变成没有损伤的样子,并朝向南/北。

然而,同样作为重力方块的龙蛋和它们不同,在Lazy Chunks中的掉落方式是这样的:

可以看到龙蛋并不是在探测到的方块上创造本身,而是将探测到的方块直接替换成本身,无论那个是什么方块——这意味着用这种方法可以从上到下地破坏基岩。

在需要破坏的基岩上方做这个装置,放上龙蛋。打开设置将可视距离调到2,这样能节约时间。

按F3+G显示区块边缘,使用红石线+中继器延伸两个区块,直到这个装置正好从视野内消失。

给它一个信号,再慢慢走回去查看装置,会发现变成了这样:

可以看到龙蛋已经取代了基岩的位置,重复这个过程,就可以快速破坏基岩。 下图为三种方块在Lazy Chunks掉落后的状态

可以看到只有龙蛋替换了沙石,红沙和东西朝向的损坏的铁砧分别还原成黄沙和修复的南北朝向的铁砧。