减少多液体鱼池(水、熔岩、蜂蜜)的体积及工作量,同时简要研究对多液体判定方法,加深对液体的认知。
1.简化版多液体鱼池演示(主体是左半部分,大量的水只是为了满足海洋渔获,如果不需要海洋渔获则只需要300任意有效液体):
2.原理
1)液体反应、液体"等级"
一般情况下,不同液体位于相邻图格时会发生反应,生成相应固体方块(黑曜石、松脆蜂蜜块)。
但是,如果本应该生成固体的位置存在无法被液体/液体反应的[背景物体(如钱币、大部分虚化物块、部分绳子、收纳型家具等)],那么固体不会生成,此时按液体等级判断(熔岩最高,蜂蜜其次,水最低):
①高等级液体流向低等级液体,二者共存;
②低等级液体流向高等级液体,低等级液体蒸发,高等级液体不变;
(举个例子:一层熔岩,在熔岩所在图格放置铜币,此时在熔岩上方倒水,水会蒸发,熔岩毫发无损)
*③无泡泡块的情况下,一般无法使低等级液体保持在高等级液体上方一格;
2)液体种类判断方法
*(1)首先明确,同种上/下/左/右能够互相连通的液体构成一个整体,且这个整体的"深度"(用于判定的深度)取决于这个整体中最深的那部分(图为"深度"为7格的整体,且7格都是熔岩)
*(2)其次,虽然不同液体间独立判定,但是对于鱼池大小的计数来说,这三种液体功能相同(且不论渔获类型,这就是一个12格大小的鱼池)
类似于液体影响刷怪的判断方法(但与钓鱼也有许多不同),不同液体想要实现相应的功能,需要同时考虑它自身的种类,以及它下方一格的液体种类。
*(3)具体规则为:
某一格为任意液体,如果其下方一格存在某种液体,那么最终上面那格液体的钓鱼属性取决于下方那格液体的种类;
(举个例子,向一格熔岩抛竿,这格熔岩下方一格是蜂蜜,那么最终得到的是蜂蜜的渔获,此时我们称这两格构成了有效的蜂蜜,即能够正常行使蜂蜜的钓鱼属性);
{反之,如果其下方一格没有任何液体,那么无论这一格液体是什么,最终都为水的渔获,即与一格/两格的水等价,构成了有效的水(或者说没有构成有效的液体)}
对于同种液体内部来说,只有"深度"最深的那一列参与判断,如果这一列构成有效液体,这一列将赋予整体相同的有效液体属性;
[见(1)中描述,对于那张图来说,就是"深度"为7格那一列参与了判定,根据(3)的规则,此时构成了有效的熔岩,且整个液面共享这个属性]
如果这一列没有构成有效液体,那么尝试寻找外部的不同种液体。{下面的3)中有例子}
3)多液体渔获优先级、多液体判断
*液体渔获的优先级是熔岩>蜂蜜>水。
即以某种方法让液体共存,那么只会钓到优先级高液体的渔获。
但只是这样说,是很不准确的;
实际上,这个优先级指的是先找出有效的液体,再判断有效液体的优先级。
*分析这张图:
熔岩和下方一格蜂蜜构成有效的蜂蜜;
蜂蜜和下方一格水构成有效的水;
水和下方一格空气(物块中没有存放液体)构成有效的水;
按优先级判断,同时存在有效的水和有效的蜂蜜,最终整个最上方的液面共享有效的蜂蜜,即蜂蜜渔获。
4)物块对于鱼池的影响(这里不讨论泡泡块)
①平台、背景物块:无影响;
②未敲击的完整物块:
使所在格液体不计入鱼池"大小"计数、阻止等高度液面横向拓展计数列、位于鱼池内部时,取消其下方液体计数;
③敲击过的半砖类物块:
只有阻止等高度液面横向拓展计数列这一条,其他不影响;
*④井盖:允许液体在其中通过;且重进游戏不会清除其中包含的液体(这也就是为什么视频中选择了这一物块的半砖)。
5)杂项
①钓鱼水面高是离散的(一格一格变化),按小地图图格显示为准,不存在小数格水面高度;
②水面"封顶"问题同样以小地图显示为准,只要小地图上的水面高≤封顶物块下边界,就不会减少渔力。
③水池"大小"<50格无效,大小为[50,75)格时只有蜂蜜有渔获,大小≥75格时全部液体都有渔获。
没了,就这么多。